讀古今文學網 > 刷臉背後:人臉檢測 人臉識別 人臉檢索 > 3.2 LAEO人臉檢測算法 >

3.2 LAEO人臉檢測算法

LAEO人臉檢測算法是由Marin-Jimenez等人提出的[6],該算法主要是為了檢測視頻中的人是否正在看彼此(Looking At Each Other,LAEO)。該算法主要分為三步:1使用UB(upper-body)檢測器,檢測出人身體的上半部分,再使用head detector在upper-body的檢測框內檢測出人頭;2估計人頭部的姿勢,即偏移角度yaw和pitch;3通過偏移角度判斷人們是否正在看彼此(LAEO)。本書介紹的人臉檢測程序是這個檢測算法的第一部分,Manuel等人提供了開源的代碼和訓練模型,我們可以直接使用它進行人臉檢測。

3.2.1 LAEO人臉檢測算法的使用

LAEO人臉檢測算法,是使用MATLAB語言開發的,對應的項目名稱為headdetsMatlab。該項目內包含leaohead_v2[7]和voc-release4.01[8]兩部分,leaohead_v2中包含主要函數、測試圖片、訓練好的模型;voc-release4.01中包含程序運行過程中需要調用的函數。

在運行該項目之前,首先需要進行配置,具體如下:

(1)首先打開MATLAB,切換到主函數test.m所在的目錄。

(2)單擊home→Set Path→ Add to Path with Subfolders,選擇voc-release4.01文件夾,同圖3-1,最後單擊「保存」按鈕並關閉。

(3)本書程序是在Windows 64位操作系統和MATLAB 2012b下運行的。如果讀者的運行環境和本實驗一致,則配置完成。如果讀者使用的是32位操作系統或者在文獻[8]中下載voc-release4.01,則使用headdetsMatlabchange文件下的.cc文件,替換掉voc-release4.01中對應的文件,同時使用「mex –O xx.cc」對這類.cc文件進行編譯。編譯成功後,則配置完成。

檢測圖片在headdetsMatlablaeohead_v2image文件夾下。

檢測結果在headdetsMatlablaeohead_v2result文件夾下。

讀者可根據實際情況修改檢測圖片和檢測結果的存放路徑,具體如下。

修改檢測圖片的存放路徑:在test.m中修改images_folder_path。

修改檢測結果的存放路徑:在demoheaddet.m中修改out。

選擇好路徑後,運行test.m,即可使用LAEO人臉檢測算法進行測試。

程序的說明

本書實現的程序對文獻[7]中的demoheaddet.m文件進行了修改,因為原程序在檢測圖片時,如果沒有得到檢測框,則該程序會報錯。此外,為了自動檢測一個文件夾下的所有圖片,我們創建了test.m作為測試的入口,具體如下。

Code4:test.m

在demoheaddet.m中,默認的detthr=-0.82,得分大於detthr的框都有可能成為檢測框。detthr值越小,得到的檢測框越多,同時噪聲也增多。本書中選擇detthr=-0.92。

3.2.2 LAEO人臉檢測算法的原理

Manuel等人首先訓練了一個UB(upper-body)檢測器,使用的也是Felzenswalb等人的DPM目標檢測模型[5]。正訓練樣本採用的是好萊塢電影數據集中標注過的關鍵幀,這些正訓練樣本包含了不同角度、不同尺寸的包含人體上半部分的圖片;負訓練樣本採用INRIA-Person數據集中不包含人的圖片。UB檢測器只包含一個組件。使用這個UB檢測器單獨處理每一幀,隨著時間把對應的檢測框聯合起來,使用Everingham等人設計的追蹤方法:在不同幀中的同一個檢測框被許多KLT點連接起來,如果一個追蹤中檢測框個數小於20或者檢測得分和小於某個閾值,則認為這個檢測框是誤報(false-positive)並將之捨棄。

和UB檢測器類似,LEAO也使用Felzenswalb等人的DPM目標檢測模型[5]訓練一個頭部檢測器(head detector),使用和UB檢測器相同的圖片進行訓練。最後使用head detector在UB檢測框內檢測出人的頭部對應的坐標位置。

上面分析了LAEO人臉檢測算法的相關理論,接下來我們結合源代碼對該算法進行分析。由test.m可知,把存放測試圖片路徑下的每張圖片一一傳遞給demoheaddet.m,由demoheaddet.m進行人臉檢測處理。下面是demoheaddet.m的代碼,該代碼來自文獻[7]。

Code5:demoheaddet.m

通過程序test.m和demoheaddet.m,讀者已經對LAEO人臉檢測算法的步驟有了整體的瞭解,有關該算法更具體的實現細節,可以查看FaceDetectAlgosheaddetsMatlab中的相關文件。

3.2.3 LAEO人臉檢測算法的檢測結果

和DPM相比,LAEO人臉檢測算法的檢測效果沒有DPM好,但是它可以檢測尺寸相對大的圖片,而DPM卻不能。下面呈現了一些有代表性的圖片的檢測結果,如圖3-5和圖3-6所示。

圖3-5 當detthr=-0.82時headdet算法的檢測結果

圖3-5 當detthr=-0.82時headdet算法的檢測結果(續)

圖3-6 當detthr=-0.92時headdet算法的檢測結果

由圖3-5和圖3-6可以發現,當detthr值變小時,可以得到更多的檢測框,但檢測到更多的噪聲(誤報)。此外,我們也測試了detthr=-1的情況,但結果噪聲多、效果不理想。綜合上述考慮,我們選擇了detthr=-0.92。