,,
(浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023)
隨著經(jīng)濟(jì)的高速發(fā)展,都市商業(yè)經(jīng)濟(jì)突顯出越來越重要的作用,其中用來刺激消費者的商業(yè)廣告也越來越被各消費品廠商所重視.根據(jù)調(diào)查顯示,消費者對于商業(yè)廣告這種推廣方式還是喜聞樂見的[1].目前商業(yè)廣告的投放形式還十分粗略,廣告展示系統(tǒng)無法根據(jù)消費者的興趣播放對應(yīng)的廣告,因此商業(yè)廣告的播放只能對消費者提供一定的幫助,起到一定的提醒作用,并不能起到預(yù)期的效果.廣告的最終目的是打動目標(biāo)消費人群,如果消費者對于信息傳遞渠道的接受度很低,信息傳遞的效果就會大打折扣,那么創(chuàng)意再好的廣告,也難以取得良好的效果.
在廣告精準(zhǔn)投放方面,李娜等[2]通過互聯(lián)網(wǎng)獲取用戶視頻節(jié)目觀看日志,并以網(wǎng)上投遞問卷的形式獲取用戶信息,再通過分析計算從而推送廣告.該方法的局限性很大,必須通過互聯(lián)網(wǎng)才能獲取用戶信息,只有累積到一定的數(shù)據(jù)才能進(jìn)行預(yù)測.通過分析過去的用戶信息來推斷當(dāng)下用戶的喜好,并不具有針對性.同時由于互聯(lián)網(wǎng)和大數(shù)據(jù)的發(fā)展,如今互聯(lián)網(wǎng)廣告的推送大多通過點擊率或者大數(shù)據(jù)分析,來獲取消費者的行為特征,從而實現(xiàn)廣告的精準(zhǔn)播放.然而,此類方法并不適用于傳統(tǒng)的廣告展示系統(tǒng).在人臉檢測方面,Jiang等[3]通過采用Faster R-CNN對人臉進(jìn)行檢測,與其他基于區(qū)域的CNN檢測模型比較,該方法能通過共享網(wǎng)絡(luò)權(quán)值實現(xiàn)端到端的直接檢測,提高了人臉檢測的精度和效率.基于此筆者提出了一種基于受眾興趣識別的智能廣告展示系統(tǒng),通過高清攝像頭采集目標(biāo)圖片,使用預(yù)先訓(xùn)練好的模型對其進(jìn)行檢測.根據(jù)人物檢測的概率值,分配不同權(quán)值進(jìn)行分值的計算和歸類,在已分類好的廣告列表中匹配與目標(biāo)人物最感興趣的廣告,從而實現(xiàn)廣告的精準(zhǔn)播放[4].
系統(tǒng)的結(jié)構(gòu)框圖如圖1所示,采用英偉達(dá)的Jetson TX1作為系統(tǒng)開發(fā)平臺,該平臺處理器包含256個英偉達(dá)CUDA核心的MaxwellTMPU、四核ARM?Cortex?-A57 MP core處理器和4GB LPDDR4顯存,還具有HDMI,CSI和I2C等豐富的外設(shè)接口.
圖1 智能廣告展示系統(tǒng)結(jié)構(gòu)框圖Fig.1 Intelligent advertising display system block diagram
本系統(tǒng)主要分為采集模塊、識別分類模塊、視頻廣告匹配模塊和播放模塊4大模塊.采集模塊主要通過高清攝像頭采集目標(biāo)圖片,用于人物對象的識別和分類;識別與分類模塊主要實現(xiàn)對目標(biāo)圖片的識別和分類,其中包括目標(biāo)圖片的人臉識別、目標(biāo)人數(shù)的統(tǒng)計、各人物性別和年齡的分類;視頻廣告匹配模塊主要是根據(jù)最終分類結(jié)果計算最終分值,在已分類好的視頻廣告列表中進(jìn)行匹配;視頻播放模塊主要任務(wù)是將匹配得到的廣告加入播放列表,并在當(dāng)前廣告結(jié)束后進(jìn)行播放.
基于受眾興趣識別的智能廣告展示系統(tǒng),軟件設(shè)計包括圖像采集軟件設(shè)計、圖像識別分類軟件設(shè)計、視頻廣告匹配軟件設(shè)計和播放器軟件設(shè)計.處理器主要加載ubuntu16.04操作系統(tǒng),進(jìn)行設(shè)備的初始化,采用共享內(nèi)存方式實現(xiàn)進(jìn)程間通信,進(jìn)行任務(wù)調(diào)度.
軟件設(shè)計的整體流程如圖2所示,通過攝像頭采集目標(biāo)圖片,對目標(biāo)圖片進(jìn)行人臉檢測并提取人臉圖像信息.分別對人臉圖像信息進(jìn)行性別和年齡的識別,根據(jù)性別和年齡識別結(jié)果進(jìn)行廣告匹配并播放最終匹配的廣告視頻.
圖2 軟件設(shè)計整體流程圖Fig.2 Flow chart of software design
本系統(tǒng)采用OV5693攝像頭,應(yīng)用層基于Gstreamer,通過nvcamerasrc插件對攝像頭進(jìn)行調(diào)用.通過該插件修改攝像頭的分辨率以及采集幀率,實現(xiàn)攝像頭ISP的初始化.具體采集模塊的軟件架構(gòu)如圖3所示.
圖3 采集模塊軟件架構(gòu)圖Fig.3 Structure diagram of acquisition module
軟件通過創(chuàng)建CameraProvider對象并獲取內(nèi)核接口,根據(jù)攝像頭的ID號,創(chuàng)建圖像的輸出流.對采集的圖像幀進(jìn)行JPEG編碼,并保存采集圖像信息[5].
識別分類軟件設(shè)計主要分為人臉的識別及人物性別和年齡識別.通過人臉識別可獲取當(dāng)前場景下目標(biāo)人物數(shù)量,并保留人臉圖像信息,再利用人臉圖像信息分別進(jìn)行年齡估計和性別的分類.
2.2.1 人臉識別算法
人臉識別是一個識別和分類的過程,從采集到的目標(biāo)圖片中識別并分類出人臉,確定其人臉的坐標(biāo)位置.筆者采用Faster R-CNN[6]對人臉進(jìn)行識別和分類,主要分為對候選對象區(qū)域進(jìn)行深度全卷積的網(wǎng)絡(luò)模塊和對候選對象區(qū)域進(jìn)行Fast R-CNN檢測模塊兩大模塊.采用RPN(Region proposal networks)在訓(xùn)練過程中提取proposal,再用Fast R-CNN進(jìn)行分類,同時RPN和Fast R-CNN之間共享卷積層.RPN的總體損失函數(shù)定義為
(1)
向量和ground-truth box的坐標(biāo)向量;Lcls,Lreg分別為分類損失函數(shù)和回歸損失函數(shù);Ncls,Nreg,λ分別為固定參數(shù).
訓(xùn)練過程步驟如圖4所示.用ImageNet模型初始化,訓(xùn)練一個RPN網(wǎng)絡(luò),并用RPN網(wǎng)絡(luò)產(chǎn)生的proposal作為輸入,訓(xùn)練一個Fast R-CNN[7]網(wǎng)絡(luò).使用Fast R-CNN網(wǎng)絡(luò)參數(shù)初始化一個新的RPN網(wǎng)絡(luò).將RPN和Fast R-CNN共享的卷積層的學(xué)習(xí)率設(shè)置為0,重新訓(xùn)練,以保證2個網(wǎng)絡(luò)共享所有公共的卷積層.固定共享網(wǎng)絡(luò)層,并加入 Fast R-CNN特有的網(wǎng)絡(luò)層,形成一個統(tǒng)一的網(wǎng)絡(luò),繼續(xù)訓(xùn)練.微調(diào) Fast R-CNN特有的網(wǎng)絡(luò)層,使其實現(xiàn)預(yù)設(shè)的目標(biāo),即網(wǎng)絡(luò)內(nèi)部預(yù)測proposal并實現(xiàn)檢測的功能.
圖4 Faster R-CNN訓(xùn)練模型圖Fig.4 Training model of Faster R-CNN
在人臉的具體識別過程中,通過訓(xùn)練得到預(yù)訓(xùn)練模型權(quán)值文件.接著加載該權(quán)值文件和Faster R-CNN網(wǎng)絡(luò)模型文件,同時加載采集模塊獲取的目標(biāo)圖片,對圖片進(jìn)行識別分類,獲取所有可能目標(biāo)的位置和得分.根據(jù)算法設(shè)定相關(guān)閾值,若對應(yīng)的得分大于設(shè)置的閾值,則認(rèn)為該區(qū)域為人臉,反之則不是.并用cv2.rectangle函數(shù)將目標(biāo)區(qū)域標(biāo)識出來[8],同時存儲人臉圖片信息,用于年齡和性別的分類.
2.2.2 性別年齡分類算法軟件設(shè)計
性別分類是一個二分類問題,即只需判別是男是女即可.對于年齡分類,由于本系統(tǒng)在實際過程中并不需要分類出精確的年齡,所以本分類算法把年齡分為多個年齡段,具體年齡段為{0~5,6~15,16~20,21~25,26~35,36~55,56~100}共7類.
本算法所設(shè)計卷積神經(jīng)網(wǎng)絡(luò)包含3個卷積層,2個全連接層和一個輸出層[9],具體結(jié)構(gòu)如圖5所示.
圖5 CNN訓(xùn)練模型圖Fig.5 Training model of CNN
卷積層用于提取圖像的特征feature map,每個卷積層都包含Relu(Rectified linear units)激活函數(shù)和Pooling層,其中Pooling層是為了減少運算量和數(shù)據(jù)維度.Relu函數(shù)定義為
f(x)=max(0,x)
(2)
卷積層1和卷積層2都含有LRN(Local response normalization)[10]層,可對輸入圖像的局部區(qū)域進(jìn)行歸一化,達(dá)到“側(cè)抑制”的效果.緊接卷積層的是2個全連接層(Fully connected layers,F(xiàn)C)[11],其中dropout層能防止過擬合,全連接層在整個卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用,將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間.
對于軟件的具體實現(xiàn)過程,加載預(yù)訓(xùn)練模型、網(wǎng)絡(luò)結(jié)構(gòu)文件和分類標(biāo)簽文件.讀取Faster R-CNN算法識別出來的人臉圖像信息,分別進(jìn)行性別和年齡的識別.計算分類結(jié)果的各分值,取最大值作為分類的結(jié)果.再用cv2.putText函數(shù)在目標(biāo)圖片中標(biāo)記對應(yīng)目標(biāo)人物的性別和年齡段.
該軟件的設(shè)計主要是為了根據(jù)最終的分類結(jié)果以及結(jié)果所對應(yīng)的概率進(jìn)行最終分值的計算,從而去已分類好的視頻廣告節(jié)目中進(jìn)行匹配.通過采集模塊采集目標(biāo)圖片,使用Faster R-CNN算法對人臉進(jìn)行識別分類.保留各目標(biāo)的人臉圖像信息,使用CNN算法對各人臉進(jìn)行性別和年齡的識別并獲得對應(yīng)的概率.對象的分值計算式為
fi=f(Pg,Pa)
(3)
式中:fi為第i個對象計算所得的分值;Pg,Pa分別為CNN在對性別和年齡進(jìn)行分類識別時所得到的概率值.
圖6 分值計算流程圖Fig.6 Flow chart of score calculation
播放器的設(shè)計是為了分類后根據(jù)不同的人群,實時播放適合該人群的廣告.播放器除了能根據(jù)分類結(jié)果實時進(jìn)行智能的廣告切換外,操作人員也能對其進(jìn)行操作,如暫停、開始、下一個廣告和上一個廣告等.由于該播放器能根據(jù)分類結(jié)果播放相應(yīng)的廣告,需要預(yù)先對存儲在SD卡中的廣告節(jié)目進(jìn)行分類.
Gstreamer是一個創(chuàng)建媒體應(yīng)用程序的框架,其主要用途是構(gòu)建媒體播放器.Gstreamer是基于插件的,具有任何符合規(guī)范的插件都可以方便插入已定義好的數(shù)據(jù)流管道的優(yōu)點.由此可以簡化媒體播放器的開發(fā)流程,提高可移植性[13].因此系統(tǒng)使用Gstreamer框架來構(gòu)建播放器,采用GTK+進(jìn)行播放器的圖形界面編程.
在軟件實現(xiàn)過程中,通過讀取廣告視頻節(jié)目信息,從平臺提供的 Gstreamer 插件中選擇需要的 Element,并創(chuàng)建Playbin.Playbin作為一個GstPipeline,能夠自動支持管道的所有特性,包括錯誤處理、標(biāo)簽支持、狀態(tài)處理、獲取流位置信息以及查詢等功能.連接各個 Element 構(gòu)造出該播放器的Playbin,通過改變Playbin的狀態(tài)對視頻進(jìn)行播放、暫停和停止等控制.播放管道示意圖如圖7所示,讀取多媒體源文件,與分路模塊進(jìn)行連接,將媒體文件的音頻和視頻信息進(jìn)行分離,分別連接到音視頻接收器,從而完成視頻的解碼和輸出[14].
圖7 播放器的軟件架構(gòu)圖Fig.7 Software architecture of the player
模型的訓(xùn)練和測試采用的是WIDER FACE數(shù)據(jù)集,選取其中10 000張作為訓(xùn)練集,1 000張作為測試集.針對1 000張測試集選取其中8張測試結(jié)果圖片為例,如圖8所示.在算法識別過程中會在圖片上對人臉的位置、性別和年齡進(jìn)行標(biāo)記.測試結(jié)果表明:人臉在無遮擋或輪廓清晰的情況下識別率較高,圖8(g,h)分別出現(xiàn)人臉遮擋和輪廓模糊都會造成漏判和誤判.
圖8 識別分類算法測試結(jié)果Fig.8 Result of the identify classification algorithms
如圖9所示,經(jīng)1 000張測試集圖片測試Faster R-CNN對人臉的識別精度為0.91,性別和年齡的識別精度分別為0.87和0.82.由圖9可知:人臉的識別率相對較高,而性別和年齡方面往往容易出現(xiàn)錯判和誤判.
圖9 識別精度圖Fig.9 Accuracy of identify
據(jù)統(tǒng)計在人臉識別算法Faster R-CNN上對每張圖片的識別時間一般在2.3~3.5 s,平均用時為2.8 s;性別識別算法CNN識別的時間一般在0.224~0.614 ms,平均用時為0.39 ms;年齡識別算法CNN識別的時間一般在16.9~46.0 ms,平均用時為25.8 ms.算法性能信息見表1.
表1 算法性能Table 1 The algorithm performance
圖10為播放器操作界面.中間部分為視頻廣告區(qū)域,底部可通過play,pause,stop和next按鍵對播放器進(jìn)行操作,同時可拖動底部的進(jìn)度條拖動視頻,右側(cè)中間則顯示識別分類后的目標(biāo)圖片,以提高人機(jī)交互.
1—播放;2—暫停;3—停止;4—下一視頻;5—廣告進(jìn)度條;6—識別結(jié)果顯示區(qū)圖10 播放器操作界面Fig.10 Operation interface of player
本系統(tǒng)在實驗室通過攝像頭采集當(dāng)前場景圖片,對其進(jìn)行功能測試,測試效果如圖11所示.圖11 (a)所示根據(jù)算法識別分類為21~25歲的男性,進(jìn)行廣告匹配后播放與男性洗面奶相關(guān)的廣告;圖11 (b)所示根據(jù)算法識別分類為6~15歲的小女孩,進(jìn)行廣告匹配后播放與兒童玩具相關(guān)的廣告;圖11 (c)所示根據(jù)算法識別分類為21~25歲的女性,進(jìn)行廣告匹配后播放與女性化妝品相關(guān)的廣告.實驗證明:在具體實現(xiàn)過程中,播放器可根據(jù)廣告匹配結(jié)果在當(dāng)前廣告播放結(jié)束后及時播放匹配廣告.
圖11 系統(tǒng)測試效果圖Fig.11 The test result of system
廣告展示系統(tǒng)在樓宇、商場、公交和超市等場合應(yīng)用廣泛,但卻未取得其真正的經(jīng)濟(jì)效益.筆者設(shè)計了一種基于受眾興趣識別的智能廣告展示系統(tǒng),采用英偉達(dá)Jetson TX1視覺計算開發(fā)平臺,先后介紹該系統(tǒng)的硬件結(jié)構(gòu)和軟件架構(gòu),提出了基于深度學(xué)習(xí)的Faster R-CNN人臉識別算法和基于CNN的性別及年齡識別算法,在訓(xùn)練過程計算識別分類精度,并在實際測試過程中獲取算法運行的時間.實驗結(jié)果表明本系統(tǒng)能夠較好地實現(xiàn)廣告的精準(zhǔn)播放.但是,算法在性別和年齡的識別過程中存在誤判和錯判,識別精度還不能滿足實際的應(yīng)用場合.為此,后續(xù)會對算法模型進(jìn)行改進(jìn),提高識別分類的精度,同時對算法進(jìn)行優(yōu)化以縮短人臉識別的時間.