,
(上海工程技術(shù)大學(xué) 機(jī)械與汽車工程學(xué)院,上海 201820)
人工智能理論在過(guò)去的幾十年一直在不斷發(fā)展,但是由于計(jì)算機(jī)硬件的局限,特別是內(nèi)存和運(yùn)算速度的局限,使得很多理論成熟的理論缺少應(yīng)用。隨著計(jì)算機(jī)軟硬件迅速革新?lián)Q代,人工智能也發(fā)展出了很多的應(yīng)用技術(shù),尤其是模式識(shí)別領(lǐng)域的應(yīng)用,具體包括行人檢測(cè)、人臉識(shí)別、表情識(shí)別和語(yǔ)音識(shí)別等[1-3]。這些應(yīng)用的目的是希望設(shè)計(jì)出像人一樣從經(jīng)驗(yàn)中學(xué)習(xí),并做出決策的機(jī)器,從而代替人的智慧完成一些特定的工作。而在諸多經(jīng)驗(yàn)中,人臉表情經(jīng)驗(yàn)對(duì)判斷人的心理活動(dòng),體察人的喜怒哀樂(lè)具有重要意義,如何讓機(jī)器學(xué)習(xí)識(shí)別人臉表情,是人工智能研究領(lǐng)域的一個(gè)熱門話題[4]。表情識(shí)別研究的對(duì)象是包含人臉的圖片和視頻(視頻也是由時(shí)間上連續(xù)的圖片組成),所以如何確定人臉在圖片中的位置,成為表情識(shí)別的第一步,也即如何實(shí)現(xiàn)人臉檢測(cè)是表情識(shí)別的第一步(同時(shí)也是關(guān)鍵的一步)。本文就這一問(wèn)題給出了一種解決方案。
查閱大量文獻(xiàn)后,發(fā)現(xiàn)目前比較可靠的人臉檢測(cè)算法主要包括如下四類:
1)基于特征提取和決策樹的級(jí)聯(lián)分類器(Adaboost)算法。
2)基于優(yōu)化理論、泛化理論和核函數(shù)理論的支持向量機(jī)(Support Vector Machine,SVM)算法。
3)基于貝葉斯先驗(yàn)?zāi)P偷臉闼刎惾~斯模型。
4)基于特征提取和權(quán)值更新的神經(jīng)網(wǎng)絡(luò)算法。
其中神經(jīng)網(wǎng)絡(luò)(如BP神經(jīng)網(wǎng)絡(luò)、CNN卷積神經(jīng)網(wǎng)絡(luò)、RNN循環(huán)神經(jīng)網(wǎng)絡(luò)等)作為人工智能領(lǐng)域劃時(shí)代的產(chǎn)物,參考人和動(dòng)物的細(xì)胞感知外物的原理建立起神經(jīng)網(wǎng)絡(luò)細(xì)胞模型,實(shí)現(xiàn)了數(shù)據(jù)并行運(yùn)算和網(wǎng)絡(luò)結(jié)構(gòu)的自適應(yīng)、自學(xué)習(xí),具有訓(xùn)練快速,泛化性良好的優(yōu)點(diǎn),但是也有容易陷入局部最優(yōu)的缺點(diǎn)[5];Adaboost算法采用級(jí)聯(lián)的決策樹結(jié)構(gòu),具有泛化性好,速度快,命中率高的優(yōu)點(diǎn),但是需要大量樣本提高泛化性,提取的特征值也數(shù)量驚人,所以需要消耗大量?jī)?nèi)存,不適合移植到小型設(shè)備[6];而貝葉斯理論需要建立數(shù)據(jù)的先驗(yàn)概率分布模型,模型建立簡(jiǎn)單,但是對(duì)非典型樣本適應(yīng)性不夠好[7];SVM支持向量機(jī)算法用到了優(yōu)化理論、泛化理論和核函數(shù)知識(shí),其模型是一個(gè)分隔所有數(shù)據(jù)點(diǎn)的超平面,所有一定有全局最優(yōu)解,并且因?yàn)橹恍枰揽空紭颖緮?shù)量少數(shù)的支持向量維持超平面位置的特點(diǎn),不需要大量樣本,且泛化性好,缺點(diǎn)是算法設(shè)計(jì)較復(fù)雜,這一點(diǎn)可由序貫最小優(yōu)化(Sequential Minimal Optimization,SMO)算法來(lái)解決[8-11]。
基于對(duì)上述各算法優(yōu)缺點(diǎn)的考慮和本身作者知識(shí)的掌握情況,選擇SVM支持向量機(jī)作為本文所論述的人臉檢測(cè)算法。
而除了對(duì)人臉檢測(cè)算法本身的選擇會(huì)影響算法消耗的時(shí)間和空間大小,對(duì)于數(shù)據(jù)的保存和使用如果設(shè)計(jì)的好可也以大大節(jié)省算法時(shí)間和空間,因此本文還設(shè)計(jì)了結(jié)合奇異值分解(Singular value decomposition,SVD)的主成分分析( Principal Component Analysis,PCA)作為第一環(huán)節(jié)來(lái)實(shí)現(xiàn)數(shù)據(jù)的降維[12]。
在第二環(huán)節(jié),降維后的數(shù)據(jù)經(jīng)SVM支持向量機(jī)訓(xùn)練后保存為分類器數(shù)據(jù)結(jié)構(gòu)。
到了第三環(huán)節(jié),為了減少分類器的負(fù)擔(dān),提高效率,考慮到膚色在YCbCr顏色空間的分布具有統(tǒng)計(jì)學(xué)特性,設(shè)計(jì)了一種膚色高斯概率模型,用以在圖片上提取膚色感興趣域,這樣就大大縮小了分類器的篩選范圍[13]。
第四環(huán)節(jié)使用分類器對(duì)膚色感興趣域進(jìn)行分類,提取出人臉域,這一環(huán)節(jié)可能提取出多個(gè)人臉域,所以設(shè)計(jì)并查集算法合并同類域,最后得到唯一的人臉域[14]。
主成分分析( Principal Component Analysis,PCA)是一種分析數(shù)據(jù)在某空間分布的特征方向,并提取主要方向,用數(shù)據(jù)在主要方向上的投影來(lái)代替它們本身,實(shí)現(xiàn)數(shù)據(jù)降維的技術(shù),可以減少數(shù)據(jù)所需存儲(chǔ)空間。
用于訓(xùn)練的樣本圖片是彩色圖片,包括紅、綠、藍(lán)(R、G、B)三個(gè)通道的數(shù)據(jù)。灰度圖反映的是圖片的亮度信息,僅包含灰度(Y)單通道的數(shù)據(jù)。
本文設(shè)定樣本矩陣包括個(gè)灰度化后的圖片樣本,每張圖片大小都是N=24*24,那么樣本矩陣可以表示為:
X=[x1,x2,…,xm]T,M=100
(2)
由于樣本矩陣的行和列一般不相等,所以對(duì)樣本矩陣進(jìn)行分解需要使用奇異值分解。奇異值分解(singular value decomposition,SVD)作為特征分解在任意矩陣上的推廣,可以對(duì)任意矩陣進(jìn)行分解,定義如下:
X=UΣVT
(3)
其中:U和V是酉矩陣,即UUT=I,VVT=I。矩陣U是U空間的M×M階標(biāo)準(zhǔn)正交基向量矩陣,矩陣V是V空間的N×N階標(biāo)準(zhǔn)正交基向量矩陣,∑是M×N階半正定對(duì)角矩陣,除主對(duì)角元素外其余為0,主對(duì)角元素叫做奇異值r=min(M,N),數(shù)量為。
由于:
XXT=(U∑VT)(U∑VT)T
(4)
化簡(jiǎn)為:
XXT=U∑2UT
(5)
所以U矩陣可通過(guò)求特征向量得到,同理:
XTX=V∑2VT
(6)
所以V矩陣可通過(guò)對(duì)XTX求特征向量得到,而∑矩陣可通過(guò)對(duì)XXT或XTX的特征值開平方根得到。
PCA主成分分析通過(guò)對(duì)SVD分解得到的奇異值在主對(duì)角線上按大到小排序,舍棄較小的值,剩下的奇異值對(duì)應(yīng)的特征向量也按順序組成矩陣。設(shè)XXT或XTX的特征值為λi,奇異值σi計(jì)算公式為:
(7)
且σ1>σ2>…>σr,定義數(shù)據(jù)壓縮率
(8)
σ1,σ2,…σl和對(duì)應(yīng)的特征向量v1,v2,…,vl即樣本數(shù)據(jù)的主成分。η一般取0.6~0.9,η越低表示數(shù)據(jù)壓縮率越低,降維效果越好,同時(shí)數(shù)據(jù)信息丟失的就越多。
變化公式(3),得到:
XV=U∑
(9)
V和∑只保留主成分,于是有:
X[v1,v2,…,vl]=U∑l
(10)
令X'=Xvi(i=1,2,…,L)為X在特征向量vi上的映射矩陣,代替原始數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),維度為M×l(l 支持向量機(jī)(Support Vector Machine,SVM)由Broser,Guyon和Vapnik發(fā)明。支持向量機(jī)的特點(diǎn)是產(chǎn)生分類超平面使數(shù)據(jù)間隔最大化,使用了核函數(shù),有全局最優(yōu)解,解具有稀疏性,以及通過(guò)泛化誤差界來(lái)控制樣本容量。本文使用一種軟間隔SVM向量機(jī),并使用序貫最小算法(Sequential Minimal Optimization,SMO)優(yōu)化[11]。 對(duì)于數(shù)據(jù)維度為N的樣本,可能存在線性不可分的問(wèn)題,因此也就無(wú)法找到可以正確分離兩類數(shù)據(jù)的超平面。于是利用核函數(shù)將數(shù)據(jù)的點(diǎn)積從低維空間映射到高維空間,從而實(shí)現(xiàn)高維空間的線性可分,再利用線性可分的原理進(jìn)行計(jì)算。 這里使用高斯徑向基核函數(shù): (11) 高斯徑向基核函數(shù)可以看成一個(gè)以xj為中心的概率域,代表xi與xj的相似度,xj即所謂的支持向量,需要通過(guò)對(duì)目標(biāo)函數(shù)進(jìn)行優(yōu)化求解得到。后文的xixj統(tǒng)一用K(xi,xj)或Kij代替。 超平面(The hyperplane)用于分隔兩類數(shù)據(jù),維度總比數(shù)據(jù)空間低一維。假如數(shù)據(jù)線性可分,那么可由許多個(gè)超平面按圖1分開。 圖1 超平面將數(shù)據(jù)分開 數(shù)據(jù)點(diǎn)到超平面的位置關(guān)系如圖2所示。 圖2 點(diǎn)到超平面的向量表示 其中: (12) (13) 得到幾何間隔和函數(shù)間隔的關(guān)系: (14) 支持向量機(jī)的目的就是最大程度地分開兩類數(shù)據(jù),所以目標(biāo)就是最大化數(shù)據(jù)集中所有點(diǎn)到超平面的幾何間隔中的最小間隔,即: (15) 并且有約束條件: (16) (17) Subjecttoyi(wTxi+b)≥1,i=1,2,…,M 為了提高泛化性,允許數(shù)據(jù)點(diǎn)在一定程度上違反間隔約束,給出松弛變量ξi(ζi≥0,),并設(shè)不等式約束函數(shù): gi(w)=1-yi(ωTxi+b)-ξi≤0,i=1,2,…,M (18) 為了將等式約束和不等式約束加入優(yōu)化目標(biāo),設(shè)定原問(wèn)題的拉格朗日函數(shù): (19) 對(duì)各個(gè)變量求偏導(dǎo),然后加上約束條件,就是優(yōu)化問(wèn)題有最優(yōu)解的Karushi-Kuhn-Tucker(KKT)條件: (20) (21) (22) (23) (24) gi(w*)≤0 (25) (26) (27) (28) i=1,2,…,M (29) 其中帶*的量表示問(wèn)題的最優(yōu)解對(duì)應(yīng)的參數(shù)值。 式(19)中αi和ri作為拉格朗日乘子同時(shí)也表示最優(yōu)值對(duì)約束的靈敏度。C代表安全系數(shù),作用是防止松弛變量對(duì)目標(biāo)函數(shù)的影響過(guò)大,同時(shí)也限制了離群點(diǎn)的αi,即式(26)(稱為盒約束,離群點(diǎn)的αi通常很大,需要加以約束,同時(shí)也保證了可行域的界,即原問(wèn)題總有非空可行域)。式(26)由式(21)和式(27)得到。 得到原目標(biāo)問(wèn)題和對(duì)偶問(wèn)題的關(guān)系: (30) (31) i=1,2,…,M i=1,2,…,M i=1,2,…,M 求出了最優(yōu)的α*,接著就可以求出最優(yōu)的ω*、b*、ξ*和r*。 常數(shù) (33) 將式(33)帶入式(31)得到: (34) η=K11+K22-2K12 (35) i=1,2 (36) 圖3 對(duì)變量α2的約束 當(dāng)y1≠y2時(shí): (37) (38) 當(dāng)y1=y2時(shí): (39) (40) 由: 可知當(dāng)K11+K22-2K12>0,W(α2)是下凹函數(shù),更新α2: (41) 當(dāng)K11+K22-2K12≤0時(shí)(當(dāng)K11+K22-2K12<0時(shí)W(α2)是上凸函數(shù),當(dāng)K11+K22-2K12=0時(shí)W(α2)是線性函數(shù)),更新α2: (42) 其中: sLL1K12 (43) sHH1K12 (44) (45) (46) (47) (48) 根據(jù)支持向量(即α1在0到C之間的向量xi)的性質(zhì)1=yi(ωTxi+b),得到第一個(gè)b的計(jì)算公式: (49) 之后的bnew按下式計(jì)算: (50) (51) 關(guān)于α1和α2的選取采用啟發(fā)式原則,α1的選擇作為外循環(huán),α2的選擇作為內(nèi)循環(huán),一旦外循環(huán)選到符合條件的α1,即進(jìn)入內(nèi)循環(huán)選擇符合條件的α2,然后進(jìn)行優(yōu)化。 外循環(huán)流程: 1)搜索所有樣本,選取不滿足KKT條件的樣本參數(shù)αi作為α1。 2)搜索所有參數(shù)αi滿足0<αi 不斷重復(fù)1)和2)直到所有αi滿足KKT條件內(nèi)循環(huán)流程: 1)搜索所有樣本,啟發(fā)式地尋找使|E1-E2|最大的α2。 2)隨機(jī)選擇參數(shù)αi滿足0<αi 3)搜索所有樣本,選擇不滿足KKT條件的樣本參數(shù)αi作為α2。 4)如果找不到合適的α2,就跳出內(nèi)循環(huán),尋找新的α1。 不斷更新一對(duì)對(duì)α1和α2,并更新ω和b。直到所有樣本都滿足KKT條件,支持向量機(jī)訓(xùn)練完畢。 將M個(gè)訓(xùn)練樣本經(jīng)PCA主成分分析壓縮后輸入支持向量機(jī)訓(xùn)練,這里程序代碼使用C#語(yǔ)言編寫。輸出分類器數(shù)據(jù)結(jié)構(gòu)并保存成文本格式,如圖4所示。 圖4 SVM數(shù)據(jù)結(jié)構(gòu) 攝像頭采集測(cè)試圖片的大小統(tǒng)一壓縮到300*168。彩色圖轉(zhuǎn)化灰度圖的公式如下: Y=0.299*R+0.578*G+0.114*B (52) R=G=B=Y (53) 原圖經(jīng)灰度化后由于拍攝時(shí)光線不好,圖片較暗,灰度值集中在比較小的范圍,造成數(shù)據(jù)稀疏性不夠,所以使用光補(bǔ)償算法擴(kuò)展灰度值的尺度: (54) (55) (56) 得到光補(bǔ)償后的灰度圖如圖5所示。 圖5 光補(bǔ)償灰度圖 為了縮小分類器篩選的范圍嗎,使用膚色高斯模型進(jìn)行人臉感興趣域的粗取。由于膚色在YCbCr空間對(duì)光照不敏感,所以將RGB空間轉(zhuǎn)化到Y(jié)CbCr空間,轉(zhuǎn)換公式如下: Y=0.299*R+0.587*G+0.114*B (57) Cb=-0.1678*R-0.3313*G+0.5*B+128 (58) Cr=0.5*R-0.4187*G-0.0813*B+128 (59) 定義Cb和Cr的協(xié)方差矩陣為: (60) 其中: (61) (62) (63) (64) 得到膚色高斯模型的計(jì)算式: P(Cr,Cb)=exp[-0.5(x-Mean)TC-1(x-Mean)] (65) C=E((x-Mean)(x-Mean)T) (66) x=[Cr,Cb]T (67) Mean=E(x) (68) 采集100個(gè)膚色圖片樣本經(jīng)過(guò)訓(xùn)練后得到膚色高斯模型數(shù)據(jù)結(jié)構(gòu)并保存為文本,如圖6所示。 圖6 膚色高斯模型數(shù)據(jù)結(jié)構(gòu) 對(duì)P(Cr,Cb)≥0.6的點(diǎn)灰度值置255,P(Cr,Cb)<0.6對(duì)的點(diǎn)灰度值置0得到由膚色概率分割的二值化圖片如圖7所示。 圖7 膚色概率分割二值化圖 圖8 掃描框掃描過(guò)程 使用搜索框掃描圖片,搜索框具有cell和size屬性,cell代表最小單位邊長(zhǎng)(像素點(diǎn)數(shù)),size代表搜索框邊長(zhǎng)(cell數(shù))。搜索策略是給size設(shè)置初始start值和終止end值。在size從start到end的增長(zhǎng)過(guò)程中,每當(dāng)size加1之前,用搜索框掃描一遍圖片,搜索策略如下:在移動(dòng)搜索框之前,將當(dāng)前框內(nèi)所有點(diǎn)的P(Cr,Cb)值累加求均值: (69) 如果: (70) 則將該搜索框保存為人臉候選框,保存的內(nèi)容包括搜索框的長(zhǎng)、寬和位置坐標(biāo)。這里代表膚色概率閾值δ(一般取δ=0.6)。 圖9 候選人臉框 使用訓(xùn)練好的SVM分類器對(duì)候選人臉框進(jìn)行篩選,保留輸出結(jié)果是“人臉”的候選框,最后,定義相似函數(shù)將相鄰框歸為為一個(gè)集合,取成員最多的集合求框長(zhǎng)、寬和位置坐標(biāo)的均值,得到唯一人臉框: 圖10 合并同類框結(jié)果 本文使用的人臉檢測(cè)算法,在C#平臺(tái)中對(duì)文中所有理論進(jìn)行程序驗(yàn)證和測(cè)試,根據(jù)拍攝的300幅測(cè)試圖片的結(jié)果總結(jié)如下: 1)使用PCA主成分分析法對(duì)樣本進(jìn)行壓縮,提高了支持向量機(jī)訓(xùn)練速度。 2)支持向量機(jī)引入SMO優(yōu)化算法,實(shí)現(xiàn)對(duì)非線性數(shù)據(jù)分隔面參數(shù)的快速訓(xùn)練,并使得算法在程序上更容易實(shí)現(xiàn)。編譯通過(guò)的程序根據(jù)樣本訓(xùn)練得到的分類器數(shù)據(jù)結(jié)構(gòu)使用文本保存到檢測(cè)程序根目錄,方便檢測(cè)時(shí)調(diào)用。 3)使用膚色高斯概率模型粗取人臉感興趣域,大大縮小分類器篩選范圍,提高了檢測(cè)速度。2 支持向量機(jī)原理
2.1 核函數(shù)實(shí)現(xiàn)數(shù)據(jù)線性可分
2.2 優(yōu)化目標(biāo)的得到
2.3 SMO優(yōu)化算法
3 人臉檢測(cè)的實(shí)現(xiàn)
3.1 訓(xùn)練支持向量機(jī)分類器
3.2 高斯膚色模型粗取人臉感興趣域
4 結(jié)論