董林鷺,趙良軍,楊明中,林國軍,石小仕,何 嵐
(1.四川輕化工大學(xué) 自動(dòng)化與信息工程學(xué)院 人工智能四川省重點(diǎn)實(shí)驗(yàn)室,四川 自貢 643000;2.四川輕化工大學(xué) 企業(yè)信息化與物聯(lián)網(wǎng)測控技術(shù)四川省高校重點(diǎn)實(shí)驗(yàn)室,四川 自貢 643000)
隨著5G網(wǎng)絡(luò)的普及,人們利用人工智能服務(wù)社會(huì)的步伐隨之加快。其中,人臉識別的應(yīng)用場合變得普遍和友好。但是在環(huán)境復(fù)雜多變的實(shí)際應(yīng)用中,計(jì)算機(jī)要想快速識別出背景復(fù)雜且人流量較大的不同場景下大批量的人臉信息,預(yù)先排除干擾鎖定人臉是識別過程中非常重要的一步[1-3]。因此,人臉定位的研究能提高人臉識別精度和加快識別速度,成為眾多學(xué)者研究的熱點(diǎn)。
目前涌現(xiàn)出許多的人臉定位算法,較為成熟的方法有模板匹配法、SVM模型、AdaBoost算法[4-5]、深度學(xué)習(xí)[6]以及膚色檢測[7],但這些方法都存在一定缺陷。如基于支持向量機(jī)(support vector machine,SVM)的人臉定位算法,其中翟社平提出利用局部二元模式(LBP)對圖像進(jìn)行特征提取,再利用SVM對其進(jìn)行分類達(dá)到人臉定位的目的,但是該算法隨著分塊數(shù)的不斷增加,提取到的特征向量的維數(shù)也隨之增加,出現(xiàn)了“維數(shù)災(zāi)難”,導(dǎo)致算法訓(xùn)練階段的時(shí)間變長[8]。
利用深度學(xué)習(xí)方法進(jìn)行人臉定位,張衡提出基于級聯(lián)卷積網(wǎng)絡(luò)的人臉特征點(diǎn)檢測,該方法根據(jù)網(wǎng)絡(luò)預(yù)測的特征點(diǎn)位置,對局部區(qū)域進(jìn)行裁剪,然后再對局部區(qū)域預(yù)測單個(gè)特征點(diǎn),完成人臉的定位檢測,但該方法對訓(xùn)練人臉的數(shù)量要求較高,當(dāng)獲得的特征點(diǎn)的數(shù)量較少時(shí),造成此模型的應(yīng)用范圍較小[9]。
模板匹配法是最原始的圖像處理方法,用人臉的形態(tài)模板與圖像中的人臉進(jìn)行匹配,雖運(yùn)算速度較快,但對于復(fù)雜多變的圖像該方法將失去人臉定位的功能。對于膚色定位檢測,楊明中提出將彩色圖像轉(zhuǎn)換為YCbCr和HSI空間圖像,對變化后的色域進(jìn)行閾值設(shè)定,提取膚色達(dá)到人臉定位的目的,但是該方法同樣有著較高的漏檢率[10-11]。
沈翔提出基于膚色與改進(jìn)Adaboost算法的人臉檢測,利用雙閾值的權(quán)重更新方式避免了分類器訓(xùn)練過程中可能出現(xiàn)的過擬合現(xiàn)象;人臉檢測時(shí)利用膚色的聚類性,將檢測到的膚色區(qū)域作為Adaboost分類器的搜索候選區(qū)域達(dá)到人臉定位目的[12-13]。
Viola-Jones(VJ)算法是由學(xué)者Paul Viola和Michael Jones共同提出的,相比于上述方法VJ算法有著定位速度快的優(yōu)點(diǎn),在人臉檢測算法中具有重要的地位。該算法的提出標(biāo)志著機(jī)器視覺研究成果具備了投入實(shí)際應(yīng)用的能力[14-15],但該算法只能檢測正面的人臉,對于側(cè)面人臉檢測的魯棒性較差,同時(shí)對于多人的圖像(畢業(yè)照)或人臉皮膚被污染(礦工人臉)的人臉檢測漏檢率較高。為了提升VJ算法的魯棒性,重點(diǎn)研究了VJ算法的缺陷并對其進(jìn)行改進(jìn)。
VJ算法主要分為三部分。第一部分,采用積分圖像的方法快速提取圖像的特征信息;第二部分,利用弱分類器對提取的特征進(jìn)行分類,減少計(jì)算復(fù)雜度;第三部分,再采用級聯(lián)分類器進(jìn)一步分類,提高人臉定位的精確度。
設(shè)圖像中的像素點(diǎn)為(x,y),將原圖像轉(zhuǎn)化為積分圖,原理是圖像中每一像素點(diǎn)(x,y)的和都由該點(diǎn)左上角所有像素的值相加后的和構(gòu)成。滿足表達(dá)式:
(1)
其中,r(x',y')表示原圖像素值,rr(x,y)表示積分后得到的圖像像素值。
灰色區(qū)域S的和滿足表達(dá)式:
S=D-B-C+A
(2)
求和的圖解過程如圖1所示。
圖1 和計(jì)算示意圖
對灰度區(qū)域S進(jìn)行積分獲得該圖片的特征,滿足表達(dá)式:
(3)
其中,wi表示灰度區(qū)域S的權(quán)重,wiRctsum(S)表示灰度區(qū)域的圖像像素積分,N表示灰度區(qū)域S的數(shù)量。
VJ算法為了提升分類速度,將多個(gè)弱分類器進(jìn)行加權(quán)組合構(gòu)成一個(gè)強(qiáng)分類器,其中弱分類器滿足表達(dá)式:
(4)
其中,s表示窗口大小為24×24的像素矩陣,f表示特征,p表示極性,θ表示分類器判斷矩陣s的歸類屬性。
(5)
根據(jù)式(5)重新定義權(quán)重,滿足表達(dá)式:
(6)
則強(qiáng)分類器表達(dá)式滿足:
(7)
級聯(lián)分類器是由多個(gè)強(qiáng)分類器串聯(lián)組成的多級分類器,每一級的工作就是判斷上一級被確定為人臉的區(qū)域是人臉還是非人臉,若是人臉就傳遞給下一級繼續(xù)判斷,若是非人臉就摒棄。因此,一幅圖像被傳遞的級數(shù)越多,是人臉的可能性就越大。該過程如圖2所示。
圖2 級聯(lián)分類器示意圖
VJ算法對人臉的偏角敏感性較大,當(dāng)人臉傾斜時(shí)會(huì)使VJ算法無法識別出人臉位置,為了解決該缺陷,該文通過實(shí)驗(yàn)的方法確定出人臉左偏角度和右偏角度對算法定位出人臉性能的影響。
為了驗(yàn)證偏角對VJ算法人臉定位精確度有影響,第一個(gè)實(shí)驗(yàn)如圖3所示,將一位正臉的人臉進(jìn)行偏轉(zhuǎn)角度處理,統(tǒng)一到同一圖像中讓VJ算法進(jìn)行人臉定位。第二個(gè)實(shí)驗(yàn)如圖4所示,將有偏轉(zhuǎn)的人臉進(jìn)行校正處理,統(tǒng)一到同一圖像中讓VJ算法進(jìn)行人臉定位。第三個(gè)實(shí)驗(yàn)如圖5所示,將不同人臉(包含了有偏轉(zhuǎn)角的人臉和正臉的人臉),讓VJ算法進(jìn)行人臉定位,同時(shí)選用的圖像均為標(biāo)準(zhǔn)的測試像。
圖3 同一人原圖正臉與調(diào)整偏轉(zhuǎn)角的
圖4 同一人原圖偏角與矯正后人臉檢測對比圖
分析圖3~圖5,無論同一人的人臉發(fā)生了偏角還是對有偏角的人臉矯正,VJ算法只能識別正面的人臉。實(shí)驗(yàn)驗(yàn)證了VJ算法對有偏角的人臉定位魯棒性較差。同時(shí),證實(shí)了本文猜想,調(diào)整偏角臉的角度能提高VJ算法人臉定位的性能。
圖5 不同人包含正臉與偏角臉的人臉檢測對比圖
為了能使算法自適應(yīng)調(diào)整人臉的偏角度,首先得確認(rèn)VJ算法能定位人臉與不能定位人臉的角度區(qū)間。采用標(biāo)準(zhǔn)測試圖正面人臉進(jìn)行角度偏差實(shí)驗(yàn),定義正面人臉α=90°,左偏α=45°~89°,右偏α=91°~130°。將所有圖像統(tǒng)一到一幅圖像中讓VJ算法同時(shí)進(jìn)行人臉檢測。實(shí)驗(yàn)結(jié)果如圖6所示。
圖6 VJ算法有效檢測角度實(shí)驗(yàn)結(jié)果圖
分析圖6,從實(shí)驗(yàn)結(jié)果可得,VJ算法的有效人臉檢測偏角θ在70°~115°之間。因此,文中算法的思想是,首先將圖像從RGB模式轉(zhuǎn)化為YCbCr模式,利用色域閾值過濾掉非皮膚區(qū)域,再在過濾后的基礎(chǔ)上進(jìn)行人臉檢測,排除檢測到的人臉,對候選區(qū)域進(jìn)行形態(tài)學(xué)篩選排除手臂等膚色的干擾,最后對剩下的區(qū)域進(jìn)行角度矯正,達(dá)到提升VJ算法性能的目的。
膚色轉(zhuǎn)化模型算法[7]滿足表達(dá)式:
(8)
再根據(jù)YCbCr模式下皮膚的顏色像素區(qū)間在90≤Cb≤130和130≤Cr≤170來設(shè)定色域閾值,濾掉大部分非皮膚顏色的背景如圖7(b)所示,再利用VJ算法對圖7(b)進(jìn)行人臉檢測,檢測結(jié)果如圖7(c)所示,最后利用形態(tài)學(xué)處理方法進(jìn)一步去干擾,同時(shí)去掉已經(jīng)檢測出的人臉區(qū)域,得到疑似人臉區(qū)域如圖7(d)所示。
圖7 可疑人臉定位過程圖
在獲得圖7(d)后,利用矩形框框出圖中所有的聯(lián)通區(qū)域,各自在圖中形成一幅獨(dú)立的圖像,如圖8所示。
對獨(dú)立圖像進(jìn)行圖像旋轉(zhuǎn)處理達(dá)到人臉矯正的目的。如圖9所示,對圖8中某一候選可疑人臉區(qū)域進(jìn)行旋轉(zhuǎn)。以標(biāo)注框內(nèi)圖像中心為旋轉(zhuǎn)中心0建立坐標(biāo)系并標(biāo)出x軸和y軸,設(shè)點(diǎn)圖像中某像素點(diǎn)f(x1,y1)經(jīng)過逆時(shí)針旋轉(zhuǎn)到f(x0,y0),旋轉(zhuǎn)角度為α,整個(gè)過程O點(diǎn)到待旋轉(zhuǎn)像素點(diǎn)f(x1,y1)的半徑距離r恒定且與x軸的夾角為β。
圖8 疑似聯(lián)通區(qū)域框圖
圖9 矯正示意圖
則點(diǎn)f(x,y)的表達(dá)式為:
(9)
點(diǎn)f(x1,y1)的表達(dá)式為:
(10)
將式(9)代入式(10)化解后滿足:
(11)
則圖像的矯正中左偏公式滿足:
(12)
同理,右偏公式滿足:
(13)
為了減少計(jì)算復(fù)雜度,通過實(shí)驗(yàn)結(jié)合實(shí)際,規(guī)定矯正的角度α的旋轉(zhuǎn)角度和旋轉(zhuǎn)方式。目的是為了達(dá)到算法的自適應(yīng)的性能。
對于旋轉(zhuǎn)角度α,根據(jù)圖5的有效偏角實(shí)驗(yàn)結(jié)合人臉偏角習(xí)慣分析,人臉在未被檢測出來的情況時(shí)其左偏角集中在45°到70°之間,右偏角集中在115°到135°之間。即左偏角差不能檢測的角度區(qū)間有35°,右偏角不能檢測的角度區(qū)間有20°。即矯正步驟如下:
(1)假設(shè)未矯正前人臉左偏,則對可疑人臉區(qū)域進(jìn)行矯正向右旋轉(zhuǎn)35°。因?yàn)椋偃缥闯C正之前人臉偏轉(zhuǎn)角為45°加上35°后矯正到80°,則人臉偏角在VJ算法的檢測角度范圍內(nèi)。如果未矯正之前人臉偏轉(zhuǎn)角為70°加上35°后矯正到105°,同樣矯正后的人臉在VJ算法的檢測角度范圍內(nèi)。
(2)若在步驟(1)下無法檢測到人臉,則考慮人臉未矯正前向右偏,對可疑人臉區(qū)域進(jìn)行矯正向左旋轉(zhuǎn)20°,因?yàn)?,?dāng)人臉在未矯正之前偏轉(zhuǎn)角為135°減去20°矯正到115度,則人臉偏角在VJ算法的檢測角度范圍內(nèi),如果未矯正之前人臉偏轉(zhuǎn)角為115°減去20°后矯正到95°,同樣矯正后的人臉在VJ算法的檢測角度范圍內(nèi)。
(3)如果前兩步都未能檢測出人臉,則直接結(jié)束矯正運(yùn)算,判定可疑區(qū)域?yàn)槭直?、背景等干擾區(qū)域。
為了驗(yàn)證文中算法的真實(shí)有效性,以MATLAB2016a編程,以2.60 GHz的英特爾處理器、內(nèi)存為8 GB的筆記本為平臺進(jìn)行實(shí)驗(yàn)仿真。實(shí)驗(yàn)中采用三個(gè)標(biāo)準(zhǔn)人臉檢測庫Faces、IMM和AFW進(jìn)行人臉檢測實(shí)驗(yàn)。同時(shí),利用VJ算法和文獻(xiàn)[10]算法與文中算法進(jìn)行對比。
實(shí)驗(yàn)結(jié)果如表1所示。
表1 不同算法檢測結(jié)果比較
文中算法對于有偏角人臉且背景復(fù)雜的人臉正檢率較VJ算法提高較10%,較文獻(xiàn)[10]算法提高6%。誤檢率對于Faces人臉庫文中算法較VJ算法降低13%,對于AFW人臉庫文中算法較VJ算法降低12%。實(shí)驗(yàn)結(jié)果表明,文中算法能有效提高正檢率,降低誤檢率,提高VJ算法的應(yīng)用性能。
總結(jié)了VJ算法的基本原理,并對VJ算法的偏角漏檢的角度進(jìn)行試驗(yàn),提出了一種改進(jìn)方法,對研究人臉檢測的學(xué)者具有一定的參考意義。同時(shí),該算法能有效提高多人圖像中人臉的檢測率,但還是存在漏檢與誤檢的情況。接下來將進(jìn)一步研究人臉檢測的特點(diǎn),提高人臉的檢測率,降低誤檢率。