侯景嚴,宋煥生,梁浩翔,賈金明,戴 喆
(長安大學 信息工程學院,西安 710064)
人工智能的發展離不開計算機視覺的技術支撐,計算機視覺[1]是使用計算機及其相關設備對生物視覺的一種模擬,其主要側重在圖像底層特征提取、視頻分析等方面.其中人臉識別[2]就是基于計算機視覺的有關生物特征識別的研究技術之一.近年來人們廣泛關注有關特征的構建和識別,例如MSER[3,4]、HOG[5]、SIFT[6]、LBP[7,8]等.利用普通攝像頭就能采集人臉數據模型,通過后臺相應的算法就可對個人身份進行識別和確認,因而研究人臉識別本身就有著重要的意義,并且其核心技術的實現展現了弱人工智能向強人工智能的轉化.
隨著深度學習的發展,卷積神經網絡(CNN)[9]也為人臉識別提供了新的思路,其中經典的模型包含了AlexNet[10]、GoogleNet[11]、VGG[12],同時也包含了ConvNet-RBM[13]、DeepFace[14]等深度網絡人臉識別方法.其中ConvNet 主要是直接從具有混合深度網絡的面部對的原始像素中學習表明身份相似性的關系視覺特征的一種模型.DeepFace 則是使用顯式3D 人臉建模來重新審視對齊步驟和表示步驟,以便應用分段仿射變換,并從9 層深度神經網絡中得出人臉表示.這兩種方法都是使用大量的人臉圖像樣本對神經網絡模型進行訓練,再手工選取中間層特征作為人臉的特征向量,最后對特征向量進行相似性度量得到人臉識別結果.
ConvNet 和DeepFace 雖然提高了精度,但是仍存在一定缺陷,首先均需要人為選擇特征向量,這將會導致算法具有不確定性,并且在大型數據庫上訓練神經網絡模型時,中間層神經單元個數會為了保持特征的完整性而不斷增加,導致最后提取的特征向量維度變高,增加了計算成本.其次使用神經網絡進行提取全局特征增加了計算機及網絡的荷載,降低了人臉識別的速度.
針對以上問題,本文提出基于前后端交互的人臉識別系統,不僅提升了人臉識別的精度和魯棒性,也有效緩解了計算機及網絡的荷載和壓力,同時系統的計算效率明顯提升.本系統擁有3 個創新性:
1)使用了殘差神經網絡模型(ResNet)[1],不用手工選取度量方法,而是將高維度的人臉圖像映射為128維特征向量,再使用歐式距離進行人臉的相似性度量.
2)采用了前后端交互式系統,提取特征值和特征值距離匹配分別運行于服務端和客戶端,同時通信間采用碼流傳輸格式,加快系統傳輸速率.
3)提出了基于GrabCut 的人臉興趣區域(Region Of Interest,ROI)提取算法,先從系統輸入幀圖片中提取出人臉前景,排除了帶有冗余和干擾信息的背景,提升了系統的計算效率和人臉識別精度.
本文提出了一個基于前后端交互的人臉識別系統,系統總體模塊設計如圖1所示,主要包含客戶端模塊、數據庫以及服務端模塊.客戶端模塊的功能是顯示輸入的視頻流畫面、收集待識別人臉圖像、及對待識別人臉圖像進行GrabCut 圖像預處理操作提取人臉前景,并且將從服務端傳遞來的人臉特征與已知數據庫中的人臉特征進行匹配,顯示人臉識別結果.本系統實現了客戶端與服務端的通信,傳遞壓縮后的人臉圖像碼流與人臉特征向量碼流.服務端模塊的功能是通過殘差神經網絡(ResNet)提取待識別人臉的特征.

圖1 基于前后端交互的人臉識別系統框架圖
本系統可以實現快速高效準確的人臉識別功能,首先在輸入端對待識別人利用GrabCut 算法進行圖像預處理,獲得精準的ROI 區域,減少外界信息的干擾.其次將通用的人臉識別算法拆分到系統的不同模塊中,其中將利用殘差神經網絡(ResNet)提取人臉特征的復雜操作單獨布置在服務端,而簡單的人臉特征距離匹配,即在128 維空間中進行人臉相似性的計算布置在客戶端.整個系統通信過程中傳輸壓縮碼流,通過多視頻并行處理,可以得出人臉識別算法精度提高,并且系統的處理速度明顯提升.最后本系統采用SQL Server對需要傳輸的人臉圖像進行序列化數據存儲,在通信過程中可以實現不同計算機間的數據準確接收,從而避免信息在傳輸過程中的丟失.
首先利用GrabCut 算法對輸入圖像進行預處理操作,排除了系統輸入圖片中的干擾信息,得到準確的待識別人臉前景圖像.如圖2所示,在輸入視頻幀中設置人臉框,圖2(a)為固定的人臉框,圖2(b)為輸入待識別人臉圖像后的示意,其中輸入的待識別人臉圖像可當作一組像素集合,該像素集合可以分為區域項和邊界項,如圖2(a)所示,而區域項和邊界項都需被劃分為背景模型和前景模型,最終圖像預處理的目標就是獲取前景,即待識別人臉.該算法結合人為設定的人臉框和GrabCut 核心算法原理,主要解決的就是判斷某一個像素點屬于前景模型還是背景模型,一旦指定的人臉框內輸入框選目標,即待識別人臉,則將人臉框外的像素集當作背景區域,通過對人臉圖像的區域像素點和邊界像素點進行區分,從而準確地提取人臉前景.

圖2 圖像預處理示意圖
如流程圖3所示,該算法主要包含初始區和迭代區.首先初始區得到描述前景的全協方差混合高斯模型(GMM)和描述背景的GMM 的3 個參數,其次迭代區分配其余像素.
首先使用k個高斯分量(一般取k=5)的GMM 來對背景和目標進行建模,其中背景包含正確的背景像素和可能是背景的像素,前景包含正確的前景像素和可能是前景的像素,由此得到背景模型(BGM)和前景模型(FGM).其次采用聚類算法將各自模型中的像素分到不同的模型樣本中,利用各自的樣本來估計高斯模型內的參數,如式(1).其中 πi表示每一個高斯分量的權重,μi表示每個高斯分量的均值向量,Σi表示協方差矩陣,x表示RGB 三通道向量,這3 個參數即為初始區中計算所得的初始化值.


圖3 圖像預處理算法流程圖
圖3中BGM 和FGM 中5 個單高斯模型分量組合成了混合高斯模型,一旦確定了各自GMM 的3 個參數,其余未確定的像素中知道任一像素的RGB 顏色值后,代入前景或者背景的GMM,從而得到該像素是前景或背景的概率,重新分配未知的像素點,這樣每個模型的像素集合就已更新,接著對估計的高斯模型重新更新參數,最后將構建好的高斯模型中的區域項和邊界項進行結合,其中式(1)和式(2)是區域項像素的計算方法,式(3)是邊界項像素的計算方法,式(3)中計算相鄰兩個相鄰像素m和n之間RGB 的歐式距離,參數 β由圖像的對比度確定,常數 γ為50.最后采用最大流算法,對未知的像素點重新分配并進行學習,從而準確區分出每一個像素的歸屬,得出其屬于FGM 還是BGM.

傳統的圖像傳輸大多是基于像素訪問進行傳輸,傳輸的大小是圖像的分辨率和圖像的通道數的乘積.就一般普通攝像頭拍攝到的單通道灰度圖像而言,其分辨率是640×480 時,一次要傳輸的數據量大小是640×480×1=307 200 個字節,若是彩色三通道圖像分辨率則為640×480×3=921 600 個字節,可見采用基于像素訪問的方式傳輸圖像會對網絡資耗費巨大,從而造成視頻的卡頓,所以本文采用二進制碼流的傳輸方式,對圖像進行壓縮解壓,同時利用TcpSocket 通信方式來傳送圖片二進制數據,如圖4所示,通過壓縮解壓,內存里的二進制圖片數據和OpenCV 中的圖片格式相互轉換,本文的圖片壓縮了20%,在不影響人臉識別精度的基礎上,一定程度使得系統的運行速度提升,也緩解了網絡的壓力.

圖4 圖像壓縮與解壓
人臉圖像可以用維度很大的矩陣來表征,人臉識別就是對比對的人臉進行矩陣提取的操作,本系統先檢測到人臉,之后通過ResNet 將人臉生成一個128 維的向量,該節算法著重介紹人臉特征提取和人臉特征距離匹配.
本系統所使用的實時人臉識別方法是深度殘差網絡ResNet-34,并且利用了人臉識別模型和人臉關鍵點檢測器.首先提前制作了已知人臉圖像的特征值庫,其次根據人臉識別模型和人臉關鍵點檢測器,得到待識別人臉圖像的特征值,最后計算待識別人臉圖像的特征值和特征值庫的歐式距離,確定識別結果,如果兩個特征向量的歐式距離小于給定的人臉特征匹配閾值(本文閾值選定為0.5),則判斷兩幅人臉圖像為相同對象,反之則為不同對象.算法流程如圖5所示.

圖5 人臉識別算法流程
2.3.1 深度殘差網絡
2015年由Kaiming He 等4 名華人共同提出的深度殘差網絡ResNet (Residual neural Network)[15],通過增加shortcut connection (Identity Map)來直接連接深淺層網絡,使得梯度能夠很好地傳遞到淺層,其結構可以加速神經網絡的訓練,也大大提高了模型的準確度.
圖6是一個ResNet 的殘差學習單元(Residual Unit),從殘差學習單元可以看出ResNet 是將學習目標進行改變,將學習一個完整的輸出H(x),改變為學習輸出和輸入的差值H(x)–x,即殘差.圖6中假定某段神經網絡的輸入是x,期望輸出是H(x),如果直接把輸入x傳到輸出作為初始結果,那么此時需要學習的目標為F(x)=H(x)–x.

圖6 殘差學習單元
2.3.2 人臉特征提取
本文采用ResNet-34 模型提取人臉圖像中具有代表性的特征向量,在網絡訓練初始階段,每個特征向量表示為一個特征點,所有的特征點以高斯分布的形式存在于特征空間中,ResNet-34 模型可以使網絡在訓練過程中,屬于同一人的特征點能夠逐漸聚合,而不屬于同一人的特征點能夠逐漸分離,從而對人臉特征點進行分類識別.
本系統在服務端首先使用預測算子獲取得到的人臉區域中的五官的幾何點區域,加載68 個特征點的人臉標準特征模型;其次加載ResNet 模型參數,獲得ResNet-34 訓練模型.在系統輸入圖片或視頻時,如果存在人臉就使用ResNet-34 的接口獲取人臉特征向量.提取人臉特征點中將ResNet-34 網絡的layer4 作為人臉的特征層,此時的特征才是人臉的特征.提取的人臉的68 個特征點(例如眼、嘴等位置)如圖7所示.

圖7 人臉68 個特征點示意
2.3.3 人臉特征匹配
人臉特征匹配即距離匹配,是在獲取特征向量之后使用歐式距離和本地已知人臉特征數據集的特征向量進行匹配,通過計算得到128 維空間中兩個點之間的真實距離.
如圖8所示,二維坐標圖中點A(x1,y1)和B(x2,y2)兩者相似度為距離dist(A,B),可通過歐式距離公式計算,如式(4)所示.三維空間,點A′(x1,y1,z1)和B′(x2,y2,z2)兩者相似度為距離dist(A′,B′),歐式距離計算如式(5)所示.128 維向量空間上兩點A′′(x11,x12,x13,···,x1(128))和B′′(x21,x22,x23,···,x2(128))的值,如式(6)所示.


圖8 空間歐氏距離示意圖
本文采用的人臉識別技術是使用殘差神經網絡模型將人臉圖像映射為128 維特征向量,計算特征向量間的歐式距離,進而比較人臉圖像的相似度.經過實際驗證,本文設置人臉特征匹配閾值為0.5,如果兩個特征向量的歐式距離小于給定的閾值0.5,則判斷兩幅人臉圖像為相同對象,反之則為不同對象.與上述深度學習人臉識別方法相比,該方法的網絡結構不受數據集影響,也不需要人為地統計選擇適合地中間層和特征度量方法.
本實驗的硬件支持是具有Intel(R)Core(TM)i7-8700 型號的CPU 和NVIDIA GTX2080Ti 顯卡支持的計算機,用來處理人臉識別算法中的提取人臉特征點操作,攝像頭使用TL-IPC42A-4,分辨率為1080 P,采集頻率15 幀/秒.本實驗使用了Qt 5.10.1 軟件,輔助環境為CUDA v10.0,OpenCV 3.4.0.
本文使用CeleA (CelebFaces Attribute,名人人臉屬性數據集)數據集進行實驗,該數據集包含了已做好特征標記的202 599 張圖片.部分數據集圖片如圖9所示.

圖9 CeleA 部分人臉圖像
3.2.1 基于GrabCut 的ROI 提取實驗
輸入待識別人臉圖像,經過圖像預處理算法GrabCut處理后如圖10所示.精準提取人臉前景區域,為提升人臉識別的算法精度作了鋪墊,系統采用基于GrabCut的ROI 提取算法有明顯的優勢,優勢體現在兩方面,人臉識別精度和計算效率.實驗結果如表1和表2所示,在表2中,輸入視頻的幀率15 幀/s,每隔30 幀識別一次.

圖10 圖像預處理實驗結果圖

表1 人臉特征距離匹配值

表2 針對ROI 算法系統耗時對比
表1中分別給出了在使用ROI 提取算法和未使用ROI 提取算法時姓名為000004 的人與數據庫中的人進行人臉特征距離匹配的結果,即人臉識別結果,最后給出了使用該提取算法對圖像做預處理比未使用該算法時的人臉識別精度提高百分比值,當000004 號人與數據庫中202 599 進行人臉特征距離匹配時,精度提高了5.4602%,結果表明基于GrabCut 的ROI 提取算法在一定程度上提高了人臉識別的精度.
表2是分別計算了使用ROI 算法在客戶端和服務端的影響,在客戶端中主要測試了ROI 提取算法的耗時,與客戶端總耗時進行了比對,實驗結果如表2中t/T所示,其中t表示ROI 提取算法耗時,T表示客戶端總耗時,當視頻1 輸入系統時,ROI 提取算法耗時僅占客戶端總耗時的12.75%,結果表明采用基于GrabCut的ROI 提取算法在客戶端耗時比例不大,并不是影響系統計算效率的主要因素;在服務端對提取人臉特征點的計算效率進行了測試,在系統中,由于采用基于GrabCut 的ROI 提取算法主要是服務于服務端的提取特征點操作,所以實驗對系統在沒有使用ROI 提取算法時服務端提取特征點的耗時,和系統使用ROI 提取算法進行了耗時對比,計算出了使用ROI 提取算法對提取人臉特征點的計算效率提高的百分比,計算結果如表2中(T'–t')/T'所示,其中t'表示系統采用ROI 提取算法服務端耗時,T'表示系統未采用ROI 提取算法時服務端的耗時,當視頻1 輸入系統進行測試時,系統使用ROI 提取算法時提取人臉特征點的計算效率提高了74.52%,結果表明該ROI 提取算法確實有效提升了系統中提取人臉特征點的計算效率.
3.2.2 基于ResNet 的人臉識別實驗
已有人臉數據庫如圖11所示,其中姓名為左上角數字,人臉圖像以及人臉特征值如圖所示,并且在數據庫中采用通用唯一識別碼UUID (Universally Unique IDentifier)來對樣本進行編號,人臉圖像及人臉特征值均用二進制數據表示以碼流的形式在前后端交互式系統中傳遞信息.

圖11 已知人臉數據庫樣本示意
本實驗選取了CeleA 中的202 599 張圖片,進行大樣本測試的結果部分示意圖如圖12所示,圖內小框即為人臉的68 個特征點區域,下方字體所表示的是識別結果,上方字體則代表了已有人臉數據庫的本人身份.若兩個表示相同,即代表識別正確,反之則代表識別錯誤.就姓名為000004 的人而言,與已知人臉數據庫特征值比對結果如表1所示,其中j表示已知人臉數據庫的人臉姓名,i=000004 表示待識別人臉正確識別結果的姓名應為000004,判斷的條件為在該列中找最小數值,即為識別本人,數值計算公式如式(6).

圖12 大樣本人臉識別測試結果
實驗中判斷系統人臉識別算法的優劣,不僅需要精準率,即人臉識別正確的結果占識別結果的比例,同時需要考慮召回率,即人臉識別正確的情況占本身系統輸入中正確情況的比例,表3給出了精準率和召回率評判的4 個參數TP(True Positive),FP(False Positive),FN(False Negative)和TN(True Negative),精準率P(Precision)和召回率R(Recall)的計算公式如式(7)和式(8)所示.


表3 評判參數
表4是針對人臉識別算法的評判標準,評判指標包括,已知人臉數據庫的圖像總數,即樣本總數,人臉識別測試結果精準率,召回率以及單幀圖像識別平均耗時.由表4可知,在已知的具備人臉不同表情、不同背景、不同光照條件下的人臉數據庫中,通過實驗結合式(7)和式(8)計算可得,在20 萬余個樣本的測試中,識別精準率高達99.84%,召回率達94.13%,該結果說明了本文的人臉識別算法具有較高的識別精度,同時極大地減少了誤判、漏判等情況.其中由于存在部分嚴重遮擋的圖像,導致仍有部分未能正確識別,同時單幀圖像識別平均耗時達到0.067 s,實時性很高.

表4 人臉識別算法評判結果
基于前后端交互的人臉識別系統通過分別將人臉識別核心算法布置在服務端和客戶端中,其中服務端進行提取特征點,客戶端進行特征點距離匹配,如表5所示,分別對交互系統和非交互系統分別進行測試,同時選用了5 個視頻進行測試來驗證系統的各項處理耗時.
在表5中,輸入視頻的幀率15 幀/s,每隔30 幀識別一次,作為該連續30 幀的人臉識別結果,前后端交互式系統是將人臉識別算法中的提取特征點和特征點距離匹配拆分在兩端并發進行,而非交互式系統整個系統流程并未拆分.從表中交互式系統和非交互式系統的系統總耗時和平均耗時2.0147 幀/s 和2.5409 幀/s來看,明顯交互式系統的要高速.交互式系統中的傳輸是在局域網內通過二進制形式傳輸,耗時可忽略不計,證明傳輸的碼流以及圖像預處理操作起到了作用.系統提高了網絡的傳輸速率,首先,系統采用的GrabCut算法提取人臉ROI 區域,減少了系統輸入圖像中的冗余和干擾信息;其次,將人臉識別算法中的人臉特征提取和人臉特征匹配分布于服務端和客戶端,均衡了服務端和客戶端兩端的網絡以及計算壓力;最后,在本系統客戶端、數據庫、服務端進行數據傳輸時,圖片均經過壓縮,使得數據能夠快速地通過網絡傳輸.可見本系統有好的人臉識別效果和較快的系統處理速度.

表5 系統測試結果
本文提出了一種基于前后端交互的人臉識別系統,該系統提出了一種基于GrabCut 的ROI 提取算法對視頻幀進行預處理,實驗結果顯示可以精準地提取到ROI 區域,對輸入的待識別圖像幀進行提取人臉特征點和特征點距離匹配操作,不僅具有準確的人臉識別效果,而且減輕了網絡的壓力和計算機的荷載,傳輸過程采用碼流形式,加快了系統的傳輸速率.整個系統既提升了人臉識別的精度和魯棒性,又提升了人臉識別系統的快速性.但目前發展的對于人臉識別特征提取以及相關的表情識別[15,16]、圖像預處理[17,18]、網絡的傳輸[19]等技術對整個系統的優化也有幫助,因此在保證較高的識別效果和較快的系統處理速度的條件下又要增加新的實時性功能是本文需要進一步研究的問題.