李克靖,孫鳳梅
(中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇無錫214035)
目標(biāo)跟蹤,是指在視頻中利用目標(biāo)的有效特征,結(jié)合適當(dāng)方法在各幀圖像中獲取目標(biāo)的位置、速度、運(yùn)動(dòng)軌跡等信息,在視頻監(jiān)控、物體識(shí)別和人機(jī)交互等領(lǐng)域都有廣泛的應(yīng)用[1-2]。
近年來,基于分類的目標(biāo)跟蹤得到了較快的發(fā)展,涌現(xiàn)出大量的研究成果。文獻(xiàn)[3]采用一種步步為營(yíng)的反饋式學(xué)習(xí)方法,通過正、負(fù)約束提高目標(biāo)模型與分類器的判別能力和容錯(cuò)能力;文獻(xiàn)[4]提出一種基于在線半監(jiān)督boosting的協(xié)同訓(xùn)練目標(biāo)跟蹤算法,利用未標(biāo)記的樣本對(duì)兩個(gè)特征視圖分類器進(jìn)行協(xié)同訓(xùn)練,并結(jié)合分類器在線迭代和先驗(yàn)?zāi)P蛯?duì)未標(biāo)記樣本作出類標(biāo)記預(yù)測(cè),同時(shí)得到其權(quán)重,該算法有效地提高了分類器的判別能力,從而對(duì)目標(biāo)外觀的變化有了更好的適應(yīng)性。然而這些基于分類的目標(biāo)跟蹤方法都需要預(yù)先選取目標(biāo)特征,而所選特征對(duì)目標(biāo)的區(qū)分是否最為有效往往需要依賴人們的先驗(yàn)知識(shí),這樣既復(fù)雜又不具有普適性。不合適的特征還會(huì)造成分類器的分類精度下降,進(jìn)而影響目標(biāo)跟蹤的效果。針對(duì)以上情形,本文提出一種基于深度學(xué)習(xí)的目標(biāo)跟蹤算法,該算法使用深度學(xué)習(xí)中深度置信網(wǎng)絡(luò)的方法對(duì)輸入圖像進(jìn)行多層次的表示和抽取學(xué)習(xí),獲取圖像特征,訓(xùn)練得到一個(gè)分類器,對(duì)各幀圖像像素進(jìn)行分類,得到目標(biāo)分布圖,最后結(jié)合Camshift算法實(shí)現(xiàn)目標(biāo)跟蹤。訓(xùn)練過程中省去了一般分類器訓(xùn)練所需的目標(biāo)特征提取的步驟,同時(shí)在跟蹤過程中加入了Kalman濾波預(yù)測(cè)目標(biāo)在下一幀圖像中的位置,縮小了分類和目標(biāo)搜索的范圍,大大提高了目標(biāo)跟蹤的效率。該算法對(duì)光照變化、遮擋、目標(biāo)旋轉(zhuǎn)等復(fù)雜情況有較強(qiáng)的魯棒性,在多個(gè)典型視頻中對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤實(shí)驗(yàn),驗(yàn)證了本文算法的有效性。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個(gè)新領(lǐng)域,其目的在于建立神經(jīng)網(wǎng)絡(luò)模仿人腦機(jī)制來理解文本、圖像、聲音等數(shù)據(jù)。深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò),由Hinton等[5]于2006年提出,它將低層特征組合形成更抽象的高層特征,從而得到數(shù)據(jù)的分布式特征表述形式。如圖1所示,典型的深度學(xué)習(xí)模型由輸入層、隱層(多層)、輸出層組成多層網(wǎng)絡(luò),其中只有相鄰層節(jié)點(diǎn)之間有連接,同一層以及跨層節(jié)點(diǎn)之間相互無連接,每一層可以看作是一個(gè)邏輯回歸模型,這種分層結(jié)構(gòu)與人類的大腦結(jié)構(gòu)比較接近。
深度置信網(wǎng)絡(luò)(DBN)是目前研究應(yīng)用較為廣泛的一種深度學(xué)習(xí)結(jié)構(gòu),不同于傳統(tǒng)的區(qū)分型神經(jīng)網(wǎng)絡(luò),DBN能夠獲得觀測(cè)數(shù)據(jù)及其標(biāo)簽的聯(lián)合概率分布,以方便同時(shí)對(duì)先驗(yàn)概率和后驗(yàn)概率進(jìn)行估計(jì),而區(qū)分型神經(jīng)網(wǎng)絡(luò)只能估計(jì)后驗(yàn)概率[6]。
圖1 深度學(xué)習(xí)模型
DBN是由一系列的受限玻爾茲曼機(jī)(Restricted Boltzmann Machine,RBM)單元組成。玻爾茲曼機(jī)是基于能量理論的概率模型,通過熱力學(xué)能量函數(shù)定義了一個(gè)概率分布:Boltzmann分布[7]。如果對(duì)玻爾茲曼機(jī)加以約束條件,令其自身不與自身連接,則得到一個(gè)有向無環(huán)圖RBM。
典型的DBN結(jié)構(gòu)用以下聯(lián)合概率分布表示輸入向量x和隱含向量h的關(guān)系:
其中x=h0,P(hk|hk+2)是條件概率分布,l是隱藏層數(shù)。DBN的可視層和隱藏層單元彼此互連,但層內(nèi)無連接,隱藏層單元可以獲取輸入可視層單元的高階相關(guān)性。DBN與傳統(tǒng)的sigmoid信度網(wǎng)絡(luò)相比,更易于連接權(quán)值的學(xué)習(xí)。
深度置信網(wǎng)絡(luò)的訓(xùn)練過程分為兩個(gè)階段:1)預(yù)訓(xùn)練階段:采用自下而上的非監(jiān)督學(xué)習(xí),利用無標(biāo)記數(shù)據(jù)通過貪婪逐層的學(xué)習(xí)方法得到各層權(quán)值;2)權(quán)值調(diào)整階段:采用自頂向下的監(jiān)督學(xué)習(xí),通過帶標(biāo)簽的數(shù)據(jù)去訓(xùn)練,誤差自頂向下傳輸,對(duì)整個(gè)多層模型的權(quán)值進(jìn)行進(jìn)一步微調(diào)。
圖2 DBN網(wǎng)絡(luò)模型
如圖2所示,在預(yù)訓(xùn)練階段,首先在可視層單元產(chǎn)生一個(gè)觀測(cè)向量V,映射給隱藏層單元,然后可視層單元由隱藏層單元重建,這些新可視層單元再次映射給隱藏層單元,這樣就獲取了新的隱藏層單元[8];在貪婪學(xué)習(xí)過程中,向上的權(quán)值用于認(rèn)知,向下的權(quán)值用于生成。然后使用Wake-Sleep算法調(diào)整所有的權(quán)值,讓認(rèn)知和生成達(dá)成一致,從而保證所生成的最頂層表示盡可能正確地復(fù)原出底層原始輸入[9]。
在預(yù)訓(xùn)練后,DBN利用帶標(biāo)簽數(shù)據(jù)通過BP算法調(diào)整網(wǎng)絡(luò)的判別性能。頂層將被加上一個(gè)標(biāo)簽集用以推廣聯(lián)想記憶,通過自下而上的學(xué)習(xí)得到識(shí)別權(quán)值,從而得到一個(gè)類似網(wǎng)絡(luò)的分類界面。
本文算法利用深度置信網(wǎng)絡(luò)訓(xùn)練得到分類器,通過Camshift算法對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行定位,并結(jié)合Kalman預(yù)測(cè)目標(biāo)位置以提高算法跟蹤效率,算法流程如圖3所示。
圖3 本文算法流程
利用DBN訓(xùn)練分類器可分為兩個(gè)階段:預(yù)訓(xùn)練、參數(shù)調(diào)整。預(yù)訓(xùn)練階段,將第一幀圖像I1(m,n,d)變換成包含全部像素rgb值的矩陣I1'(N,d),其中d為圖像的通道數(shù),N=m×n為圖像的像素?cái)?shù),然后把I1'(N,d)作為輸入進(jìn)行無監(jiān)督貪婪逐層訓(xùn)練,得到多層模型及各層的參數(shù);參數(shù)調(diào)整階段,通過輸入標(biāo)簽矩陣L(N,1)對(duì)整個(gè)多層模型的參數(shù)進(jìn)行自頂向下的逐層調(diào)整。
一般視頻中,目標(biāo)往往只占整個(gè)視頻圖像的一部分,如果在目標(biāo)跟蹤過程中對(duì)整幅圖像的像素進(jìn)行分類,將在一定程度上影響到跟蹤效率。如果可以較準(zhǔn)確地預(yù)測(cè)出下一幀中目標(biāo)的位置,就能夠縮小搜索范圍從而快速對(duì)目標(biāo)進(jìn)行鎖定,同時(shí)還能避免真實(shí)目標(biāo)周圍疑似目標(biāo)的干擾[10-11]。Kalman濾波作為一個(gè)最優(yōu)化自回歸數(shù)據(jù)處理方法,對(duì)于很多預(yù)測(cè)問題,是最優(yōu)的同時(shí)也是計(jì)算效率最高的方法[12-13]。因此,本文算法引入Kalman濾波對(duì)后續(xù)幀圖像中目標(biāo)位置進(jìn)行預(yù)測(cè),只對(duì)預(yù)測(cè)位置周圍適當(dāng)范圍內(nèi)的像素進(jìn)行分類,來得到目標(biāo)分布圖,這樣既減小了算法的計(jì)算量,同時(shí)也避免了目標(biāo)真實(shí)位置周圍的噪聲及相似目標(biāo)的干擾。
使用訓(xùn)練所得DBN分類器對(duì)后續(xù)幀圖像進(jìn)行分類得到目標(biāo)分布圖,如圖4所示,使用Kalman濾波預(yù)測(cè)后,只對(duì)預(yù)測(cè)位置周圍的區(qū)域進(jìn)行分類,效果明顯優(yōu)于對(duì)整幅圖像進(jìn)行分類。
圖4 本文算法分類效果
得到目標(biāo)分布圖后,Camshift算法通過計(jì)算窗口內(nèi)分布圖的零階矩、一階矩來確定窗口的質(zhì)心位置,并以Kalman濾波預(yù)測(cè)的位置作為下一幀搜索窗口位置的初始值。主要過程如下[14-15]:
1)計(jì)算零階矩:
計(jì)算一階矩:
式中,I(x,y)是坐標(biāo)為 (x,y)的像素值,x和y的變化范圍為搜索窗的范圍。
2)計(jì)算搜索窗的質(zhì)心(xc,yc):xc=M10/M00,yc=M01/M00。
3)重設(shè)搜索窗的大小s,s比之前的搜索窗稍大一些。
4)重復(fù)前3步直到迭代收斂,即質(zhì)心變化小于給定的閾值或迭代次數(shù)超過上限。
為了驗(yàn)證本文算法的有效性,使用了多個(gè)場(chǎng)景下的典型視頻進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)平臺(tái)為MATLAB R2012b,電腦配置為Pentium(R)Dual-Core處理器,2G內(nèi)存,WindowsXP操作系統(tǒng)。
實(shí)驗(yàn)一考慮了目標(biāo)出現(xiàn)遮擋的情況,并將本文算法的跟蹤結(jié)果與使用文獻(xiàn)[4]中算法的跟蹤結(jié)果進(jìn)行了對(duì)比,算法跟蹤結(jié)果在圖中用方框標(biāo)出。如圖5所示,視頻中目標(biāo)在運(yùn)動(dòng)過程中目標(biāo)姿勢(shì)、背景等條件存在明顯變化,同時(shí)出現(xiàn)嚴(yán)重的遮擋情況。從實(shí)驗(yàn)結(jié)果可以看出,使用文獻(xiàn)[4]中的算法進(jìn)行跟蹤時(shí),會(huì)在目標(biāo)發(fā)生遮擋后出現(xiàn)較大偏差;使用本文算法跟蹤時(shí),能夠始終對(duì)目標(biāo)實(shí)現(xiàn)準(zhǔn)確跟蹤。這是由于本文使用深度學(xué)習(xí)中的DBN方法訓(xùn)練分類器,能夠?qū)D像進(jìn)行多層次的表示和抽取學(xué)習(xí),學(xué)習(xí)到更高級(jí)別的圖像特征表示形式,分類效果更佳。
圖5 目標(biāo)發(fā)生遮擋時(shí)的跟蹤結(jié)果對(duì)比
如圖6所示,本文算法在其他一些出現(xiàn)目標(biāo)旋轉(zhuǎn)、光照變化、相似背景干擾等情況的場(chǎng)景中依然能準(zhǔn)確地實(shí)現(xiàn)對(duì)目標(biāo)的跟蹤,進(jìn)一步驗(yàn)證了本文算法的有效性。
圖6 算法跟蹤結(jié)果
基于DBN分類的目標(biāo)跟蹤算法的跟蹤效率與DBN結(jié)構(gòu)的層數(shù)密切相關(guān),經(jīng)過反復(fù)實(shí)驗(yàn)對(duì)比,在跟蹤精確度與跟蹤效率之間做出權(quán)衡,本文采用隱藏層數(shù)為50的DBN結(jié)構(gòu),實(shí)驗(yàn)結(jié)果如表1所示,其中平均誤差是指視頻幀中算法所得目標(biāo)位置與目標(biāo)真實(shí)位置之間誤差的平均值,可以看出層數(shù)越多所需訓(xùn)練的時(shí)間越長(zhǎng),但一般也有更好的跟蹤精度。
表1 隱藏層數(shù)選擇實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)二對(duì)比了本文算法與其他兩種基于分類學(xué)習(xí)的算法的跟蹤效率,同時(shí)給出了DBN分類算法加入Kalman濾波預(yù)測(cè)之前的跟蹤效率,結(jié)果如表2所示。其中文獻(xiàn)[16]是一種基于半監(jiān)督學(xué)習(xí)中局部與全局一致性的跟蹤算法,具體給出了算法處理第15~20幀圖像所需時(shí)間??梢钥闯鯠BN分類算法在加入Kalman濾波預(yù)測(cè)之前在跟蹤效率方面就有比較大的優(yōu)勢(shì),加入Kalman濾波預(yù)測(cè)之后,跟蹤效率進(jìn)一步得到提高。
表2 算法效率對(duì)比
本文提出了一種基于深度學(xué)習(xí)中深度置信網(wǎng)絡(luò)的目標(biāo)跟蹤方法,通過DBN網(wǎng)絡(luò)對(duì)輸入圖像進(jìn)行多層次的表示和抽取學(xué)習(xí),將低層特征組合成更加抽象的高層特征形式,得到圖像的分布式特征,提高了分類的精確度;同時(shí)加入Kalman濾波預(yù)測(cè),進(jìn)一步提高了算法的跟蹤效率。針對(duì)不同的情形利用本文提出的方法進(jìn)行測(cè)試,如目標(biāo)旋轉(zhuǎn)、遮擋、復(fù)雜背景、光照變化等,實(shí)驗(yàn)結(jié)果表明,本文方法能夠很好地處理這些情形,實(shí)現(xiàn)對(duì)目標(biāo)的有效跟蹤,且具有較高的跟蹤效率。下一步工作的重點(diǎn)是提升目標(biāo)被遮擋后的跟蹤精度,以及深度學(xué)習(xí)在多目標(biāo)跟蹤方面的應(yīng)用。