王暢, 金璟璇, 金小峰
( 延邊大學(xué) 工學(xué)院, 吉林 延吉 133002 )
目前,基于視頻監(jiān)控的人臉識(shí)別系統(tǒng)被廣泛應(yīng)用在公共安全、交通管理等領(lǐng)域.但由于監(jiān)控視頻中往往存在大量低質(zhì)量的人臉圖像(模糊、人臉旋轉(zhuǎn)、遮擋、閉眼等),且視頻幀間存在很高的冗余度,因此若將這些圖像直接用于人臉識(shí)別就會(huì)降低人臉識(shí)別系統(tǒng)的準(zhǔn)確率,并增加系統(tǒng)的負(fù)擔(dān).因此,在進(jìn)行人臉識(shí)別前需要通過人臉圖像優(yōu)選方法去除低質(zhì)量的人臉圖像和降低視頻幀間的冗余度[1].人臉圖像優(yōu)選需要為每個(gè)人建立人臉數(shù)據(jù)集.目前,人臉數(shù)據(jù)集的生成方法主要分為基于人臉跟蹤的方法和基于人臉聚類的方法.
在人臉跟蹤方法研究中,李蕊崗等[1]提出了一種將Camshift方法與Kalman方法相結(jié)合的方法,但該算法在背景復(fù)雜或目標(biāo)被遮擋時(shí),魯棒性較差; Henriques等[2]提出了KCF算法,該算法引入方向梯度直方圖特征和背景信息,使算法的抗遮擋能力得到加強(qiáng),跟蹤更為穩(wěn)定,但遮擋后目標(biāo)丟失這一問題仍沒有得到很好的解決; Nam等[3]提出了基于CNN的MDNet跟蹤算法,該算法由于在追蹤過程中需要不斷更新模型,使得其追蹤效率較低,不適合多目標(biāo)的追蹤.在人臉聚類方法研究中,目前主要使用的方法有K-means聚類算法[4]、凝聚式聚類算法[5]、DBSCAN聚類算法[6]和Chinese whispers聚類算法[7].K-means聚類算法需要事先指定聚類數(shù)k, 且聚類結(jié)果受離群點(diǎn)的影響較大;凝聚式聚類算法具有較高的穩(wěn)定性,且聚類數(shù)目無需事先指定,但其時(shí)間復(fù)雜度較高; DBSCAN聚類算法具有較好的抗噪能力,但其時(shí)間復(fù)雜度較高; Chinese whispers聚類算法不需要事先指定聚類數(shù),算法較為簡單,但閾值的選取對(duì)聚類結(jié)果影響較大.基于上述研究,本文將KCF跟蹤算法與Chinese whispers聚類算法相結(jié)合來生成人臉數(shù)據(jù)集,以解決因目標(biāo)遮擋引起的目標(biāo)跟蹤錯(cuò)誤而導(dǎo)致的將不同人臉圖像聚為一類的問題,以及單純使用人臉聚類來獲取人臉數(shù)據(jù)集時(shí)時(shí)間效率較低的問題,并通過實(shí)驗(yàn)驗(yàn)證本文方法的有效性.
KCF跟蹤算法是一種基于核嶺回歸的跟蹤器,它通過循環(huán)移位來獲取大量包含背景信息的訓(xùn)練樣本,并根據(jù)循環(huán)矩陣的特性和離散傅里葉變換技術(shù)提升算法對(duì)單幀圖像的處理速度,以此實(shí)現(xiàn)對(duì)目標(biāo)快速、準(zhǔn)確的跟蹤.KCF算法通過檢測(cè)器標(biāo)注視頻幀中的待跟蹤目標(biāo)區(qū)域(跟蹤樣本),并將跟蹤樣本作為基準(zhǔn)樣本,記為x.為敘述簡便,本文以單通道尺度(n×1)的圖像為例進(jìn)行說明,即設(shè)x=[x1,x2,x3,…,xn]T.循環(huán)矩陣Xn×n通過對(duì)基準(zhǔn)圖像進(jìn)行循環(huán)移位操作來構(gòu)建,如公式(1)所示:
(1)
式(1)中矩陣X的每一行向量表示一個(gè)樣本,第1行是基準(zhǔn)樣本x, 第i+1行向量可由第i行向量的元素向右循環(huán)移動(dòng)一位得到,其數(shù)學(xué)表達(dá)式為:
Xi+1=Pix,i=1,2,…,n-1.
(2)
式(2)中Xi+1是循環(huán)矩陣的第i+1行,P為置換矩陣,如公式(3)所示:
(3)
矩陣(1)可以通過離散傅里葉變換實(shí)現(xiàn)對(duì)角化,如公式(4)所示:
(4)
1) 訓(xùn)練分類器.給定訓(xùn)練樣本{(x1,y1),(x2,y2),…,(xm,ym)},訓(xùn)練的目的是試圖學(xué)得一個(gè)嶺回歸模型f(x)=wTx, 使得f(xi)與樣本標(biāo)簽yi間的均方誤差最小化,即
(5)
式中:λ是防止回歸函數(shù)過擬合的歸一化參數(shù);xi為循環(huán)矩陣中第i行所表示的訓(xùn)練樣本;yi為樣本xi的標(biāo)簽.公式(5)在實(shí)數(shù)域內(nèi)的閉合解為w=(XTX+λI)-1XTy, 式中X為循環(huán)數(shù)據(jù)矩陣,y是由yi組成的標(biāo)簽向量,I為單位矩陣.
引入核函數(shù)解決非線性分類問題時(shí),需將待求值w定義為在高維空間中訓(xùn)練樣本φ(xi)的線性組合,其數(shù)學(xué)表達(dá)式為:
(6)
(7)
3) 更新模型.將前一幀使用的分類器模型αt-1與新分類器模型α(用新樣本訓(xùn)練的模型)進(jìn)行線性組合即可得到當(dāng)前t時(shí)刻的分類器模型αt.線性組合方式為αt=(1-β)αt-1+βα, 式中β為分類器的自學(xué)習(xí)率.
Chinese whispers算法是一種無監(jiān)督的聚類算法,它可自動(dòng)查找類別的個(gè)數(shù).Chinese whispers算法的具體步驟如下:
Step 1 無向圖初始化.將每個(gè)人臉圖像都作為無向圖的一個(gè)節(jié)點(diǎn),每個(gè)人臉圖像節(jié)點(diǎn)為一個(gè)類別,不同節(jié)點(diǎn)之間根據(jù)ResNets[9]提取的特征計(jì)算相似度.若兩個(gè)節(jié)點(diǎn)之間的相似度超過設(shè)定的閾值,則將兩個(gè)節(jié)點(diǎn)相連形成關(guān)聯(lián)邊,邊的權(quán)重為兩個(gè)節(jié)點(diǎn)間的相似度.
Step 2 隨機(jī)選取一個(gè)未遍歷過的人臉圖像節(jié)點(diǎn)i, 并從該節(jié)點(diǎn)開始在其鄰居中選取邊權(quán)重最大者j, 然后將節(jié)點(diǎn)i歸為節(jié)點(diǎn)j所在的類.若鄰居中有多個(gè)節(jié)點(diǎn)屬于同一類,則將這些節(jié)點(diǎn)的邊權(quán)重相加之后再進(jìn)行邊權(quán)重大小的比較.
Step 3 重復(fù)Step 2,直至遍歷所有節(jié)點(diǎn).
Step 4 重復(fù)Step 2和Step 3,直至滿足迭代次數(shù).
1) KCF跟蹤算法分析.KCF跟蹤算法的抗干擾能力和計(jì)算速度與其他算法相比雖然得到了提升,但其在目標(biāo)被遮擋時(shí)仍會(huì)發(fā)生跟蹤丟失,并且在初始選定目標(biāo)區(qū)域后其尺度大小無法改變,即在跟蹤過程中人臉框的尺度無法實(shí)現(xiàn)自適應(yīng),因此跟蹤會(huì)發(fā)生漂移現(xiàn)象,如圖1—圖3所示.觀察圖1和圖2可以看出,隨著人臉逐漸靠近鏡頭,人臉尺度逐漸變大,但人臉框不能自適應(yīng)人臉尺度的變化.觀察圖2和圖3可看出,遮擋發(fā)生后目標(biāo)出現(xiàn)跟蹤丟失現(xiàn)象.
圖1 初始化選定框 圖2 目標(biāo)發(fā)生遮擋 圖3 目標(biāo)跟蹤丟失
2) Chinese whispers聚類算法分析.Chinese whispers聚類算法比傳統(tǒng)聚類算法的聚類準(zhǔn)確率雖然有了提高,但其特征提取過程較為耗時(shí),如在尺度為120 pixel×120 pixel的人臉圖像中提取特征大約需要1 s.此外, Chinese whispers聚類算法對(duì)于完全側(cè)臉的人臉圖像不能進(jìn)行正確聚類.
基于人臉聚類和人臉跟蹤相結(jié)合的人臉數(shù)據(jù)集生成方法的主要思想為:
1)在沒有遮擋情況發(fā)生時(shí),采用人臉跟蹤算法獲取人臉圖像集,并對(duì)所獲得的每一個(gè)人臉圖像集進(jìn)行人臉圖像優(yōu)選,優(yōu)選后對(duì)人臉圖像進(jìn)行聚類.因該方法不是對(duì)視頻幀中的全部人臉圖像進(jìn)行聚類,所以不僅能提高聚類速度,還能提高聚類的準(zhǔn)確性.
2)整個(gè)生成人臉數(shù)據(jù)集的過程以人臉跟蹤為主,并判斷每一幀圖像是否存在人臉遮擋,若有遮擋則停止跟蹤并啟動(dòng)人臉檢測(cè).通過這種方式可有效避免因遮擋引起的跟蹤丟失或錯(cuò)誤而導(dǎo)致不同的人臉聚集在同一人臉數(shù)據(jù)集中.
3)每間隔25幀重新初始化跟蹤器,以使跟蹤器能夠及時(shí)檢測(cè)到新出現(xiàn)的人臉和消失的人臉.每個(gè)跟蹤片段中的人都要單獨(dú)建立人臉數(shù)據(jù)集.
圖4 人臉跟蹤與人臉聚類相結(jié)合的人臉數(shù)據(jù)集生成流程圖
基于人臉跟蹤與人臉聚類相結(jié)合的人臉數(shù)據(jù)集生成方法的基本流程如圖4所示,實(shí)現(xiàn)的具體步驟如下:
Step 1 初始化跟蹤器.采用人臉檢測(cè)算法檢測(cè)視頻中的人臉,并對(duì)每個(gè)人臉賦予一個(gè)跟蹤器.
Step 2 開始跟蹤.根據(jù)人臉框的位置判斷每一幀中的人臉是否發(fā)生了遮擋,若發(fā)生遮擋則執(zhí)行步驟Step 3,若無遮擋則執(zhí)行步驟Step 4.
Step 3 啟動(dòng)人臉檢測(cè)程序.對(duì)每一幀進(jìn)行人臉檢測(cè),同時(shí)根據(jù)人臉框的位置判斷遮擋是否仍然存在.若遮擋存在則繼續(xù)人臉檢測(cè); 若遮擋消失,則重新跟蹤,即執(zhí)行步驟Step 1.
Step 4 無遮擋跟蹤時(shí),每間隔25幀重新初始化跟蹤器,即執(zhí)行步驟Step 1.
Step 5 在由Step 4得到的每個(gè)人臉數(shù)據(jù)集中通過人臉圖像優(yōu)選算法選出高質(zhì)量的人臉圖像,然后將優(yōu)選出來的人臉圖像進(jìn)行人臉聚類,以此完成每個(gè)人的人臉數(shù)據(jù)集的生成.
1) KCF跟蹤算法在判斷有無遮擋情況發(fā)生時(shí),只有當(dāng)濾波器與檢測(cè)目標(biāo)的響應(yīng)值有較大變化時(shí),即目標(biāo)被大面積遮擋時(shí),才能判斷為遮擋,如圖5所示.若遮擋面積較小, KCF跟蹤算法就無法及時(shí)做出判斷(如圖6所示).但由于小面積遮擋的人臉圖像在優(yōu)選過程中也被視為低質(zhì)量人臉圖像,因此需要一種能夠及時(shí)判斷當(dāng)前幀的人臉間是否發(fā)生遮擋的有效方法.目前判斷人臉間是否發(fā)生遮擋的常用方法是基于計(jì)算兩個(gè)人臉框重疊面積大小的判斷方法,該方法對(duì)于圖5所示的遮擋情況較為有效,但對(duì)圖6所示的遮擋情況(身高差過大導(dǎo)致人臉框間相交面積為0)則不能正確判斷.為此,本論文采用如下方法來進(jìn)行判斷:
將人臉框左上角和右下角的坐標(biāo)分別設(shè)定為(x1,y1)和(x2,y2),在判斷過程中只使用2個(gè)橫坐標(biāo)x1和x2來判斷是否發(fā)生人臉遮擋.通過大量的仿真實(shí)驗(yàn)發(fā)現(xiàn),橫坐標(biāo)的距離差在0~30范圍內(nèi)均能有效地判斷有無遮擋情況的發(fā)生,因此本文取距離差20為閾值,即當(dāng)距離差小于20時(shí)判為遮擋.具體描述如下:
if condition then occlusion occurred, 其中 condition:
0<|x1-x1other|<20 or 0<|x1-x2other|<20,
or 0<|x2-x1other|<20 or 0<|x2-x2other|<20.
上式中x1other和x2other是另一個(gè)人人臉框的2個(gè)橫坐標(biāo).經(jīng)實(shí)驗(yàn)驗(yàn)證,上述方法對(duì)圖5及圖6所示的人臉間的遮擋均可進(jìn)行有效判斷.
圖5 大面積遮擋
圖6 初步遮擋
2) 當(dāng)人臉尺度發(fā)生較大變化時(shí),初始設(shè)定的人臉框不能提取出完整的人臉.通過觀察監(jiān)控視頻可以發(fā)現(xiàn),人臉跟蹤的尺度變化與其他目標(biāo)跟蹤的尺度變化有所不同.例如:車、行人等作為跟蹤目標(biāo)時(shí),其尺度的變化可能是放大或縮小;而人臉作為跟蹤目標(biāo)時(shí),因人臉圖像的獲取只能是人臉面向攝像頭并逐漸接近而獲得,因此考慮人臉尺度變化時(shí)只需考慮尺度放大的情況即可.
由于人臉尺度在25幀里不會(huì)有較大變化,因此本文在每一次初始化人臉框時(shí),使人臉框的尺寸略大于檢測(cè)到的實(shí)際目標(biāo)區(qū)域,這樣就不需要逐幀對(duì)目標(biāo)尺度進(jìn)行變換,并且得到的人臉五官及輪廓更為完整,如圖7所示.由圖7可看出,該方法在25幀后仍能提取出完整的人臉.
(a)初始化區(qū)域 (b)改進(jìn)前的人臉跟蹤框 (c)改進(jìn)后的人臉跟蹤框圖7 改進(jìn)前后的人臉跟蹤框
仿真實(shí)驗(yàn)采用3個(gè)拍攝于室內(nèi)的視頻(采用Sony高清攝像機(jī)),視頻數(shù)據(jù)的具體參數(shù)如表1所示.3種人臉數(shù)據(jù)集生成方法(基于人臉聚類的人臉數(shù)據(jù)集生成方法、基于人臉跟蹤的人臉數(shù)據(jù)集生成方法、本文提出的人臉聚類和人臉跟蹤相結(jié)合的人臉數(shù)據(jù)集生成方法)在視頻1—視頻3上的實(shí)驗(yàn)結(jié)果分別如表2—表4所示.各表中的時(shí)間為各算法生成人臉數(shù)據(jù)集與在數(shù)據(jù)集中選出最優(yōu)人臉圖像所耗費(fèi)的時(shí)間.
表1 視頻參數(shù)
表2 視頻1的實(shí)驗(yàn)結(jié)果
表3 視頻2的實(shí)驗(yàn)結(jié)果
表4 視頻3的實(shí)驗(yàn)結(jié)果
圖8 完全側(cè)臉的人臉圖像
從表2—表4可以看出,本文算法在時(shí)間效率上比基于人臉聚類的方法提高約50%,在純度上比基于人臉跟蹤的方法有一定的提高.純度提高幅度的大小與行人遇到遮擋的時(shí)間有關(guān):若在視頻初始時(shí)遇到遮擋,則基于人臉跟蹤方法的純度相對(duì)較低,而本文算法的純度在提高幅度上相對(duì)較大,如表4所示;若在視頻即將結(jié)束時(shí)遇到遮擋,則基于人臉跟蹤方法的純度相對(duì)較高,而本文算法的純度在提高幅度上相對(duì)較小,如表2所示.實(shí)驗(yàn)中,由于完全側(cè)臉的人臉圖像(如圖8所示)不能和其他偏轉(zhuǎn)角度較小的人臉聚為一類,因而會(huì)使人臉集的個(gè)數(shù)大于實(shí)際個(gè)數(shù),但相比于人臉聚類方法,本文算法更接近于真實(shí)人臉集的個(gè)數(shù),并且其純度也有一定的提升.
本文提出的將聚類和跟蹤相結(jié)合的人臉數(shù)據(jù)集生成方法,能夠很好地解決因遮擋引起的跟蹤錯(cuò)誤而導(dǎo)致將不同人的人臉圖像聚為一類的問題,并且還可以提高獲取人臉數(shù)據(jù)集的時(shí)間效率,因此本文方法可被廣泛應(yīng)用在人臉識(shí)別、人臉數(shù)據(jù)庫的建立以及人臉?biāo)阉鞯认到y(tǒng)中.由于人臉聚類算法中的特征提取階段較為耗時(shí),使得本文方法的時(shí)間效率低于基于人臉跟蹤的人臉數(shù)據(jù)集生成方法.另外,由于本文方法未能對(duì)完全側(cè)臉的人臉圖像進(jìn)行正確聚類,導(dǎo)致生成的人臉數(shù)據(jù)集的個(gè)數(shù)可能多于實(shí)際個(gè)數(shù).在今后的研究中,我們將對(duì)上述問題進(jìn)行研究,以完善本文方法.