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