郭慢, 錢松榮
(復(fù)旦大學(xué) 信息科學(xué)與工程學(xué)院, 上海 200433)
OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫。它提供了豐富的視覺處理算法,并且因為部分程序用C語言編寫而大幅提升了執(zhí)行速度。目前主要由12大功能模塊組成,包括核心功能模塊opencv_core、高層用戶交互模塊opencv_highgui(圖像與視頻IO)、新貢獻的模塊opencv_contrib(提供人臉識別類FaceRecognizer)等。應(yīng)用領(lǐng)域有人機互動、物體識別(包含人臉識別)、圖像分割、動作跟蹤、機器人、運動分析、機器視覺、結(jié)構(gòu)分析、汽車安全駕駛等。
人臉識別目前研究比較火熱,很多產(chǎn)品已經(jīng)問世,例如刷臉支付(支付寶等軟件)、視頻監(jiān)控(在公安系統(tǒng)中用于追查犯人)、考勤機(用于公司考勤)、消費機(在食堂中用于刷臉吃飯)、利用人臉識別辦電話卡(獲取人臉信息和身份證信息,進行匹配)。
但是目前大多數(shù)的人臉識別研究和應(yīng)用都是利用生物特征實現(xiàn)對人臉身份的甄別和確認(rèn),起到身份證的作用。 而且前提是獲取人臉信息,需要使用者主動提供個人信息,開展起來不太方便。
在電子屏廣告投放方面,目前的問題是投放的廣告到底是吸引觀眾還是一種視覺污染,所以研究廣告受眾習(xí)慣是我的一個研究方向。人工智能為廣告投放提供了一種新的解決辦法。本文具體闡述了實現(xiàn)智能廣告的系統(tǒng)框架,即在投放廣告的同時,利用人臉檢測技術(shù)獲取廣告受眾人臉信息,然后對人臉信息進行人臉識別(包括性別識別、年齡識別、人臉匹配),將所有信息入庫,然后上傳到遠端服務(wù)器,進行數(shù)據(jù)分析,根據(jù)分析結(jié)果反饋給最初投放廣告主機,針對受眾,投放受眾感興趣的廣告。其中使用了目前比較流行和成熟的技術(shù),包括人臉識別、機器學(xué)習(xí)、數(shù)據(jù)分析等。
智能廣告系統(tǒng)在整體架構(gòu)上分為多個功能模塊,主要包括廣告投放模塊、人臉采集模塊、人臉相關(guān)信息處理模塊、數(shù)據(jù)入庫以及上傳模塊、數(shù)據(jù)分析處理和展示模塊。系統(tǒng)框架圖如圖1所示。

圖1 智能廣告系統(tǒng)框架圖
廣告投放模塊,部署在連接電子屏的主機上,包括播放廣告以及記錄廣告主題和廣告時間等功能。數(shù)據(jù)入庫以及上傳模塊,將反映觀看者的人臉相關(guān)信息和觀看廣告的信息的數(shù)據(jù)一起寫入本地數(shù)據(jù)庫,同時上傳到遠端服務(wù)器的數(shù)據(jù)庫中,該模塊也部署在連接電子屏的主機上。這里觀看的廣告信息主要包括廣告主題類型,廣告內(nèi)容等信息。
接下來會單獨闡述部分模塊的功能與實現(xiàn),主要是人臉識別和數(shù)據(jù)分析。
人臉采集模塊,主要部件是攝像頭,部署在連接電子屏的主機上,包括打開攝像頭和從視頻流中獲取人臉圖像并保存在該主機上等功能。
目前實驗研究使用筆記本電腦自帶的攝像頭。獲取人臉圖像,主要通過人臉檢測技術(shù),用到opencv自帶的Haar分類器算法。
Haar特征值反映了圖像的灰度變化情況。又稱矩形特征,只對一些簡單的圖形結(jié)構(gòu)敏感。實驗中檢測準(zhǔn)確率在85%以上,考慮到程序啟動和開啟攝像頭時的不穩(wěn)定性,平均達到90%以上,基本滿足要求。檢測算法用到opencv自帶的函數(shù),使用Haar分類器模型,代碼如下:
//加載Haar分類器模型
faceCascade.load(faceCascadeFilename);
//設(shè)置檢測相關(guān)參數(shù),如每次檢測時返回最大的人臉,運行檢測函數(shù)
faceCascade.detectMultiScale(dectImg, faces, searchScaleFactor,
minNeighbors, flags, minFeatureSize);
而計算檢測準(zhǔn)確率的方法為調(diào)整攝像頭下的人臉狀態(tài)(不同人的人臉,正面人臉、側(cè)面人臉等),統(tǒng)計一定時間內(nèi)獲取的圖像數(shù)和檢測的人臉數(shù),檢測正確數(shù)量,考慮人臉沒有檢測出來和把其他物體檢測為人臉兩種情況。
按數(shù)字保存檢測出的人臉灰度圖像以及MFC窗口實現(xiàn)人臉檢測的結(jié)果,如圖2所示:










圖2 人臉檢測部分結(jié)果
人臉相關(guān)信息處理模塊,這是該系統(tǒng)最核心的一個模塊。將前面獲取的人臉圖像信息進行識別處理,獲取其人臉id(識別人的身份的唯一電子證明,類似于身份證號),性別信息,年齡信息,該模塊也部署在連接電子屏的主機上。
這里會有一個人臉庫的創(chuàng)建,開始時人臉庫為空。隨著人臉采集模塊采集到人臉數(shù)據(jù)后,人臉庫中會加入不同的人臉圖像,經(jīng)過人臉識別后,如果圖像為新圖像,則會被加入人臉庫,打上新的標(biāo)簽(包括id標(biāo)簽和性別標(biāo)簽),否則不做處理。
實驗中id識別準(zhǔn)確率較低,主要原因是光照影響。算法用到了opencv的訓(xùn)練以及機器學(xué)習(xí)的預(yù)測算法。當(dāng)然基本理論依然是特征臉PCA算法,求取特征臉的權(quán)重的歐氏距離,求取為式(1)。

(1)
其中,Ω為人臉圖像的灰度值歸一化后的列向量的平均值,Ωk為第k個人臉圖像的灰度值歸一化后的列向量,ε為兩個列向量的歐氏距離,反映了圖像的相似性程度。
實驗中性別識別的準(zhǔn)確率很高,達到99%以上。算法用到了opencv的訓(xùn)練以及機器學(xué)習(xí)的預(yù)測算法,相比前面id識別的準(zhǔn)確率,性別識別的準(zhǔn)確率較高的主要原因是標(biāo)簽只有兩個(男或女),所以人臉庫的數(shù)據(jù)量也是機器學(xué)習(xí)成功的關(guān)鍵因素。
實驗中年齡識別,使用了目前比較成熟的EyeKey生物識別云服務(wù)平臺,誤差在3到5歲以內(nèi),由于我只需要統(tǒng)計年齡段范圍,所以基本滿足要求。實現(xiàn)方法為:在平臺官網(wǎng)上申請app_id和app_key,調(diào)用其Http接口,返回年齡信息。如圖3所示。
使用PCA算法遇到的問題是歐氏距離的閾值不好確定,數(shù)據(jù)量較少時,容易進行分類,但數(shù)據(jù)量較多時歐氏距離差別不太大,而且計算量成倍增加。機器學(xué)習(xí)不用考慮具體的特征向量,而是給每一個樣本圖像貼上標(biāo)簽,實現(xiàn)訓(xùn)練模型,代碼如下:

圖3 EyeKey生物識別云服務(wù)平臺的年齡性別等信息識別demo
//根據(jù)人臉特征和標(biāo)簽進行訓(xùn)練
model->train(images, labels);
最后根據(jù)訓(xùn)練模型預(yù)測人臉特征,代碼如下。
//預(yù)測人臉標(biāo)簽,獲取最接近的人臉庫中人臉
predictedLabel = model->predict(face);
大致流程圖如圖4所示。

圖4 機器學(xué)習(xí)訓(xùn)練和預(yù)測流程圖
隨著人臉庫中數(shù)據(jù)增多,訓(xùn)練樣本數(shù)量隨之增多,訓(xùn)練的人臉標(biāo)簽?zāi)P透臃€(wěn)定,可靠性高,而且不用多次訓(xùn)練,即運行時間總體較短。
數(shù)據(jù)分析處理展示模塊,根據(jù)廣告分類,確認(rèn)受眾的性別分布、年齡分布等,然后使用圖表形式直觀地展示出來。利用大數(shù)據(jù)的知識,對人群的觀看廣告的習(xí)慣進行分析,從中找出某種規(guī)律,根據(jù)規(guī)律確定播放廣告的規(guī)則。給一天內(nèi)觀看不同種類廣告的性別分布,如圖5所示。

圖5 不同種類廣告的性別分布圖
從性別角度看,女性看廣告的數(shù)量多于男性,可以得出相應(yīng)的結(jié)論:女性相比男性更喜歡看廣告。從廣告種類看,人們更喜歡看產(chǎn)品廣告和品牌廣告。當(dāng)然,這只是兩種情況,還有從時間上,從位置上可以進行一定的分析,從而實現(xiàn)廣告投放的高效,而不是廣告沒有人看,浪費資源。
目前人工智能中的智能廣告在快速發(fā)展,我們從生物特征方面獲取用戶信息進而分析用戶習(xí)慣的角度考慮智能廣告的實現(xiàn)。整個系統(tǒng)總體上包含3個部分:數(shù)據(jù)采集,數(shù)據(jù)傳輸,數(shù)據(jù)處理與展示。生物特征方面選擇了人臉,以及包含的性別和年齡信息,實現(xiàn)了數(shù)據(jù)的采集和部分處理功能。但是數(shù)據(jù)傳輸方面,即數(shù)據(jù)上傳到遠端服務(wù)器,沒有足夠的條件,所以在一臺主機上實現(xiàn),忽略了這一個模塊,但是如果需要投入生產(chǎn),則需要遠端服務(wù)器。接下來的工作是將數(shù)據(jù)入庫,并且進行分析,搭建一個數(shù)據(jù)分析平臺,綜合考慮各種因素,使系統(tǒng)具有可用性。另外算法優(yōu)化也是我下一步的工作。