張 明
(中央宣傳部電影數(shù)字節(jié)目管理中心,北京 100866)
農(nóng)村電影放映工程自2004年實施以來,一直是豐富廣大農(nóng)民群眾精神文化生活的關(guān)鍵抓手,為推進我國公共文化服務(wù)均等化下沉做出了重要貢獻。隨著技術(shù)水平不斷提升和快速發(fā)展,農(nóng)村電影放映工程的技術(shù)平臺也在不斷優(yōu)化完善中。在建立“點派接評”閉環(huán)技術(shù)管理模式中,尤為重要的一點是如何進一步獲取觀影規(guī)模等反映基層放映實際情況的有效數(shù)據(jù)。這些數(shù)據(jù)如何高效及時地獲取十分關(guān)鍵,是支撐國家及相關(guān)行政管理部門監(jiān)督管理的重要參照數(shù)據(jù)基礎(chǔ)。
城市院線放映能夠通過銷售票務(wù)的方式統(tǒng)計觀影人數(shù),為避免“偷票房”等問題的出現(xiàn),目前也有一些具有針對性的解決方案?!痘谥悄芤曨l分析的影院觀影人數(shù)準(zhǔn)確統(tǒng)計系統(tǒng)研究和實踐》提出了一種基于視頻監(jiān)控和智能視頻分析的觀影人數(shù)統(tǒng)計系統(tǒng)。該系統(tǒng)在影院的每個影廳里安裝近紅外視頻監(jiān)控系統(tǒng),視頻采集設(shè)備在電影放映過程中不斷采集觀眾區(qū)域圖像,通過一定的算法判斷影廳座位是否被占用,從而評估本場次觀影人數(shù)。技術(shù)上采用了一種基于改進Canny算子及灰度投影的座椅標(biāo)定算法,其中,算子部分采用了雙邊濾波,對比傳統(tǒng)的二維高斯濾波,雙邊濾波的好處是在保留了濾波效果的同時也保留了其高頻部分,即圖片的細(xì)節(jié)。在Canny算子檢測邊緣的基礎(chǔ)上,《一種基于Hough變換的紅外圖像座椅定位方法》一文提出另外一種座椅定位方法。從整體圖像上看,影院的座椅排列形狀可以擬合成某種曲線方程,經(jīng)過Hough變換檢測出每排座椅后,選取每排座椅形成一維數(shù)組,將該數(shù)組進行傅里葉變換。然后采用差分的方法找到跳變沿,從而確定影院座椅兩側(cè)邊緣。此方法使用座椅的空間分布規(guī)律和單個座椅的形狀特性,有效地提高了紅外圖像中對比度差、邊緣模糊等識別命中率的問題,驗證了Hough變換較強的抗干擾性和魯棒性。《基于SNMP 的影院觀影人數(shù)清點系統(tǒng)》則未采用影廳內(nèi)采集信息進行計算的方式,而是將攝像頭安裝在出入口。采集到的視頻數(shù)據(jù)經(jīng)過動態(tài)白平衡、降噪等簡單的視頻預(yù)處理后,一方面作為boost級聯(lián)分類器輸入,另一方面作為樣本訓(xùn)練的輸入。boost級聯(lián)分類器等多種機器學(xué)習(xí)算法,能動態(tài)地學(xué)習(xí)人體頭部與肩部正上方或斜上方(人體頭肩圖像)的二維圖像特征,并通過遠(yuǎn)程平臺動態(tài)地更新視覺識別庫,不斷提高識別的準(zhǔn)確率。級聯(lián)分類器從每一幀的視頻中識別出人體頭肩圖像,生成識別結(jié)果后經(jīng)過形狀判定與運動檢測輸出人流數(shù)據(jù)。
相比于城市影院,農(nóng)村電影放映觀影人數(shù)存在一定的不確定性:農(nóng)村電影放映是國家公益性文化活動,并無售票環(huán)節(jié),因此沒有業(yè)務(wù)環(huán)節(jié)可直接進行人數(shù)統(tǒng)計。目前主要通過放映員填報現(xiàn)場觀影人數(shù)、觀眾填寫問卷調(diào)查、第三方調(diào)查等方式進行觀影人數(shù)的監(jiān)測,許多地區(qū)要求放映員每場放映拍攝現(xiàn)場照片,管理人員查看照片人工點人數(shù)作為人次抽查或復(fù)核的依據(jù),為掌握觀影人數(shù)情況提供了一定支撐。但這些方式均帶來一定的工作量,增加了人工成本??紤]到觀影場地是開放的,并不具備通過檢測座位是否占用的形式統(tǒng)計人數(shù);觀影時間是自由的,觀眾的流動性比較大,觀影過程中的人數(shù)也會出現(xiàn)反復(fù)波動,以上方式也難以有效統(tǒng)計觀影人數(shù)隨時間變化的情況。
為提高觀影人數(shù)統(tǒng)計的效率,本文引入一種YOLO 目標(biāo)檢測技術(shù),對放映員拍攝的現(xiàn)場照片進行人群數(shù)量檢測,探索通過這一方式建立流動放映觀影人數(shù)自動化檢測的技術(shù)模型。
目標(biāo)檢測 (Object Detection),也叫目標(biāo)提取,是一種基于目標(biāo)幾何和統(tǒng)計特征的圖像分割與統(tǒng)計技術(shù),其可以看成圖像分類與定位的結(jié)合。給定一張圖片或者一段視頻,目標(biāo)檢測系統(tǒng)要能夠識別出圖片的目標(biāo)并給出其位置。已有的研究表明,可靠的目標(biāo)檢測算法是實現(xiàn)對復(fù)雜場景進行自動分析與理解的基礎(chǔ)。因此,圖像目標(biāo)檢測是計算機視覺領(lǐng)域的基礎(chǔ)任務(wù),其性能的好壞會直接影響后續(xù)的目標(biāo)跟蹤、動作識別、行為理解等中高層任務(wù)的性能,進而決定了人臉檢測、行為描述、交通場景物體識別、基于內(nèi)容的互聯(lián)網(wǎng)圖像檢索等后續(xù)AI應(yīng)用的性能。
目標(biāo)檢測領(lǐng)域的研究最早可以追溯到1991年提出的人臉檢測算法,近幾年來,隨著計算機硬件不斷提升、深度學(xué)習(xí)技術(shù)的發(fā)展與各種高質(zhì)量的目標(biāo)檢測數(shù)據(jù)集的提出,涌現(xiàn)出越來越多優(yōu)秀的目標(biāo)檢測算法。目標(biāo)檢測算法的發(fā)展大致分為兩個階段:第一階段集中在2000年前后,這期間所提出的方法大多基于滑動窗口和人工特征提取,普遍存在計算復(fù)雜度高和在復(fù)雜場景下魯棒性差的缺陷。為了使算法能夠滿足實際需要,研究者們不得不尋找更加精巧的計算方法對模型進行加速,同時設(shè)計更加多元化的檢測算法以彌補手工特征表達能力上的缺陷。第二階段是2014年至今,利用深度學(xué)習(xí)技術(shù)自動的抽取輸入圖像中的隱藏特征,從而對樣本進行更高精度的分類和預(yù)測。比較流行的算法可以分為兩類,一是“兩步走(Two-stage)”的目標(biāo)檢測:先在獨立的網(wǎng)絡(luò)分支上生成候選區(qū),再對候選區(qū)進行分類和回歸,代表算法有R-CNN、SPP-net、Fast R-CNN、Faster R-CNN 等;另一類是采用一個網(wǎng)絡(luò)一步到位,即僅使用一個卷積神經(jīng)網(wǎng)絡(luò) (簡稱CNN)直接檢測出目標(biāo)物體的類別與位置,代表算法有SSD、YOLO 等。本文選擇YOLO 算法進行觀影人群的檢測。相比傳統(tǒng)的目標(biāo)檢測算法,基于深度學(xué)習(xí)的目標(biāo)檢測算法速度快、準(zhǔn)確性強,還具有在復(fù)雜條件下魯棒性強的優(yōu)勢(圖1)。
圖1 兩類目標(biāo)檢測算法
簡要來講,目前有四種方法來實現(xiàn)人群計數(shù),這四種方法也是逐級演進的:
(1)檢測器:用一個移動窗口檢測器來識別圖像中的人,并計算出數(shù)量。這種方法比較適合于人臉檢測,而在人群擁擠或者遮擋過多的場景中效果不佳。
(2)回歸方法:使用滑動窗口檢測器效率較低,而且并不十分有效??梢钥紤]采用基于回歸的算法:首先從圖片中裁剪補丁,然后再針對每個補丁提取低級別的特征。
(3)基于密度估計的方法:此方法主要分兩個步驟:第一步是先提取低級的特征,比如邊緣特征、前景特征、紋理和梯度特征等;第二步是學(xué)習(xí)一個回歸模型,例如高斯過程回歸、線性回歸等,最終獲得一個低級特征到人群數(shù)的映射關(guān)系。
(4)基于CNN 的方法:使用CNN 構(gòu)建一個“端到端”的回歸模型,待檢測的圖片經(jīng)過此模型后直接輸出結(jié)果。CNN 是目前比較流行的檢測算法,其在回歸或分類任務(wù)中效果顯著,YOLO 就是利用的此種檢測原理。
YOLO (You Only Look Once)是一種基于深度神經(jīng)網(wǎng)絡(luò)的對象識別和定位算法,之前的物體檢測方法均是基于先產(chǎn)生候選區(qū)再檢測的方法,雖然有相對較高的檢測準(zhǔn)確率,但運行速度較慢。YOLO 創(chuàng)造性的將物體檢測任務(wù)直接當(dāng)作回歸問題來處理,根據(jù)它的英文名字就可得知:只需看一眼,就知道待檢測目標(biāo)是否存在以及它的位置。YOLO將識別與定位合二為一,具有體積小、檢測速度快、準(zhǔn)確度高等優(yōu)點,在目標(biāo)檢測領(lǐng)域得到了廣泛的應(yīng)用,目前YOLO 已發(fā)展到了v5版本。
YOLOv1于2015 年提出。YOLOv1 將輸入的圖片劃分成7×7=49個網(wǎng)格,每個網(wǎng)格預(yù)測出2個邊界框,最終獲得98個邊界框。由于網(wǎng)格設(shè)置比較稀疏,且每個網(wǎng)格只預(yù)測2個邊界框,其總體預(yù)測精度不高,對小物體的檢測效果較差。
YOLOv1的優(yōu)點是檢測速度快,缺點是定位方面不夠準(zhǔn)確,并且召回率較低。2016 年提出的YOLOv2提出了幾種改進策略,在v1 的基礎(chǔ)上提升了定位準(zhǔn)確度,改善召回率并能有效提高模型的m AP (Mean Average Precision,平均精度均值)。
YOLOv3的模型進行了更加復(fù)雜的設(shè)計,能夠通過改變模型結(jié)構(gòu)的大小來權(quán)衡速度與精度。其中有兩個值得一提的亮點,一個是使用殘差模型,進一步加深了網(wǎng)絡(luò)結(jié)構(gòu);另一個亮點是借鑒了FPN(Feature Pyramid Networks,多尺度特征檢測)的思想,在不同尺度提取的特征圖上獨立進行檢測。
2020年2月YOLO 之父Joseph Redmon宣布退出計算機視覺研究領(lǐng)域。2020年4月23日,Alexey Bochkovskiy 發(fā)表了一篇名為YOLOv4:Optimal Speed and Accuracy of Object Detection的文章。v4在原有基礎(chǔ)上采用了很多優(yōu)化策略,例如在數(shù)據(jù)處理、主干網(wǎng)絡(luò)、網(wǎng)絡(luò)訓(xùn)練、激活函數(shù)、損失函數(shù)等方面都有不同程度的優(yōu)化。v4在COCO 數(shù)據(jù)集上的AP (Average Precision,平均精度)和FPS(Frames Per Second,每秒傳輸幀數(shù))分別提高了10%和12%,并得到了Joseph Redmon的官方認(rèn)可。
同年6 月25 日,Ultralytics發(fā)布了YOLOv5的第一個正式版本,盡管v5的開發(fā)者沒有明確地將其與v4進行比較,但開發(fā)者在報告中稱v5能在Tesla P100上實現(xiàn)140 FPS 的快速檢測;相較而言v4的基準(zhǔn)結(jié)果是在50 FPS 速度下得到的,但是v5的大小僅有27 MB,對比使用darknet架構(gòu)的v4有244 MB。這說明v5在保持了準(zhǔn)確度的水平上,比v4小近90%,并且有著非??斓倪\算速度。
回顧YOLO 系列的發(fā)展,可以看出YOLO后期沒有提出新穎的想法,但是更加重視應(yīng)用的落地(圖2)。
圖2 YOLO 的發(fā)展
目前,YOLOv5 的目標(biāo)檢測網(wǎng)絡(luò)共有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x 四個模型。
YOLOv5s是YOLOv5系列中深度最小且特征圖的寬度也最小的網(wǎng)絡(luò),其速度最快,AP 最低。其他三種網(wǎng)絡(luò)模型都是在此基礎(chǔ)上,不斷加深、加寬網(wǎng)絡(luò),AP 也不斷提升,但速度的消耗也在不斷增加(圖3,表1)。本文采取第一種網(wǎng)絡(luò)模型進行目標(biāo)檢測。
圖3 Yolov5不同網(wǎng)絡(luò)結(jié)構(gòu)性能圖 (基于COCO 數(shù)據(jù)集)
表1 Yolov5不同網(wǎng)絡(luò)結(jié)構(gòu)性能參數(shù)對比表
本實驗采用Colaboratory 平臺進行實驗,Colaboratory (簡稱“Colab”) 是由Google Research團隊開發(fā)的一種托管式Jupyter筆記本服務(wù),用戶可以通過瀏覽器編寫和執(zhí)行Python代碼,并且還能夠使用GPU 計算資源。Colab運用NVIDIA Pascal GPU 架構(gòu)提供統(tǒng)一的平臺,適用于PCLe的NVIDIA Tesla P100使混合型工作負(fù)載HPC數(shù)據(jù)中心能在節(jié)省成本的同時大幅提升吞吐量。
數(shù)據(jù)集在目標(biāo)檢測領(lǐng)域中的地位十分重要,選擇適配的數(shù)據(jù)集可以有效測試和評估算法的性能,并且能夠推動相關(guān)領(lǐng)域的研究發(fā)展。目前應(yīng)用最為廣泛的數(shù)據(jù)集有:PASCAL VOC2007、PASCAL VOC2012、微軟COCO、Image Net和OICOD等。
2005年首次發(fā)布的PASCAL VOC 數(shù)據(jù)集發(fā)展到現(xiàn)在更新了多個版本,目前流行的版本是PASCAL VOC2007和PASCAL VOC2012,其主要用于圖像分類與識別、目標(biāo)檢測任務(wù)等;微軟COCO 數(shù)據(jù)集是一種基于日常復(fù)雜場景的常見目標(biāo)數(shù)據(jù)庫,于2015年首次發(fā)布,該數(shù)據(jù)集是圖像分割領(lǐng)域最大的數(shù)據(jù)集,極大推動了該領(lǐng)域的發(fā)展,具有小目標(biāo)物體多、單幅圖片目標(biāo)多等特點;Image Net數(shù)據(jù)集于2010年發(fā)布,增加了分類和圖像的數(shù)量,提高了目標(biāo)檢測任務(wù)的訓(xùn)練和評估標(biāo)準(zhǔn)。但是正因為如此,此數(shù)據(jù)集訓(xùn)練的計算量花銷大,目標(biāo)檢測難度增加;OICOD 數(shù)據(jù)集提供了更多的類、圖像、邊界框、實例分割分支和大量的注釋過程,并且為目標(biāo)實例提供了人工確認(rèn)的標(biāo)簽,它是在Open Image V4基礎(chǔ)上提出的最大的公共使用數(shù)據(jù)集。
雖然公開的數(shù)據(jù)集功能強大,圖片豐富,并且極大地節(jié)省了素材收集與人工標(biāo)注的成本,但是基于具體的問題分析是不通用的,尤其是針對某一特定的目標(biāo)進行檢測,仍需自主收集樣本并進行針對性的標(biāo)注。本文收集了不同場景下、不同規(guī)模的人群樣本約2400張,并采用LabelImg工具進行樣本圖片手動標(biāo)注 (圖4),工具能夠自動生成配套的xml或者txt格式的標(biāo)注信息。
圖4 使用LabelImg進行圖片標(biāo)注
本實驗共使用2400張標(biāo)注圖片進行訓(xùn)練,訓(xùn)練時間花費3小時左右,訓(xùn)練后生成權(quán)重數(shù)據(jù)weights文件及訓(xùn)練日志result.csv(圖5)。
圖5 訓(xùn)練日志可視化呈現(xiàn)
這里簡介訓(xùn)練日志中幾個比較重要的指標(biāo),train表示訓(xùn)練集,val表示驗證集:
box_loss:回歸損失函數(shù)均值,越小檢測方框越準(zhǔn);
obj_loss:目標(biāo)檢測損失函數(shù)均值,越小目標(biāo)檢測越準(zhǔn);
cls_loss:標(biāo)注物體的分類準(zhǔn)確率,因本實驗中只有一種目標(biāo)分類 (head),不存在誤分類的問題,因此數(shù)值為0;
metrics/precision:精度,又稱為查準(zhǔn)率,旨在判斷在預(yù)測模型是正值的結(jié)果中預(yù)測對的比例;
metrics/recall:召回率,又稱為查全率,旨在判斷在真實值是正值的結(jié)果中預(yù)測對的比例;
metrics/m AP_0.5:用precision和recall作為兩軸作圖后圍成的面積作為AP,m 表示樣本平均值,0.5表示閾值大于0.5的平均m AP。
顯而易見,能夠精準(zhǔn)地、快速地識別并定位物體是檢測模型最基本的指標(biāo)。在實際應(yīng)用中評估目標(biāo)檢測模型的性能時,一般結(jié)合平均精確度均值m AP和檢測速度FPS 兩者來判斷。m AP 值越大,表明該模型的精度越高,檢測速度FPS則代表了目標(biāo)檢測模型的計算性能。
實驗選擇了不同場景下的放映觀影照片作為待識別目標(biāo),經(jīng)人工識別的比對結(jié)果可知,本實驗結(jié)果數(shù)量級比較準(zhǔn)確。由于照片清晰度、拍照光線、人物遮擋等問題,結(jié)果比實際數(shù)量偏低,此模型還需要進一步調(diào)整參數(shù)以及進行偏移量補償函數(shù)。
表2 實驗結(jié)果
本文通過對目標(biāo)檢測算法的分析,采用YOLOv5算法實現(xiàn)了觀影人群數(shù)量自動化檢測的實驗?zāi)P?,選取的檢測圖片實驗結(jié)果符合預(yù)期。但是基于農(nóng)村電影放映場地條件制約,可能存在著回傳照片清晰度差、觀影人群流動性、人群前后遮擋等問題,在這些場景的照片識別結(jié)果還有一定的誤差,尤其是圖片邊緣的識別性還有諸多不足。后續(xù)會加大訓(xùn)練集的復(fù)雜度及覆蓋度,通過訓(xùn)練日志進一步調(diào)優(yōu)參數(shù),并且加入偏移量補償函數(shù)等工作,以提升實驗?zāi)P偷倪m用范圍。
由于觀眾在觀影過程中會進行移動,這會導(dǎo)致不同時間點的檢測結(jié)果誤差,因此可以考慮在后續(xù)的工作中加入時間投票機制,隨機或者定時抽取圖片進行檢測,將結(jié)果進行適當(dāng)?shù)臄?shù)據(jù)清理后繪制圖表,也能對評估觀影人數(shù)的趨勢進行更為直觀的展現(xiàn)。?
①人工識別有一定的主觀性,數(shù)據(jù)存在誤差。
②檢測結(jié)果head后面的數(shù)字表示可信度,數(shù)值越大表示準(zhǔn)確率越高。