朱超平,楊 藝
(1.重慶工商大學 計算機科學與信息工程學院, 重慶 400067;2.重慶市檢測控制集成系統工程重點實驗室, 重慶 400067)
人臉識別是一種非接觸式的生物識別技術,現已廣泛用于商業、安防等眾多領域。相比指紋等接觸式的識別技術,人臉識別信息的獲取渠道更為廣泛,隱蔽性更強[1-4]。
從自然背景中識別人臉分為兩步:人臉檢測與人臉識別。傳統的檢測方法很多,例如Adaboost方法、SVM方法、DPM方法[5]等,其中多尺度形變部件模型DPM效果較為突出,連續在2007年—2009年獲得VOC[6](visual object class)的檢測冠軍。之后,深度學習出現,在性能上體現出明顯的優勢,取代了傳統的檢測方法,但其在初始階段效果提升較慢。直到2014年,Ross Girshick提出R-CNN[7],深度學習在檢測方面的效果才有了顯著提升,其在VOC 2007測試集上的mAP 達到48%。Ross Girshick在2015年和2016年相繼提出Fast R-CNN[8]和Faster R-CNN[9],將VOC 2007上的mAP分別提升至70%和 73.2%。至此,Faster R-CNN的檢測效果已經較為理想,但由于其“先提取候選框,再基于候選框分類”的分步檢測策略,FPS只達到7幀/s,遠不能滿足實時需求。
針對Faster R-CNN速度太慢的問題,YOLO在其基礎上進行了一系列改進。不同于R-CNN系列將檢測問題轉化為分類問題的策略,YOLO將目標檢測問題轉化為回歸問題,在很大程度上加快了計算的速度,FPS可達到45幀/s。但由于其候選框選取尺度和比例較為單一,因此在速度提升的同時,精度卻有所下降,在VOC 2007上的mAP只有63.4%。YOLO2在YOLO的基礎上繼續改進。與Faster R-CNN中人工制定多尺度候選框選取策略不同,YOLO2采用K-means聚類作為候選框選取規則,在提升速度的同時,精度也有很大提升,在VOC 2007上的mAP達到78.6%。
本文提出的基于YOLO2和ResNet的人臉檢測識別方法旨在解決視頻監控中的人臉識別問題。 YOLO2[10]快速檢測每幀視頻中的人臉,將結果輸入ResNet[11]得到人臉特征,并對比目標人臉特征與本地人臉庫特征,計算人臉特征的余弦相似度,取其相似度最高的值作為識別結果。由于識別本身速度較快,故檢測速度的提升使得整體識別的速度顯著提升。
YOLO2和YOLO[12]是繼Faster R-CNN后又一系列優秀的檢測算法。Faster R-CNN系列算法均采取“候選框提取+分類”(即RPN+Fast R-CNN)的步驟實現多目標檢測,其本質是將檢測問題轉換為分類問題,精度很高,但速度不夠理想。YOLO使用一種將目標分類和檢測聯合訓練的方法,直接在輸出層回歸檢測目標邊框的位置和類別,將檢測問題轉化為回歸問題,極大地改善了檢測速度。
YOLO的預訓練分類網絡是GoogleNet[13]前20個卷積網絡加上平均池化層、全連接層,此時的輸入圖片大小為 224×224。檢測訓練網絡在其基礎上增加了4個卷積層和2個全連接層,并把輸入大小改為448×448。448×448的圖片被分成7×7個網格,每個網格對應2個候選邊框。邊框用于預測網格中心所含物體的位置,網格用于預測物體類別。輸入網絡后,含有物體的邊框被選出,經NMS剔除重疊邊框,得到輸入圖片中目標的位置和類別。YOLO處理示意圖見圖1[6]。

圖1 YOLO處理示意圖
相比Faster R-CNN,YOLO在速度上有明顯優勢,但是單一比例的候選框使準確率不高。針對這種情況,YOLO2進行了一系列改進。針對訓練數據和測試數據分布存在的差異性,YOLO2在每個卷積層后面添加了一個“批量歸一化(batch normalization)”的步驟,以提高網絡的訓練速度。此外,YOLO2將預訓練網絡的分辨率提高到448×448,在mAP上獲得了提升[14]。候選框選取方面,YOLO2用K-means聚類得到候選框的大小、比例和數量,在此基礎上平衡聚類結果和計算復雜度,得到合理的候選框選取參數。VOC和COCO上聚類結果示意圖見圖2[6]。

圖2 VOC和COCO上聚類結果示意圖
每個候選框輸出各自對應的預測位置、置信度以及邊框中物體是每種類別的概率。為了使YOLO2適應多尺度特征,YOLO2添加了一個“passthrough layer”,用于連接淺層特征與深度特征。在訓練時采取多尺度訓練,每經過10輪訓練就會隨機選擇新圖片的尺度。
速度方面,YOLO2也做了一些改進措施。很多檢測網絡會使用VGGNet-16作為特征提取網絡,雖然其精度很高,但是過于復雜[15]。YOLO2采用GoogleNet網絡作為特征提取網絡,其前向傳播一次的運算次數僅有VGG-16的1/4左右。雖然使用GoogleNet的精度略低于VGGNet-16,但速度有明顯改善。
除上述改進之外, YOLO2在很多細節上也做了優化。測試結果顯示:當輸入圖片大小為 228×228時,其幀率達到90FPS,mAP幾乎達到與Faster R-CNN一樣的水準。當輸入圖片分辨率較高,為554×554時,YOLO2在VOC2007上的mAP達到78.6%,幀率可達到40FPS,完全滿足實時性需求。
深度殘差網絡(deep residual networks,ResNet)是由Kaiming He提出的一種深度學習網絡,于2015年獲得ImageNet目標檢測、目標定位以及COCO目標檢測和COCO圖像分割的第一名。很多圖像處理相關的任務能取得較好的效果都得益于較深的網絡結構。網絡的層數越深,意味著能提取到的特征越豐富,更能體現圖像的語義。但簡單的堆疊網絡會導致嚴重的梯度消失問題。這個問題在一定程度上可以通過標準初始化(normalized initialization)和正則化(intermediate normalization)解決,保證幾十層的網絡能夠正常收斂,但在更深的網絡上,精確度達到了飽和,效果反而變差。
針對上述情況,ResNet引入了殘差學習來解決深度網絡難以優化的問題。形式上看,用H(x)表示最優的映射,讓堆疊的非線性層去擬合另一個映射F(x)=H(x)-x,此時最優映射可以表示為H(x)=F(x)+x。假設殘差映射比原映射更易優化,那么,在極端情況下就很容易將殘差推至0,這比將映射逼近另一個映射要簡單得多[16]。殘差網絡示意圖見圖3[11]。F(x)+x可以通過在前饋網絡中增加一個“快捷連接”(shortcut connection)來表示。“快捷連接”跳過一個或多個層,執行簡單的恒等映射,既不會增加額外參數,也不會增加計算復雜度,且整個網絡依然可以用SGD和反向傳播進行端到端的訓練。

圖3 殘差網絡示意圖
ResNet算法將殘差網絡映射的每一組網絡視為一個構造塊(residual block),每個構造塊定義為
y=F(x,{Wi})+x
(1)
其中:x、y分別為構造塊的輸入、輸出向量;F(x,{Wi})為要訓練的殘差映射,且式(1)中x和F的維度需要一致。若維度不一致,則在“快捷連接”上增加一個線性投影來匹配維度,表示如下:
y=F(x,{Wi})+Wsx
(2)
圖4是1個34層深的普通卷積網絡和1個34層深的 ResNet 網絡的對比圖。可以看到,普通直連的卷積神經網絡和ResNet 的最大區別在于,ResNet 有很多旁路的支線將輸入直接連到后面的層,使得后面的層可以直接學習殘差。傳統的卷積層或全連接層在信息傳遞時,或多或少會存在信息丟失、損耗等問題,ResNet 在某種程度上解決了這個問題,通過直接將輸入信息繞道傳到輸出保護信息的完整性,整個網絡只需要學習輸入、輸出差別的那一部分,簡化了學習的目標和難度。

圖4 34層普通卷積網絡與34層ResNet網絡
網絡設計規則: ① 對于輸出feature map大小相同的層,有相同數量的filters,即channel數相同; ② 當feature map大小減半時(池化),filters數量翻倍。對于殘差網絡,維度匹配的shortcut連接為實線,反之為虛線。維度不匹配時,同等映射有兩種可選方案:直接通過zero padding 來增加維度(channel)或者乘以W矩陣投影到新的空間。采用1×1卷積實現,直接改變1×1卷積的filters數目以增加參數。
殘差學習的引進使得基礎網絡的性能得到進一步優化,無論是在檢測還是識別方面,都可以取得更好的效果。
針對城市監控視頻,本文提出了一種人臉檢測識別方法。該方法分檢測、識別兩部分。檢測部分采用YOLO2,其速度和精度方面都有較好的效果。識別部分采用ResNet,其引入的殘差學習使得模型的精度比原始網絡更高。為驗證方法的效果,針對檢測、識別和綜合性能測試,分別設計了一組試驗。
1) 檢測部分:比較YOLO2和Faster R-CNN的檢測性能,設計了一組對比試驗。用同一批數據訓練YOLO2和Faster R-CNN,并對同一視頻進行測試,比較其檢測的速度和精度。
2) 識別部分:根據YOLO2檢測獲得的人臉坐標得到人臉圖像,分別用訓練好的VGGNet[17]和ResNet對其進行特征提取。同樣,分別用VGGNet和ResNet提取本地人臉庫的特征向量,計算檢測目標和本地圖像的特征向量的余弦相似度,得到前5名和前1名的錯誤率,比較其性能。
3) 綜合測試:對一段實時的監控視頻進行測試。由于視頻相鄰幀變化較小,故每隔1s(25幀)檢測輸入視頻中每幀人臉的位置。根據檢測的位置,提取檢測的人臉特征,并對比本地數據庫和視頻中出現的人臉特征,計算余弦相似度。若相似度達到閾值,則視為識別成功。記錄視頻中的實際人臉總數以及正確檢測人臉總數、正確識別總數、平均完成時間,最后評估整體效果。
為了驗證兩種算法結合后在人臉檢測和識別中的效果,實驗平臺采用intel E5-2460V4 CPU,圖像處理單元(GPU)采用英偉達K80顯卡,操作系統為CentOS6.5,軟件采用darknet(YOLO2)、Caffe(ResNet)。人臉檢測基準數據集采用WIDER FACE。WIDER FACE提供了廣泛的人臉檢測基準數據集,它包含32 203個圖像和393 703個人臉圖像,在尺度、姿勢、閉塞、表達、裝扮、關照等方面表現出大的變化。WIDER FACE基于61個事件類別組織,對于每一個事件類別,選取其中的40%作為訓練集,10%用于交叉驗證(cross validation),50%作為測試集。訓練數據集選取國內著名的人臉數據庫CASIA_Webface,共10 575人,約50萬人臉圖片,每張圖片大小為250×250,每個人的圖片數量從幾十到幾百不等。利用海康威視DS-2CD3T45D-I3網絡高清監控攝像頭采集到的數據作為驗證數據集。
第1組人臉檢測實驗采用WIDFER FACE人臉檢測數據庫作為測試,每幀檢測1次,并與Faster R-CNN的檢測效果進行對比。

表1 Faster R-CNN與YOLO2人臉檢測結果對比
第2組人臉檢測實驗采用1組實際拍攝的視頻作為測試,每幀檢測1次,對比Faster R-CNN的檢測效果。從測試的結果來看,真實拍攝的視頻的檢測效果要略差于公開數據集上檢測的效果,但仍可以應用到真實環境中的人臉檢測。

表2 Faster R-CNN與YOLO2在真實環境的測試對比
第3組人臉識別通過抽取網絡的最后一層全連接層的特征向量計算余弦相似度,得到VGGNet和ResNet的Top1和Top5相似度的錯誤率,結果見表3。

表3 VGGNet與ResNet人臉識別結果對比
由表3可看出,相較于VGGNet,ResNet的Top1和Top5的錯誤率更低,使用ResNet識別的效果更好。
第4組綜合測試部分,使用采集的含有人臉的監控視頻進行測試,測試結果見圖5、6。
從圖5、6的檢測和識別結果的整體效果來看,檢測和識別的速度較快,可以滿足實際應用的實時性要求。整體識別率在單獨識別的基礎上有所降低,其中受影響較大的是檢測部分。

圖5 人臉檢測截圖

圖6 正確識別出人臉
為減輕城市治安管理中監控和監管的壓力,本文中提出了基于YOLO2和ResNet的人臉檢測識別方法,用于識別城市監控視頻中出現的人臉的身份。利用公開數據庫和視頻監控采集的數據進行測試,結果顯示YOLO2和ResNet的整體識別效果較好,在實時性和準確性方面均能滿足實際需求。本文方法的不足之處在于當人臉傾斜角度較大或人臉區域較小時,容易出現漏檢現象。另外,由于存在運動模糊情況,即使檢測到這種情況下的人臉,其識別效果也較差。未來將在后續的研究中針對上述情況進行改進,以提高整體的性能。