黃 新, 高 雷, 宋博源, 郭曉敏
(桂林電子科技大學(xué) 電子工程與自動化學(xué)院,廣西 桂林 541004)
目標(biāo)的檢測與跟蹤在計算機視覺領(lǐng)域是一個非?;钴S的研究方向[1],同時也是動態(tài)人臉識別、智能安防監(jiān)控、智能交通等領(lǐng)域的核心問題。常見的目標(biāo)跟蹤算法主要有:1)基于目標(biāo)模型建模的算法,如區(qū)域匹配、特征點跟蹤、光流法等;2)基于搜索的算法,如粒子濾波[2]、kalman濾波[3]、Camshift[4]等算法。目前在已有目標(biāo)跟蹤算法中,均值偏移(Meanshift)算法憑借計算簡單、實時性較好[5]等優(yōu)點被廣泛應(yīng)用于人臉跟蹤等領(lǐng)域。Bradski等[4]在Meanshift算法的基礎(chǔ)上提出了Camshift算法。從本質(zhì)上說,這2種算法都是爬坡算法,即在數(shù)據(jù)的概率密度分布中反復(fù)迭代,進而求解出局部極值穩(wěn)定的算法[5]。
Camshift算法是一種無參估計跟蹤算法,該算法利用視頻序列中被跟蹤物體的顏色特征信息來實現(xiàn)對運動目標(biāo)的跟蹤[6]。傳統(tǒng)的Camshift算法在光照的變化及被跟蹤目標(biāo)與背景環(huán)境顏色相似的情況下,跟蹤效果不明顯[7]。針對Camshift算法的這一不足,可將貝葉斯概率框架[8]與傳統(tǒng)的Camshift算法相結(jié)合,但計算的復(fù)雜度會增加,從而導(dǎo)致跟蹤的實時性變差。
對于視頻序列,原始的多任務(wù)級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)(multi-task convolutional neural network,簡稱MTCNN)人臉檢測算法僅在CPU 的運行環(huán)境下不能滿足視頻流中的人臉實時檢測[9]。鑒于此,提出一種改進的Camshift 算法。將Camshift 算法與MTCNN人臉檢測算法相結(jié)合,通過MTCNN 人臉檢測算法實現(xiàn)Camshift算法跟蹤框位置和大小的初始化,從而實現(xiàn)自動跟蹤檢測人臉。利用Bhattacharyya系數(shù)[10]判定Camshift算法是否出現(xiàn)相近色干擾問題,并采用相應(yīng)方法進行處理。
人臉檢測是在圖像或者視頻序列中找到人臉并返回人臉框大小和位置坐標(biāo)信息的過程,本研究采用MTCNN 算法對人臉及人臉關(guān)鍵點進行檢測。MTCNN[11]算法是一種基于卷積神經(jīng)網(wǎng)絡(luò)的多任務(wù)級聯(lián)人臉檢測算法,它主要由P-Net、R-Net和ONet組成,可以檢測出人臉框和特征點。
1)P-Net(proposal network)提案網(wǎng):通過全卷積網(wǎng)絡(luò)獲得人臉候選框和邊界框回歸向量,并利用邊界框回歸向量對人臉候選框進行校準(zhǔn),用非極大值抑制(Non-maximum suppression,簡稱NMS)[12]算法合并重疊的人臉候選框。P-Net主要用來生成一些人臉候選框。
2)R-Net(Refine Network)精煉網(wǎng):將P-Net得到的候選窗作進一步篩選,剔除人臉候選框中的假陽性樣本,同樣通過邊界框回歸向量校準(zhǔn)和NMS算法得到更加精確的人臉候選區(qū)域。R-Net主要用來去除大量的非人臉框。
3)O-Net(Output Network)輸出網(wǎng):其功能與R-Net類似,對R-Net的輸出執(zhí)行更精確的操作,主要對人臉候選區(qū)域進行精確篩選,獲得最終的人臉位置,同時得到雙眼、鼻子、嘴角兩側(cè)5個關(guān)鍵點坐標(biāo)。O-Net與R-Net類似,在R-Net的基礎(chǔ)上增加了landmark位置的回歸。
MTCNN算法landmark示意圖如圖2所示。從圖2可看出,人臉坐標(biāo)參數(shù)為:人臉框坐標(biāo)(x1,y1)和(x2,y2),左眼坐標(biāo)(xe,1,ye,1),右眼坐標(biāo)(xe,2,ye,2),鼻子坐標(biāo)(xn,1,yn,1),左嘴角坐標(biāo)(xm,1,ym,1),右嘴角坐標(biāo)(xm,2,ym,2)。在MTCNN進行實際的人臉檢測的過程中會出現(xiàn)人臉偏轉(zhuǎn)的現(xiàn)象,主要分為平面內(nèi)偏轉(zhuǎn)和平面外偏轉(zhuǎn)。針對人臉檢測過程中出現(xiàn)平面外旋轉(zhuǎn)的現(xiàn)象,對MTCNN 人臉檢測框進行修正。xe,1-x1為左眼到人臉檢測框左側(cè)的水平距離,ye,1-y1為左眼到人臉檢測框上邊界的垂直距離,x2-xe,2為右眼到人臉檢測框右側(cè)的水平距離,ye,2-y2為右眼到人臉檢測框上邊界的垂直距離,xe,2-xe,1為雙眼間的距離;xm,1-x1為左嘴角到人臉檢測框左側(cè)的水平距離,x2-xm,2為右嘴角到人臉檢測框右側(cè)的距離,y2-ym,1為人臉框下邊界到左嘴角的垂直距離,y2-ym,2為人臉框下邊界到右嘴角的垂直距離。
圖1 MTCNN人臉檢測網(wǎng)絡(luò)
圖2 MTCNN算法landmark示意圖
以下分為3種情況進行討論:平面外向左旋轉(zhuǎn)人臉、正面人臉和平面外向右旋轉(zhuǎn)人臉。當(dāng)檢測到平面外向左旋轉(zhuǎn)的人臉和平面外向右旋轉(zhuǎn)的人臉時,人臉框的寬度W的取值范圍為
當(dāng)xe,1-x1與x2-xe,2相等時,檢測到的人臉為正面人臉,人臉框即為MTCNN檢測到的大小;當(dāng)xe,1-x1小于x2-xe,2時,檢測到的人臉平面外向左旋轉(zhuǎn),人臉框坐標(biāo)為(x1,y1,x1+Wmin,y1+Hmin);當(dāng)xe,1-x1大于x2-xe,2時,檢測到的人臉平面外向右旋轉(zhuǎn),人臉框坐標(biāo)為(x2-Wmin,y2-Hmin,x2,y2)。
Camshift算法流程如圖3所示[13],主要包括被跟蹤目標(biāo)反向投影的計算,對反向投影進行Meanshift計算和不斷搜索3個過程[14]。
圖3 Camshift算法流程圖
顏色直方圖作為一種目標(biāo)特征,能夠?qū)δ繕?biāo)的顏色信息進行有效特征提取[15]。假設(shè)在彩色視頻圖像序列中,圖像像素的值域范圍在RGB空間,把RGB色彩空間的每個子空間R、G、B根據(jù)直方圖的方式分別分成m個子區(qū)間,每個區(qū)間稱為一個bin,構(gòu)成相應(yīng)的特征空間,相應(yīng)的特征數(shù)目為k3。通常在目標(biāo)跟蹤區(qū)域中,處于不同位置的像素點對顏色直方圖有不同的貢獻,距中心區(qū)域較遠的像素通常被賦予較小的權(quán)值,相反則被賦予較大的權(quán)值[16]。
其中:Ch為候選模型顏色直方圖的歸一化因子,使得Σp u=1;y為當(dāng)前幀中人臉目標(biāo)的中心位置;h為核窗口的寬度。
Camshift算法的核心思想是在所有視頻圖像幀中的顏色概率分布直方圖的基礎(chǔ)上運行Meanshift算法[19](如圖4所示),并運用概率分布直方圖的特征來跟蹤識別單幀中的運動目標(biāo)。
圖4 Camshift算法原理圖
Camshift算法首先對人臉?biāo)阉骺虻奈恢煤痛笮∵M行初始化,再對人臉圖像的顏色直方圖進行反向投影,并獲取其顏色概率分布,然后執(zhí)行Meanshift算法,得到新的人臉?biāo)阉骺?并得到對應(yīng)的質(zhì)心和大小,最后根據(jù)上一幀的結(jié)果對人臉?biāo)阉骺虻拇笮『臀恢眠M行調(diào)整,在此基礎(chǔ)上進行逐次迭代直到收斂,即質(zhì)心移動的距離小于設(shè)定的閾值,完成人臉跟蹤。假設(shè)I(x,y)為概率分布圖像在點(x,y)處的像素值,人臉?biāo)阉骺虻拇笮閃,則人臉?biāo)阉骺虻馁|(zhì)心坐標(biāo)(xc,yc)可[20]表示為
其中:M00為人臉?biāo)阉骺蛑懈怕拭芏葓D的零階矩;M10、M01分別為圖中點(x,y)在x、y處的一階矩,且
M20、M02和M11分別為圖中點(x,y)在x、y處的二階矩及混合二階矩,且
傳統(tǒng)的Camshift算法僅對HSV 色彩空間中的色調(diào)H 單通道進行均勻量化并建立直方圖模型,在飽和度和亮度變化較大的場景下,跟蹤效果明顯降低[6]。針對上述問題,將H 通道的反向投影過程擴展到H、S、V三通道,并對HSV 三通道進行加權(quán)束來完成反向投影,同時得到三維直方圖,具體流程如圖5所示。
圖5 三維加權(quán)反向投影
將圖像從RGB顏色空間轉(zhuǎn)化為HSV 空間,選取目標(biāo),分別提取其H、S分量,建立2個目標(biāo)直方圖,通過反向投影分別得到目標(biāo)關(guān)于它們的概率分布圖IH、IS,再分別提取其H、V分量,建立2個目標(biāo)直方圖,通過反向投影分別得到目標(biāo)關(guān)于它們的概率分布圖IH和IV,采用加權(quán)的方式求得總的概率分布圖,對Hue、Sat、Val三通道進行加權(quán)處理:
其中:α為概率分布圖中IH的權(quán)重,表示H 分量在描述顏色特征方面所占的比例;(1-α)表示S、V 分量在描述顏色特征方面所占的比例;I1表示H 分量和S分量加權(quán)后的概率分布;I2表示H 分量和V 分量加權(quán)后的概率分布。將H、S分量及H、V 分量概率分布圖進行位與加權(quán),對人臉目標(biāo)區(qū)域顏色特征的描述更加準(zhǔn)確和全面,提高了人臉跟蹤模型的穩(wěn)定性和魯棒性。由于在跟蹤過程中,H 分量對于目標(biāo)顏色特征的描述能力較強,加權(quán)系數(shù)應(yīng)取較大的值,取α=0.6。
人臉約束如圖6所示,Ho和Wo分別為MTCNN人臉檢測算法檢測到的人臉高度和寬度,he、we為原始Camshift人臉跟蹤框的高度和寬度,通過人臉框約束控制后,人臉框的高度和寬度分別為he、we,經(jīng)過修正后的人臉框的高度和寬度分別為hc、wc。
圖6 人臉約束
人臉寬高比Ro限制范圍通常為0.8~2.5[21],取0.9Ro,人臉約束滿足如下條件:
傳統(tǒng)Camshift算法通過手動方法調(diào)整窗口的大小和位置的初始化,改進后的Camshift算法流程圖如圖7所示,通過MTCNN 人臉檢測算法得到人臉框的坐標(biāo)作為Camshift 跟蹤算法的初始化,當(dāng)MTCNN算法未檢測到人臉時,跳過k幀再次進行檢測,本研究k取2,r n為當(dāng)前幀中人臉?biāo)阉骺虻膶捀弑?r0為MTCNN 人臉檢測算法檢測到的人臉寬高比。傳統(tǒng)的Camshift算法以上一幀的搜索框為基礎(chǔ)作為下一幀窗口的初始化[19],在此過程中進行人臉的寬高比比對,以此實現(xiàn)人臉約束,當(dāng)r n>r0或r n<0.9r0時,即在跟蹤中出現(xiàn)了相近色干擾,通過人臉約束來解決相近色干擾的問題。
圖7 改進后的Camshift跟蹤算法流程
MTCNN 人臉側(cè)臉檢測框修正實驗如圖8 所示,有平面向右旋轉(zhuǎn)人臉、正面人臉、平面向左旋轉(zhuǎn)人臉3種實際人臉檢測遇到的情況。在每種情況下有2幅人臉圖像,分別代表MTCNN 人臉檢測算法初始檢測到的人臉和MTCNN 人臉側(cè)臉檢測框修正,Camshift人臉跟蹤用修正后的人臉框作為跟蹤窗口大小和位置的初始化,矩形框作為Camshift跟蹤的初始窗口。
圖8 MTCNN人臉側(cè)臉檢測框修正
為了驗證改進Camshift算法的效果,設(shè)計相關(guān)實驗進行驗證。實驗在PC(Intel(R)Core(TM)i5-4690 CPU@3.50 GHz,8 GiB RAM)win10系統(tǒng)下展開,采用Pycharm 2018.2作為實驗平臺,調(diào)用OpenCV-Python(Version3.4.5)庫中的相關(guān)函數(shù)以及MATLAB R2018a進行數(shù)據(jù)分析。實驗選用的視頻均為攝像頭本地錄制,分辨率為640像素×480像素。Camshift 改進前后顏色直方圖效果如圖9所示。
圖9 Camshift算法改進前后顏色直方圖效果對比
通常選擇用于評價邊緣檢測的Bhattacharyya系數(shù)[20](又稱巴氏系數(shù))來衡量目標(biāo)區(qū)域和候選區(qū)域的相似性:
ρ[p(y),q]∈(0,1),它隨著2個分布之間的相似度的增大而增大,數(shù)值越大,則目標(biāo)區(qū)域與候選區(qū)域的相似度越高。理論上,目標(biāo)區(qū)域與候選區(qū)域之間的巴氏距離為1,但是在實際跟蹤的過程中受光線、角度干擾信息的影響,巴氏系數(shù)為1的可能性非常小,這兩者之間擁有相同的分布幾乎是不可能的。如圖10 所示,改進后的Camshift算法與原始的Camshift算法相比,人臉目標(biāo)區(qū)域與候選區(qū)域之間的巴氏系數(shù)更大,相似程度更高,人臉跟蹤的效果更好。
圖10 Camshift算法改進前后對比
如圖11所示,(a)、(b)分別為Camshift算法改進前后相同幀(#424)的跟蹤對比圖,在相同的視頻幀數(shù)中,原始的Camshift算法把脖子至下巴的區(qū)域誤判為需要跟蹤的人臉區(qū)域,改進后的Camshift算法受到相近色干擾的問題明顯減弱,人臉跟蹤的魯棒性和穩(wěn)定性明顯提高。
圖11 Camshift算法改進實測對比
針對傳統(tǒng)的Camshift算法在進行人臉跟蹤時易受脖頸等處皮膚的相近色干擾而導(dǎo)致跟蹤框定位不精確、跟蹤效果差等問題,通過加權(quán)概率直方圖匹配方法增強跟蹤過程中人臉的辨識度,并結(jié)合人臉框約束來解決相近膚色干擾帶來的形變。由實驗結(jié)果可知,與傳統(tǒng)的Camshift算法相比,本算法的人臉跟蹤更加準(zhǔn)確,相近膚色的干擾問題被抑制,跟蹤效果更好。原始MTCNN算法的3個級聯(lián)網(wǎng)絡(luò)只能進行人臉的位置和關(guān)鍵點的檢測,對于連續(xù)的視頻序列,MTCNN算法實時性較差,不能對每個目標(biāo)進行實時跟蹤,以MTCNN人臉檢測算法為基礎(chǔ),通過人臉中的landmark坐標(biāo)計算實現(xiàn)側(cè)面人臉檢測框進行修正,將修正后的人臉框作為改進后的Camshift跟蹤算法的初始化。實驗結(jié)果表明,該算法可實現(xiàn)人臉的實時跟蹤檢測。