程 實 沐燕舟 趙 赟
(1.南通大學信息科學技術學院 南通 226000)(2.天津大學智能與計算學部 天津 300000)
隨著互聯網快速影響,信息安全需求與個人身份認證需求不斷提升,在此背景下,我國生物識別概念逐漸火熱,高識別率的人臉識別技術迎來了發展良機。研究和處理人臉在視頻監控中的情況是一項非常有前景的方向,特別在安防和人機交互等領域擁有著廣闊的應用[1]。
目前,人臉識別產品大多將人臉檢測與人臉識別綁定在一起放在服務器端[2],增加了服務器的負擔,一臺服務器只能帶兩路攝像機。帶來的問題是產品應用到實時場景時,部署成本很高。另一方面,攝像機只起到采集視頻的角色,在嵌入式硬件性能與嵌入式操作系統的迅速提升環境下,攝像機已經具備了單獨處理實時視頻信息的能力。所以,如何將有效地人臉檢測算法從人臉識別模塊中分離出來,用嵌入式方式實現人臉檢測,以提高人臉識別實時應用性能是人臉識別產品走向市場的重要途徑之一。基于這樣的需求,本文對人臉檢測公認度比較高的JDA算法進行了改進,目標是實現與人臉識別無縫對接。
人臉檢測的快速發展和市場對生物特征鑒定技術的認可,實時人臉檢測技術已經逐漸成為了市場所緊缺的需求。人臉檢測方法研究發展簡表如表1所示。

表1 人臉檢測研究方法演化[3]
JDA(Joint Cascade Face Detection and Alignment)算法[4]是目前比較先進的人臉檢測算法,是MSRA 組在2014 年的最新技術。它結合了檢測和對齊,一方面人臉對齊對進一步的人臉識別意義重大,另一方面標記附近的特征可促進人臉檢測分類器分辨出更準確的結果。JDA 算法主要采用3000FPS方法[5]。這個方法使用了局部特征和回歸樹,將特征空間映射到線性空間,再使用線性回歸學習。用回歸樹學習一個局部二值特征(LBF,注意不是LBP),用線性回歸來訓練回歸模型。該算法的整體過程如圖2。

圖1 JDA算法描述
從圖1 可以看出的是第二列的特征是通過學習得到的,第四列的回歸關系是線性的,也是通過學習得到的。在訓練階段,我們學習特征映射函數?t去產生局部二值特征。給定特征和目標形狀增量,通過線性回歸學習線性投影Wt。在測試階段,形狀增量直接被預測并且運用于更新當前被估計的形狀。
LBF 的全稱是Local Binary Feature 即局部二值特征。文獻[5]中把LBF定義為直接簡單大概地統計所有樹葉節點是否被該樣本落入,如果落入了就記為1 否則記為0,然后把所有的01 串連起來就是LBF了,如圖2所示。
用隨機森林取標記的局部二值特征,如(圖2(b)),在標記點周圍,兩個像素點為一對,隨機抽取4 對為一棵樹,每一對比較大小,根節點大于選擇左子節點,小于選擇右子節點,最后到達的葉子節點為1,其它為0。再組成圖上的二進制比如(1000),再依次,抽取n 棵數,串聯組成局部二值特征。淺顯地說上圖2(b)中,樣本經過隨機森林的三棵樹后分別落在了第1,2,3 個葉子節點上,于是三棵樹的LBF 就是1000,0100,0010。串聯起來就是100001000010,這就是一個特征點的局部二值特征φtj,把人臉所有特征點的LBF 都連接起來形成總的LBF就是全局特征φt了。

圖2 LBF特征提取
確定LBF之后,串聯人臉所有特征點(文獻[6]選取27 個人臉特征點)的二值特征得到全局特征并通過最小化下面的目標函數學習全局線性投影Wt:

其中I是輸入圖像,St-1是來自于上一級的形狀,φt是特征映射函數,Wt是線性回歸矩陣。
圖3是使用JDA算法進行人臉檢測的結果。

圖3 JDA算法人臉檢測結果
JDA 檢測的人臉很快、很準,但存在兩個問題,一是所檢測的人臉不一定能都適用人臉識別(尺寸過小,角度過偏);二是輸出的是存在人臉的幀,即使把人臉檢測與人臉識別分開,人臉識別性能不降反增,原因是人臉檢測進行了兩次(因為傳輸的是幀,所以到服務器端還要再進行一次人臉檢測)。為此,本文設計的JDA2 對JDA 進行四個方面的改進:關鍵幀提取、人臉定位與跟蹤、人臉過濾和有效人臉發送人臉,總體框架見圖4。

圖4 JDA2總體框架
鏡頭中圖像幀存在不相關性,需要去除冗余,可以代表鏡頭內主要信息的圖像幀就是關鍵幀。提取的關鍵幀標準根據視頻的不同而不同,關鍵幀的數量由應用場景決定。
關鍵幀提取一種較為簡單的方法是計算幀間差值,就是將相鄰兩幀在各自位置上的像素灰度差做比較。當兩幀圖像間的灰度差值大于某個事先設定好的閾值就認為產生了鏡頭的邊界。如果設定的全局閾值太低則錯誤檢測率將會很高,相反的情況下漏檢測率會升高。因此,設定局部自適應的閾值將會是一種是最好的辦法,本文在自適應閾值的設定方式上利用滑動窗法。
算法描述:
假設對第k 幀進行檢測,這其中會有N+1 個間斷的值需要考慮,從而組合成為一個滑動窗,中間第k幀是不是作為邊界,主要條件如下:
1)在N+1個值中,需要最大值是Z(k,k+1);
2)Z(k,k+1)>k+Zsm。其中,k 為系數,Zsm為窗口中的次大值。
即當窗口中的最大值為Z(k,k+1)時,同時還是滑動窗內第二大的k 倍時,在(k,k+1)處是會有一個邊界,可以將這個k參數認為是邊界的模式。
人臉定位主流方法有兩種:
1)基于復測模型的人臉定位
人臉的一個重要特征就是膚色[7],不同人的膚色分布具備共性,膚色分割方法就是利用了這種膚色聚類性,穩定性很好,不受各種因素的影響。單一的膚色檢測就能夠定位圖像中所有的人臉,并且可以達到很高的檢測率,但是誤檢率也很高,因為這種方法會檢測到類似人臉膚色的區域,把它誤判斷為人臉;除此之外,膚色檢測容易受到光照等條件的影響,膚色的劃分結果非常明顯地決定了算法的精度。
2)基于AdaBoost 的人臉定位[8],算法的核心就是減少正確分類樣本的權值,增加了錯誤分類樣本的權值,從而得到一個理想的分類器。所以,將AdaBoost算法用于人臉定位檢測率和速度都較高,而且不需要多少復雜的分類器,但是訓練時間過長而且誤檢率較高。
膚色模型和AdaBoost 算法各有優缺點,JDA2結合了這兩種算法。
首先是粗定位,主要是運用膚色模型對其進行定位,從中找出可能的人臉區域,然后再運用Adaboost 算法在所標記出的一切有可能的人臉區域中進行人臉的精確定位。算法描述如圖5所示。

圖5 人臉定位算法流程
人臉跟蹤是在已知初始幀人臉區域的情況下,結合人臉運動信息更新和確定后續幀中人臉的位置和大小。人臉跟蹤的流程圖如圖6所示。

圖6 人臉跟蹤的流程圖
我們從一些人臉庫和大量網絡圖片中共搜集了人臉樣本約20000 張。為了使樣本反映真實的概率分布,我們盡量使這個集合包含各種類型的人臉,如各個種族、年齡段以及性別。測試集在CMU+MIT 的正面人臉測試集合(130 幅圖片、507個人臉)。
1)正臉檢測實驗
我們所說的正面人臉是指旋轉角度在搖擺[-15°,+15°]、傾斜[-10°,+10°]和俯仰[-10°,+10°]以內的人臉。我們收集的人臉庫中共有正面人臉樣本約15000 張。我們在CMU+MIT 的正面人臉測試集合(130 幅圖片、507 個人臉)上比較JDA2算法與JDA 算法的性能。實驗機器為一臺PIV2,4GHz PC,檢測結果ROC 曲線如圖7 所示。橫軸為特異度,縱軸為敏感度。從圖8 看出,JDA2 明顯改進了JDA的性能。

圖7 正面人臉檢測ROC曲線
2)服務器壓力測試
我們的方案是對比“JDA+人臉識別”,“JDA2+人臉識別”,“人臉識別(集成人臉檢測)”三個方案的識別速度(表3)。

表3 識別速度和正確率對比
虛警率是指在人臉檢測成功而拒識為人臉的百分比。由于JDA2 使用了過濾和定位策略,對尺寸過小,角度過大的人臉拒檢,所以,虛警率明顯下降。間接帶來的好處是,降低了網絡負載(只傳有效人臉),解決目前服務器只能帶2 路的瓶頸有望得到解決。
對于目前普遍使用的傳統人臉識別系統,由于網絡傳輸帶寬的限制,不可能將眾多的實時人臉圖像傳輸到處理中心進行識別處理。但是,如今的安防對先進技術的運用要求越來越高。隨著嵌入式電路設計的成熟,基于現場特定要求的智能圖像識別技術應運而生。在這樣背景下,本文對人臉檢測公認度比較高的JDA進行了改進,在拍攝現場圖像的同時,對能識別的人臉準確地發送人臉數據。由于檢測到的適用人臉識別的人臉的數據量大大小于圖像數據量,為一臺服務器實時處理多路攝像機數據帶來可能。