阮有兵 徐海黎 萬 旭 邢 強 沈 標
1(南通大學機械工程學院 江蘇 南通 226019)2(南京藍泰交通設施有限責任公司 江蘇 南京 210019)
人臉檢測技術是計算機視覺中圖像處理的一個重要分支,無論是在日常生活中常見的監(jiān)控相機,還是高鐵機場安檢時的人證比對,通常都需要對相機采集的視頻流中人物進行辨別,這就需要對人臉進行檢測。人臉檢測需要檢驗出圖像中是否含有人臉,并獲得信息,諸如人臉在圖像中的位置、傾斜角度以及姿態(tài)等。傳統(tǒng)的人臉檢測方法包括基于知識規(guī)則方法、統(tǒng)計模型方法以及模板匹配的方法,如支持向量機(SVM)和Adaboost框架等。傳統(tǒng)檢測方法,比如結合Haar-like特征的Adaboost分類算法[1-2],在速度上具有一定的優(yōu)勢,可以達到實時檢測,但是在實際使用中,光照變化以及人臉姿勢表情變化因素下魯棒性較差。近年來,隨著深度學習技術的日益完善,深度學習逐漸被運用在眾多領域,并獲得巨大的應用價值?;谏疃葘W習的檢測方法已經(jīng)成為目前人臉檢測的趨勢。如Li等提出的Cascade CNN算法、Redmon等在2015年提出的YOLO(You Only Look Once)算法以及R-CNN、SPP-net、Fast R-CNN、Faster-R-CNN等經(jīng)典的目標檢測算法[3-6]。
Cascade CNN算法是對Violajones算法的深度卷積網(wǎng)絡實現(xiàn),人臉檢測速度較快,但是在第一級窗口過濾時采用基于密集滑動窗口的方式,對識別高分辨率中存在大量小人臉的圖像有一定的限制。YOLO算法的思想是將目標檢測作為回歸問題,將整幅圖作為網(wǎng)絡輸入,在輸出層回歸出邊界框的位置及屬性[7-8],算法識別速度快,但是在識別小人臉時存在缺陷,精確度較低。R-CNN主要步驟有三步,首先是對輸入的圖像進行掃描獲得2 000個預選區(qū)域,然后將這些區(qū)域通過卷積神經(jīng)網(wǎng)絡提取特征,最終將特征輸入支持向量機和線性回歸器進行分類計算和目標定位計算。Fast R-CNN是R-CNN的升級版本,只需要訓練一個神經(jīng)網(wǎng)絡,相比而言,計算速度更好。這些深度網(wǎng)絡模型運行在配置有GPU的PC客戶端上時,這類平臺的計算和處理能力較強,可以處理相應的人臉檢測算法,基本可以達到對人臉的實時檢測,但對于基于嵌入式系統(tǒng)的移動設備,將人臉檢測應用于移動端時,由于嵌入式平臺的處理能力和資源的限制,GPU處理器性能的差異,即使采用實時效果較好的Fast R-CNN,效果也不是很理想,只能達到1 FPS以下的幀率,不能夠達到實時檢測的效果[9-10]。
在移動端的目標檢測上,為了提高檢測的速度,研究者們提出了一些小型化的網(wǎng)絡模型,如SSD和YOLO,為了解決在嵌入式平臺上目標檢測性能下降的問題,Redmon提出了tiny-yolo網(wǎng)絡模型,通過減少YOLO模型上卷積層的數(shù)量來減少模型大小,同時減少了算法中浮點運算的次數(shù),以達到在嵌入式平臺上實時檢測,但這樣檢測精度也大幅下降[11]。
為了兼顧人臉檢測的快速性和準確性,同時減小模型體積,本文基于YOLO算法提出一種輕量化的人臉檢測網(wǎng)絡模型結構E-YOLO(Enhance-YOLO),摒棄YOLO算法中的全連接層,采用K-means聚類獲取基準區(qū)域,采用基準區(qū)域來預測邊框,提升檢測的精度。通過降低卷積神經(jīng)網(wǎng)絡中的網(wǎng)絡層數(shù)和卷積核數(shù)目,以達到降低模型大小的目的,使網(wǎng)絡模型輕量化。
圖1為YOLO算法模型。
圖1 YOLO算法模型
文獻[13]提出Fast Yolo模型,為了降低模型大小以及處理功耗以用于嵌入式平臺的檢測,指出:并非所有捕獲的視頻幀中都包含唯一信息,因此不需要對所有視頻幀進行深度推斷。模型中通過運動概率圖判斷是否需要進行深度推斷,這種方式可以降低功耗,但會導致模型的精準度不高,同時影響識別的幀率。
YOLO檢測網(wǎng)絡模型中包括24個卷積層和2個全連接層,通過卷積層得到卷積特征后,經(jīng)過最后的2個全連接層得到7×7×30的特征向量,其中輸出的特征向量中每個1×1×30的特征向量都與原始圖像中每個單元格存在映射關系,然后利用生成的1×1×30的特征向量來預測目標的位置和相關屬性。但是通過這種方式,在經(jīng)過全連接層時會丟失很多圖像的空間信息,造成定位精度下降。
本文提出的網(wǎng)絡模型借鑒Faster R-CNN算法,F(xiàn)ast R-CNN算法中使用基于基準區(qū)域和分類的檢測方式,有較好的目標檢測效果。E-YOLO網(wǎng)絡模型采用基準區(qū)域來預測邊界框,具體做法為去掉卷積網(wǎng)絡中最后的兩個全連接層,在最后一層卷積層上進行基準區(qū)域預測,以減少圖像中目標信息的丟失,同時將輸入圖片的尺寸縮小為416×416,在每個單元格上利用五個基準區(qū)域預測,最終在每個單元格上預測出五個候選框,然后利用候選框直接預測目標的坐標和寬度、高度以及置信度。在Fast R-CNN算法中,獲得基準區(qū)域的方式是采用人工設定的方式,手動隨機選擇基準區(qū)域的個數(shù)和大小,以這種方式獲得最終的區(qū)域需要重復篩選,耗時較長。本文提出的網(wǎng)絡模型采用K-means聚類以解決獲取基準區(qū)域的問題,采用統(tǒng)計學的思想,對數(shù)據(jù)集中人工手動的標定框信息進行統(tǒng)計分析、聚類,然后依據(jù)分析的結果得到基準區(qū)域個數(shù)和寬高等參數(shù)信息。
為了能夠在嵌入式平臺上對人臉進行實時檢測,需要對現(xiàn)有模型進行精簡,由于使用場景是人臉檢測,只需要將圖片中的人臉和背景進行分類,不需要如此深的網(wǎng)絡結構。E-YOLO在YOLO的基礎上減少了卷積核的數(shù)目,在YOLO網(wǎng)絡模型中,卷積核的數(shù)目和網(wǎng)絡層數(shù)呈正相關關系,隨著算法中網(wǎng)絡層數(shù)的增加,卷積核也呈現(xiàn)遞增的趨勢,通過減少每層的卷積核數(shù)量,使網(wǎng)絡模型變得輕便。具體做法為將網(wǎng)絡中卷積層的卷積核數(shù)目減少一半,但池化層中卷積核數(shù)量以及卷積層最后一層的數(shù)量保持不變。同時為了進一步降低在嵌入式平臺的大小問題,對輸入的圖片進行處理,在訓練過程中采用多尺度訓練,將不同的圖片裁剪為統(tǒng)一的大小,通過1×1的卷積對圖像進行降維處理,將處理后的特征用于人臉檢測,進而加快在嵌入式平臺上的處理速度。改進后的網(wǎng)絡模型如圖2所示。
圖2 E-YOLO網(wǎng)絡模型示意圖
為了測試本文提出的E-YOLO網(wǎng)絡模型性能,采用FDDB以及WIDER FACE人臉數(shù)據(jù)集進行測試,模型訓練是在NVIDIA GTX1080顯卡的工作站上進行。FDDB(Face Detection Data Set and Benchmark)是一款針對人臉檢測算法的評判標準,在人臉檢測領域具有較大的權威性,該數(shù)據(jù)集共提供了包含5 171個人臉的2 845幅圖片,人臉的狀態(tài)特征多樣化,包含遮擋、低分辨率、不同姿態(tài)等情況,顏色包含彩色圖像以及灰度圖。WIDER FACE是由香港中文大學提供的人臉檢測數(shù)據(jù)集,它比其他數(shù)據(jù)集更廣泛,該數(shù)據(jù)集共有32 000幅圖像,包含39 000個人臉數(shù)據(jù),數(shù)據(jù)集中有非常多的小尺度人臉圖像,并且背景復雜,對于人臉檢測的評估更具有權威性[15-16]。圖3是FDDB和WIDER FACE數(shù)據(jù)集中的示例圖片。
圖3 FDDB和WIDER FACE數(shù)據(jù)集的示例圖片
實驗中用準確率(Precision)、召回率(Recall)以及速度三個參數(shù)作為檢測結果的評價指標。
準確率(Precision)為數(shù)據(jù)集中實際檢測出的正樣本數(shù)與數(shù)據(jù)集中檢測出所有的正樣本的數(shù)的比值:
召回率(Recall)為數(shù)據(jù)集中實際檢測出的正樣本數(shù)與數(shù)據(jù)集中預測的樣本數(shù)的比值:
式中:TP為數(shù)據(jù)集中實際為正例,同時被分類器標記為正例的樣本數(shù);FP為數(shù)據(jù)集中實際為負例,同時被分類器標記為正例的樣本數(shù);FN為數(shù)據(jù)集中實際為正例,同時被分類器標記為負例的樣本數(shù)。
檢測速度(Speed)的定義為每秒鐘處理的圖片數(shù)量,單位為FPS。
為了測試本文提出的網(wǎng)絡模型人臉檢測的效果,對網(wǎng)絡模型進行訓練和實驗,由于本文提出的網(wǎng)絡是針對于嵌入式平臺,所以選擇TINY-YOLO和Fast YOLO網(wǎng)絡模型[13]作為對比模型。分別使用E-YOLO、TINY-YOLO以及Fast YOLO在WIDER FACE和FDDB數(shù)據(jù)集上訓練和測試。測試結果如表1所示,在FDDB和WIDER FACE數(shù)據(jù)集上的PR曲線如圖4所示。
表1 使用FDDB和WIDER FACE數(shù)據(jù)集實驗測試結果
(a) FDDB數(shù)據(jù)集
(b) WIDER FACE數(shù)據(jù)集圖4 在數(shù)據(jù)集上人臉庫 PR 曲線
由表1可知,本文提出的網(wǎng)絡模型E-YOLO和TINY-YOLO、Fast YOLO在檢測的準確度上差別不大,但是相比TINY-YOLO和Fast YOLO模型,E-YOLO模型的召回率要高。因此本文提出的網(wǎng)絡模型相比TINY-YOLO和Fast YOLO有更高的平均精度,在recall-precision方面能達到一個更好的平衡狀態(tài),其次在檢測速度方面E-YOLO要明顯優(yōu)于另外兩個網(wǎng)絡。
隨后將E-YOLO、TINY-YOLO以及Fast YOLO分別移植到嵌入式平臺上中,測試其速度和模型大小。本文選擇的嵌入式處理器為NVIDIA Jetson TX1,它是英偉達公司推出的第二代嵌入式平臺開發(fā)組件,體積只有身份證大小,有256個CUDA核心,采用計算機視覺技術、深度學習技術以及GPU計算圖像處理技術。
在實驗中,將E-YOLO、TINY-YOLO以及Fast YOLO分別移植到TX1嵌入式平臺中,輸入300幀640×480的視頻數(shù)據(jù),對輸入的視頻進行幀采樣,對每幀圖像進行預處理然后輸入到三個模型中,對每幀圖像進行人臉檢測,檢測結果如表2所示。
表2 在TX1平臺上不同模型對比結果
由表2可知,TINY-YOLO的模型大小為61 MB,E-YOLO的模型大小為TINY-YOLO模型大小的70.5%,為43 MB,相比Fast YOLO模型稍大,但在檢測速度方面,TINY-YOLO的檢測速度為19 FPS,F(xiàn)ast YOLO檢測速度約為18 FPS,而目前市場上大多數(shù)攝像機的幀率為25 FPS,均達不到對攝像機視頻數(shù)據(jù)的實時檢測,而E-YOLO模型的檢測速度為26 FPS,是TINY-YOLO檢測速度的1.37倍,基本可以實現(xiàn)在嵌入式平臺下的實時人臉檢測。圖5是不同模型在數(shù)據(jù)集中測試的結果示例圖。
圖5 模型在FDDB和WIDER FACE數(shù)據(jù)集上測試效果圖
為了解決嵌入式平臺計算能力弱、資源有限、不能部署深度學習人臉檢測網(wǎng)絡的問題,提出了一種改進E-YOLO網(wǎng)絡,模型的主體思想沿用YOLO算法的方案,在YOLO的基礎上簡化模型,減少卷積核的數(shù)目,使得模型可以應用于嵌入式平臺,同時去掉全連接層,保留全連接層丟失的信息,提升檢測的準確度。實驗結果表明,本文提出的算法在模型大小、檢測速度以及檢測精度上均優(yōu)于TINY-YOLO模型算法,在準確率和召回率之間取得一個較好的平衡狀態(tài),同時移植到嵌入式平臺上能夠?qū)D像進行實時檢測。
下一步的研究工作是將E-YOLO人臉檢測網(wǎng)絡應用于工業(yè)領域,如無人駕駛、智能安防等新產(chǎn)品的開發(fā)中。