卓怡瀾 陳孟儀 林明秀 高龍年
(東北大學(xué)信息科學(xué)與工程學(xué)院 遼寧省沈陽市 110819)
視覺目標跟蹤是計算機視覺領(lǐng)域的一個重要內(nèi)容,視覺目標跟蹤近幾年發(fā)展迅速,應(yīng)用前景十分廣闊,使用范圍也逐漸從高端的科技產(chǎn)品走向人們的日常生活。視覺目標跟蹤要完成這樣一個任務(wù):手動或自動給出當前視頻第一幀的目標,根據(jù)該幀的目標,從后續(xù)的幀中找到與第一幀中選定的目標的位置。當需要確定一個物體在連續(xù)幀里的位置時常常利用視覺目標跟蹤。跟蹤算法在人機交互、監(jiān)控安防、無人駕駛及軍事戰(zhàn)爭中起到了關(guān)鍵作用具有廣闊的應(yīng)用場景。
目標跟蹤的算法發(fā)展可以分為兩個大階段,前期階段目標跟蹤領(lǐng)域的主流算法的是粒子濾波,光流法,基于回歸方程的算法等。在深度學(xué)習(xí)和相關(guān)濾波的跟蹤方法出現(xiàn)后,目標跟蹤算法就進入了一個新的階段。新的跟蹤算法憑借著更好的魯棒性,準確性和對于復(fù)雜情況的更好的跟蹤效果逐漸替代了舊的算法。
當下的目標跟蹤算法主要有兩個分支,基于相關(guān)濾波的跟蹤算法和基于深度學(xué)習(xí)的跟蹤算法。相關(guān)濾波的跟蹤算法始于2010年的MOSSE算法,此后CSK算法,KCF算法,DCF算法都是在此基礎(chǔ)上發(fā)展而來,在精度和速度上表現(xiàn)優(yōu)異,但是仍無法很好地處理目標尺度變化較大的目標跟蹤問題。
深度學(xué)習(xí)的發(fā)展和計算機算力的增強帶來了視覺算法性能的突飛猛進,深度學(xué)習(xí)技術(shù)也被成功應(yīng)用在跟蹤領(lǐng)域?;谏疃葘W(xué)習(xí)的目標跟蹤是利用深度學(xué)習(xí)訓(xùn)練網(wǎng)絡(luò)模型來學(xué)習(xí)目標特征,得到的卷積特征輸出表達能力雖然更強,但是計算量的增加不可避免,導(dǎo)致網(wǎng)絡(luò)速度不夠理想,精度和速度往往不能兼得。2016年提出的孿生神經(jīng)網(wǎng)絡(luò)算法,大大提升了網(wǎng)絡(luò)跟蹤速度,至此基于神經(jīng)網(wǎng)絡(luò)的跟蹤算法可以實現(xiàn)實時跟蹤兼顧了精度與速度。
孿生神經(jīng)網(wǎng)絡(luò)是基于兩個人工神經(jīng)網(wǎng)絡(luò)建立的耦合結(jié)構(gòu),孿生網(wǎng)絡(luò)在處理跟蹤問題時往往有兩個輸入,其中一個輸入是給定目標第一幀,這兩個輸入分別經(jīng)過特定網(wǎng)絡(luò)處理后,再比較這兩個處理后的結(jié)果的相似度,當相似度較高時可以認為是同一物體,孿生網(wǎng)絡(luò)用于比較兩個輸入相似程度。孿生網(wǎng)絡(luò)通常使用相同的兩個或多個相同的子網(wǎng)絡(luò)構(gòu)成,使得孿生網(wǎng)絡(luò)具有對稱性,實現(xiàn)權(quán)值共享,這些子網(wǎng)絡(luò)同時輸入視頻每幀的信息,對子網(wǎng)絡(luò)的輸出結(jié)果進行互相關(guān)運算實現(xiàn)確定目標位置。
2016年,SiamFC被提出,將當時最新的特征提取網(wǎng)絡(luò)Alexnet融入孿生網(wǎng)絡(luò)的兩個分支中,把跟蹤當做匹配問題,是siam系列網(wǎng)絡(luò)的開端。SiamRPN是CASIA在2018提出來的網(wǎng)絡(luò),它將孿生結(jié)構(gòu)與檢測領(lǐng)域的RPN進行結(jié)合。siamMask就是將跟蹤與分割結(jié)合到了一起,相比與之前的視頻分割工作,其提升了速度。2019年,siamRPN++提出,解決了當時siam系列網(wǎng)絡(luò)普遍存在的一個問題:siam系列的網(wǎng)絡(luò)普遍不夠深,使得siam系列網(wǎng)絡(luò)的發(fā)展又進一步。同年,與siamrpn++一樣,siamDW也是解決siam系列網(wǎng)絡(luò)深度的問題,提出了更寬更深的孿生網(wǎng)絡(luò)?;谏疃葘W(xué)習(xí)的孿生網(wǎng)絡(luò)算法,可以實現(xiàn)實時跟蹤兼顧了精讀與速度,同時參數(shù)較多,仍然面臨著硬件條件不足時跟蹤效果大幅下降的問題。
本文第二部分將介紹孿生網(wǎng)絡(luò)SiamFC的基本結(jié)構(gòu),第三部分將闡述輕量化改進途徑,第四部分將應(yīng)用的新?lián)p失函數(shù),第五部分是實驗結(jié)果。
SiamFC將跟蹤問題看成基準模板圖像和候選樣本圖像的相似度問題,如圖1所示,該網(wǎng)絡(luò)有兩個輸入,一個是作為基準的模板z,另一個則是要選擇的候選樣本x。
圖1:SiamFC網(wǎng)絡(luò)結(jié)構(gòu)
而在單目標跟蹤任務(wù)中,作為基準的模板z則是要跟蹤的對象,通常選取的是視頻序列第一幀中的目標對象,而候選樣本則是之后每一幀中的圖像搜索區(qū)域x,而孿生網(wǎng)絡(luò)要做的就是找到之后每一幀中與第一幀中的范本最相似的候選區(qū)域,即為這一幀中的目標。網(wǎng)絡(luò)具有兩個權(quán)值共享的分支,對兩個不同的輸入執(zhí)行相同的φ變化,127×127×3 的基準模板圖像將生成 6×6×128的特征圖,255×255×3 的候選樣本圖像將生成22×22×128的特征圖,再對兩張?zhí)崛〉奶卣鬟M行互相關(guān)操作,生成17×17×1響應(yīng)圖,根據(jù)響應(yīng)圖映射圖像搜索區(qū)域x中目標的位置。從兩張輸入到獲得響應(yīng)圖的操作可以用一個公式概括:
f(z,x)=φ(z)*φ(x)+b
式中的φ 即為Alexnet,是對x,z兩張圖進行特征提取。
SiamFC是第一個將孿生網(wǎng)絡(luò)成功運用于跟蹤領(lǐng)域的算法,其幀率達到80秒每幀以上,可遠超實時使用的要求,是深度學(xué)習(xí)應(yīng)用于跟蹤算法的里程碑式的創(chuàng)新,后續(xù)的基于深度學(xué)習(xí)的跟蹤算法有許多是基于其改進或者優(yōu)化的,可以說該方法與KCF地位相近,都具有一定的里程碑意義。
遵循相似性度量策略的孿生網(wǎng)絡(luò)跟蹤算法由于其在精度和速度都取得良好的性能,由于全卷積孿生網(wǎng)絡(luò) SiamFC是這類算法框架的開創(chuàng)工作,筆者考慮該算法作為改進算法的基礎(chǔ)。
目前,已經(jīng)有很多網(wǎng)絡(luò)通過替換核心網(wǎng)絡(luò),獲得了更好效果的網(wǎng)絡(luò)的先例。
筆者考慮了SiamFC本身的精度和準確度帶來的局限性:SiamFC的主干網(wǎng)絡(luò)使用的是相對較淺的AlexNet,雖然AlexNet僅有5層卷積層,作為一個較淺的神經(jīng)網(wǎng)絡(luò)它并不具備強大的特征提取能力,如果置換更深的卷積神經(jīng)網(wǎng)絡(luò),伴隨而來的是結(jié)構(gòu)越加復(fù)雜,網(wǎng)絡(luò)體及逐漸增大,對硬件配置需求逐漸增多的問題。為解決這種矛盾,筆者希望新算法在提升主干網(wǎng)絡(luò)特征提取能力的同時,參數(shù)量還能更小以保證跟蹤速度和滿足特定算力相對不足的場景。于是提出基于輕量ShuffleNet的孿生網(wǎng)絡(luò)跟蹤算法,替換掉原本的Alexnet,選擇ShuffleNet作為新的核心網(wǎng)絡(luò)。
ShuffleNet是一種被稱為可以在移動端使用的輕量級特征值提取網(wǎng)絡(luò),由殘差網(wǎng)絡(luò)發(fā)展而來,其輕量化思想的核心是一種通道混洗。
Shuffle(通道混洗)操作的前提是將輸入圖像按通道分為幾個組別,各個組別分別與卷積核做卷積,比起每一個卷積核與每一個通道卷積的算法,這樣的神經(jīng)網(wǎng)絡(luò)計算量大大減小。同時為解決各個通道之間不進行交流,導(dǎo)致學(xué)習(xí)的內(nèi)容變少的問題,Shuffle操作對各個組別的通道進行通道混洗,交換各個組別內(nèi)的通道內(nèi)容,Shuffle操作使ShuffleNet實現(xiàn)了輕量化和精確度的兼顧。
ShuffleNet由ResNet改進而來,ResNet因為其具有密集的1×1 卷積而具有較大的計算量所以作者對ResNet進行如下修改:
如圖2(A)所示,為最初的卷積單元,圖2(B)將圖3(A)中1×1 卷積層替換成三層網(wǎng)絡(luò),分別為1×1的分組卷積層,通道混洗層,3×3的深度卷積層,并在其后加上一個1×1 的分組卷積用來保證輸入和輸出的維度一致。圖2(C)在圖2(B)網(wǎng)絡(luò)的基礎(chǔ)上將ResNet中的跳躍連接改為一個 3×3 的平均池化,將跳躍連接后的相加操作改為了拼接操作。
圖2:構(gòu)成ShuffleNet的ShuffleNet單元
圖2(A)為ResNet卷積單元,圖2(B)將1×1 卷積層替換成三層網(wǎng)絡(luò),圖2(C)將ResNet中的跳躍連接改為池化層,為ShuffleNet最終的卷積單元。
ShuffleNet相比于原先應(yīng)用于SiamFC的Alexnet,它是更深的特征提取網(wǎng)絡(luò),在此前就有將更深的網(wǎng)絡(luò)運用于孿生跟蹤網(wǎng)絡(luò)改進的例子,最典型的就是DWsiam(Deeper and Wider Siamese Networks)將改進后的殘差網(wǎng)絡(luò)應(yīng)用于孿生跟蹤網(wǎng)絡(luò)的特征提取。
DWsiam作者通過系統(tǒng)的實驗發(fā)現(xiàn)了主干網(wǎng)絡(luò)影響孿生網(wǎng)絡(luò)的三個重要因素:最后一層感受野大小、網(wǎng)絡(luò)總步長和特征的padding的有無,并且依據(jù)以上三個因素提出了這樣一個想法:一個孿生網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計較深的特征提取網(wǎng)絡(luò)一般不是為目標跟蹤設(shè)計的,需要進行修改。
該作者的理論簡單的分為以下四點:
孿生類跟蹤器的網(wǎng)絡(luò)步長作者推薦4或者8,步長太大會導(dǎo)致目標定位的準確性偏差大。
最后一層感受野的大小與樣例圖片的大小有關(guān),最好是樣例圖像的60%-80%。太大的感受野雖然增加了目標的上下文信息,但是減少了目標本身的局部信息和判別信息。
網(wǎng)絡(luò)的步長和感受野的大小,是有直接關(guān)系的,步長的該表會影響感受野大小,必須將其視為一個整體進行調(diào)整。
對于全卷積的孿生網(wǎng)絡(luò)結(jié)構(gòu),去除padding層的影響也是至關(guān)重要的。含有padding操作的卷積層會影響跟蹤時目標框的定位準確性,特別是當目標對象運動到圖像搜索區(qū)域邊緣時。
本文參考該作者的理論對ShuffleNet做了如下修改:
?進行Corp操作,去除padding層的影響。ShuffleNet由圖2(C)所示的Shuffle單元堆疊構(gòu)成,對于有padding操作的模塊,在每次concat操作前,都裁去特征圖最外圈以消除padding層的影響。
?將總步長修改至8
?控制感受野在60%-80%
?修改激活函數(shù)relu為elu。與原先的relu激活函數(shù)相比,elu有relu幾乎所有優(yōu)點,同時該函數(shù)處處連續(xù)可微,對于負值梯度是非零的,本文發(fā)現(xiàn)該激活函數(shù),更契合本文創(chuàng)造的網(wǎng)絡(luò)的訓(xùn)練過程,可以實現(xiàn)更快訓(xùn)練,并提高準確性。
?如表1所示,放縮ShuffleNet網(wǎng)絡(luò)寬度可以有效降低網(wǎng)絡(luò)復(fù)雜度,故本算法使用ShuffleNet0.25x。
表1:三種網(wǎng)絡(luò)寬度對應(yīng)的算法復(fù)雜度
Focal loss在2017年由RBG和Kaiming提出,該損失函數(shù)最初是為了解決one-stage目標檢測算法中正負樣本比例不平衡的問題。Focal loss較之交叉熵損失,該損失函數(shù)降低了大量負樣本的權(quán)重,也降低了簡單易分類樣本的權(quán)重,突出了難以區(qū)分正樣本的權(quán)重。筆者發(fā)現(xiàn)在訓(xùn)練目標跟蹤網(wǎng)絡(luò)中,存在正負樣本比例失調(diào)的問題,所以用Focal Loss替代了SiamFC原先使用的交叉熵損失函數(shù)。
交叉熵損失函數(shù)公式如下:
在SiamFC中 是經(jīng)過特征提取以及互相關(guān)運算后每個像素點的得分,經(jīng)過sigmoid激活函數(shù)的輸出,因此在0-1之間,y是訓(xùn)練集中標注的跟蹤目標的真實位置,被判定為目標的像素被標注為1,也就是正樣本,判定為背景的像素被標注為0,也就是負樣本。正樣本輸出交叉熵概率越大損失越小,負樣本輸出概率樣本越小交叉熵損失越小,在樣本分布不均勻的時候這種損失函數(shù)會有過于關(guān)注正樣本或者負樣本的問題。Focal loss將其改為如下:
式(3)首先在原有的基礎(chǔ)上加了一個因子γ,當γ為0時即為交叉熵損失函數(shù),γ>0可以減少易分類樣本的損失,例如 =0.9,y=1,γ=2時,由于0.9和1差距不大,是一個易分類的樣本,F(xiàn)ocal loss就比交叉熵損失小了100倍,這使得訓(xùn)練更關(guān)注于困難的、錯分的樣本。加入平衡因子α,用來增加比例較小樣本的權(quán)重。
Focal loss的作者通過實驗得出γ=2,α=0.25最好,在實驗過程中筆者發(fā)現(xiàn)γ=2是可行的,還發(fā)現(xiàn)使用的視頻訓(xùn)練集中,正樣本數(shù)量明顯低于負樣本數(shù)量,且每個序列正負樣本比例差距較大,所以α則被設(shè)定為自適應(yīng)比例,α與正樣本占總樣本的比例成反比。
Got10k是中科院于2018年發(fā)布的目標追蹤數(shù)據(jù)集,包含560種運動物體的87種運動模式,提供了10000個視頻片段包含150萬個人工標注的邊界框,全部取材于現(xiàn)實世界里移動的物體。
如表2所示,對整個數(shù)據(jù)集訓(xùn)練 50 輪,學(xué)習(xí)率從10衰減至10。
表2:實驗平臺
OTB2015數(shù)據(jù)集是一種專門用于測試跟蹤算法的視頻序列數(shù)據(jù)集,OTB包含100組視頻序列,既有灰度圖像也有彩色圖像,涉及到目標跟蹤的11個屬性。包括快速運動,背景混亂,變形,遮擋,運動模糊,光照變化,尺度變化,出視野,低分辨率,平面外旋轉(zhuǎn),平面內(nèi)旋轉(zhuǎn)。測試精度的主要采用了兩個評價指標:準確率和成功率。準確率表示目標跟蹤算法跟蹤時認定的中心點與OTB人工標注的中心的距離小于給定閾值的視頻幀的百分比,當給定中心點位置誤差的閾值越大時,算法的準確率越高。成功率表示重合率得分超過某個閾值的幀的百分比,當重疊率閾值越高時,算法的成功率越低。在使用本文Focal損失函數(shù)的時候,模型的準確率和成功率分別達到了0.634和 0.490而使用傳統(tǒng)損失算法,準確率和成功率也達到了0.595和0.457。
平均幀率在顯卡加速的情況下達到了平均278.6648幀每秒,較之SiamFC的88.84501幀每秒提升較大。在CPU上運行速度也從13.31763幀每秒提高至21.13489幀每秒。模型大小由SiamFC的9144kb降到56kb。說明該算法對于設(shè)備的要求相較于SiamFC明顯降低,實現(xiàn)跟蹤算法輕量化以及高幀率的跟蹤。
本文以 SiamFC 算法框架為基準,使用ShuffleNet代替Alexnet對SiamFC跟蹤算法進行輕量化,增加網(wǎng)絡(luò)深度的同時,縮減模型大小。文中將針對跟蹤算法的特點,修改ShuffleNet網(wǎng)絡(luò)步長,控制感受野,消除padding層的影響,改變了損失函數(shù);在訓(xùn)練時,用Focal loss替換交叉熵損失,削弱了正負樣本比例失調(diào)的影響。實驗結(jié)果證明,該網(wǎng)絡(luò)在保證算法參數(shù)量小,兼顧精度和速度的情況下,實現(xiàn)了輕量化,降低了跟蹤算法對硬件的需求。