SiamRPN:High Performance Visual Tracking with Siamese Region Proposal Network 孿生網(wǎng)絡(luò)

原文鏈接

論文地址:http://openaccess.thecvf.com/content_cvpr_2018/papers/Li_High_Performance_Visual_CVPR_2018_paper.pdf

摘要

大多數(shù)性能優(yōu)越的視覺目標(biāo)跟蹤器很難有實(shí)時速度。在這篇文章中,我們提出了孿生候選區(qū)域生成網(wǎng)絡(luò)(Siamese region proposal network),簡稱Siamese-RPN,它能夠利用大尺度的圖像對離線端到端訓(xùn)練。具體來講,這個結(jié)構(gòu)包含用于特征提取的孿生子網(wǎng)絡(luò)(Siamese subnetwork)和候選區(qū)域生成網(wǎng)絡(luò)(region proposal subnetwork),其中候選區(qū)域生成網(wǎng)絡(luò)包含分類回歸兩條支路。在跟蹤階段,我們提出的方法被構(gòu)造成為單樣本檢測任務(wù)(one-shot detection task)。

我們預(yù)先計算孿生子網(wǎng)絡(luò)中的模板支路,也就是第一幀,并且將它構(gòu)造成一個檢測支路中區(qū)域提取網(wǎng)絡(luò)里面的一個卷積層,用于在線跟蹤。得益于這些改良,傳統(tǒng)的多尺度測試和在線微調(diào)可以被舍棄,這樣做也大大提高了速度。Siamese-RPN跑出了160FPS的速度,并且在VOT2015,VOT2016和VOT2017上取得了領(lǐng)先的成績。

1.引言

與適當(dāng)設(shè)計的最先進(jìn)的基于相關(guān)濾波器的方法相比,基于離線訓(xùn)練的基于深度學(xué)習(xí)的跟蹤器可以獲得較好的結(jié)果。關(guān)鍵是候選的孿生候選區(qū)域生成網(wǎng)絡(luò)(Siamese-RPN)。它由模板分支檢測分支組成,它們以端到端的方式對大規(guī)模圖像對進(jìn)行離線訓(xùn)練。受到最先進(jìn)的候選區(qū)域提取方法RPN 的啟發(fā),我們對相關(guān)feature map進(jìn)行提議提取。與標(biāo)準(zhǔn)RPN不同,我們使用兩個分支的相關(guān)特征映射進(jìn)行提議提取。在跟蹤任務(wù)中,我們沒有預(yù)定義的類別,因此我們需要模板分支將目標(biāo)的外觀信息編碼到RPN要素圖中以區(qū)分前景和背景。

在跟蹤階段,作者將此任務(wù)視為單目標(biāo)檢測任務(wù)(one-shot detection),什么意思呢,就是把第一幀的bb視為檢測的樣例,在其余幀里面檢測與它相似的目標(biāo)。

綜上所述,作者的貢獻(xiàn)有以下三點(diǎn):

1.提出了Siamese region proposal network,能夠利用ILSVRC和YouTube-BB大量的數(shù)據(jù)進(jìn)行離線端到端訓(xùn)練。

2.在跟蹤階段將跟蹤任務(wù)構(gòu)造出局部單目標(biāo)檢測任務(wù)。

3.在VOT2015, VOT2016和VOT2017上取得了領(lǐng)先的性能,并且速度能都達(dá)到160fps。

2.相關(guān)工作

2.1 RPN

RPN即Region Proposal Network,是用RON來選擇感興趣區(qū)域的,即proposal extraction。例如,如果一個區(qū)域的p>0.5,則認(rèn)為這個區(qū)域中可能是80個類別中的某一類,具體是哪一類現(xiàn)在還不清楚。到此為止,網(wǎng)絡(luò)只需要把這些可能含有物體的區(qū)域選取出來就可以了,這些被選取出來的區(qū)域又叫做ROI(Region of Interests),即感興趣的區(qū)域。當(dāng)然RPN同時也會在feature map上框定這些ROI感興趣區(qū)域的大致位置,即輸出Bounding Box。

RPN詳細(xì)介紹:https://mp.weixin.qq.com/s/VXgbJPVoZKjcaZjuNwgh-A

2.2 One-shot learning

最常見的例子就是人臉檢測,只知道一張圖片上的信息,用這些信息來匹配出要檢測的圖片,這就是單樣本檢測,也可以稱之為一次學(xué)習(xí)。

3 Siamese-RPN framework

3.1 SiamFC

SiamFC詳細(xì)介紹:https://mp.weixin.qq.com/s/kS9osb2JBXbgb_WGU_3mcQ

所謂的Siamese(孿生)網(wǎng)絡(luò),是指網(wǎng)絡(luò)的主體結(jié)構(gòu)分上下兩支,這兩支像雙胞胎一樣,共享卷積層的權(quán)值。上面一支(z)稱為模板分支(template),用來提取模板幀的特征。φ表示一種特征提取方法,文中提取的是深度特征,經(jīng)過全卷積網(wǎng)絡(luò)后得到一個6×6×128的feature map φ(z)。下面一支(x)稱為檢測分支(search),是根據(jù)上一幀的結(jié)果在當(dāng)前幀上crop出的search region。同樣提取了深度特征之后得到一個22×22×128的feature map φ(x)。模版支的feature map在當(dāng)前幀的檢測區(qū)域的feature map上做匹配操作,可以看成是φ(z)在φ(x)上滑動搜索,最后得到一個響應(yīng)圖,圖上響應(yīng)最大的點(diǎn)就是對應(yīng)這一幀目標(biāo)的位置。

Siamese網(wǎng)絡(luò)的優(yōu)點(diǎn)在于,把tracking任務(wù)做成了一個檢測/匹配任務(wù),整個tracking過程不需要更新網(wǎng)絡(luò),這使得算法的速度可以很快(FPS:80+)。此外,續(xù)作CFNet將特征提取和特征判別這兩個任務(wù)做成了一個端到端的任務(wù),第一次將深度網(wǎng)絡(luò)和相關(guān)濾波結(jié)合在一起學(xué)習(xí)。

Siamese也有明顯的缺陷:

1.模板支只在第一幀進(jìn)行,這使得模版特征對目標(biāo)的變化不是很適應(yīng),當(dāng)目標(biāo)發(fā)生較大變化時,來自第一幀的特征可能不足以表征目標(biāo)的特征。至于為什么只在第一幀提取模版特征,我認(rèn)為可能因?yàn)椋?/p>

(1)第一幀的特征最可靠也最魯棒,在tracking過程中無法確定哪一幀的結(jié)果可靠的情況下,只用第一幀特征足以得到不錯的精度。

(2)只在第一幀提取模板特征的算法更精簡,速度更快。

2.Siamese的方法只能得到目標(biāo)的中心位置,但是得不到目標(biāo)的尺寸,所以只能采取簡單的多尺度加回歸,這即增加了計算量,同時也不夠精確。

網(wǎng)絡(luò)訓(xùn)練原理

如圖所示,上一幀的目標(biāo)模板與下一幀的搜索區(qū)域可以構(gòu)成很多對的模板-候選對(exemplar-candidate pair), 但是根據(jù)判別式跟蹤原理,僅僅下一幀的目標(biāo)與上一幀的目標(biāo)區(qū)域(即 exemplar of T frame-exemplar of T+1 frame)屬于模型的正樣本,其余大量的exemplar-candidate pair都是負(fù)樣本。這樣就完成了網(wǎng)絡(luò)結(jié)構(gòu)的端到端的訓(xùn)練。

3.2 Siamese-RPN

左邊是孿生網(wǎng)絡(luò)結(jié)構(gòu),上下支路的網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)完全相同,上面是輸入第一幀的bounding box,靠此信息檢測候選區(qū)域中的目標(biāo),即模板幀。下面是待檢測幀,顯然,待檢測幀的搜索區(qū)域比模板幀的區(qū)域大。中間是RPN結(jié)構(gòu),又分為兩部分,上部分是分類支路,模板幀和檢測幀的經(jīng)過孿生網(wǎng)絡(luò)后的特征再經(jīng)過一個卷積層,模板幀特征經(jīng)過卷積層后變?yōu)?k×256通道,k是anchor數(shù)量,因?yàn)榉譃閮深?,所以?k。下面是邊界框回歸支路,因?yàn)橛兴膫€量[x, y, w, h],所以是4k右邊是輸出。

3.3 孿生特征提取子網(wǎng)絡(luò)

預(yù)訓(xùn)練的AlexNet,剔除了conv2 conv4兩層 。φ(z)是模板幀輸出,φ(x)是檢測幀輸出

3.4 候選區(qū)域提取子網(wǎng)絡(luò)

分類支路和回歸支路分別對模板幀和檢測幀的特征進(jìn)行卷積運(yùn)算:

包含2k個通道向量,中的每個點(diǎn)表示正負(fù)激勵,通過交叉熵?fù)p失分類;包含4k個通道向量,每個點(diǎn)表示anchor和gt之間的dx,dy,dw,dh,通過smooth L1 損失得到:

A^{cls}_{w×h×2k}=[\psi(x)]_{cls}×[\psi(z)]_{cls}\\
A^{reg}_{w×h×4k}=[\psi(x)]_{reg}×[\psi(z)]_{reg}

Ax, Ay, Aw, Ah是anchor boxes中心點(diǎn)坐標(biāo)和長寬; Tx, Ty, Tw, Th是gt boxes,為什么要這樣呢,因?yàn)椴煌瑘D片之間的尺寸存在差異,要對它們做正規(guī)化。

smoothL1損失:

\delta[0]=\frac{T_x-A_x}{A_w},
\delta[1]=\frac{T_y-A_y}{A_h}\\
\delta[2]=ln\frac{T_w}{A_w},
\delta[3]=ln\frac{T_h}{A_h}

3.5 訓(xùn)練階段:端到端訓(xùn)練孿生RPN

因?yàn)楦欀羞B續(xù)兩幀的變化并不是很大,所以anchor只采用一種尺度,5種不同的長寬比(與RPN中的3×3個anchor不同)。當(dāng)IoU大于0.6時是前景,小于0.3時是背景。

4. Tracking as one-shot detection

平均損失函數(shù)L:

\min_{W} \frac{1}{n} \sum_{i=1}^n L(\psi(x_i;w(z_i,W)),l_i)

如上所述,讓z表示模板patch,x表示檢測patch,函數(shù)φ表示Siamese特征提取子網(wǎng),函數(shù)ζ表示區(qū)域建議子網(wǎng),則一次性檢測任務(wù)可以表示為:

\min_{W} \frac{1}{n} \sum_{i=1}^n L(\zeta(\psi(x_i;W);\psi(z_i;W)),l_i)


如圖,紫色的部分像原始的Siamese網(wǎng)絡(luò),經(jīng)過同一個CNN之后得到了兩個feature map,藍(lán)色的部分是RPN。模板幀在RPN中經(jīng)過卷積層, 和 當(dāng)作檢測所用的核。

簡單的說,就是預(yù)訓(xùn)練模版分支,利用第一幀的目標(biāo)特征輸出一系列weights,而這些weights,包含了目標(biāo)的信息,作為檢測分支RPN網(wǎng)絡(luò)的參數(shù)去detect目標(biāo)。這樣做的好處是:

(1)模板支能學(xué)到一個encode了目標(biāo)的特征,用這個特征去尋找目標(biāo),這會比直接用第一幀的feature map去做匹配更魯棒。

(2)相比原始的Siamese網(wǎng)絡(luò),RPN網(wǎng)絡(luò)可以直接回歸出目標(biāo)的坐標(biāo)和尺寸,既精確,又不需要像multi-scale一樣浪費(fèi)時間。

經(jīng)過網(wǎng)絡(luò)后,我們將分類和回歸特征映射表示為點(diǎn)集:

A^{cls}_{w×h×2k}={(x_i^{cls},y_j^{cls},c_l^{cls})}\\
A^{reg}_{w×h×4k}={(x_i^{reg},y_i^{reg},dx_p^{reg},dy_p^{reg},dw_p^{reg},dh_p^{reg})}

由于分類特征圖上的奇數(shù)通道代表正激活,我們收集所有中的前K個點(diǎn),其中l(wèi)是奇數(shù),并表示點(diǎn)集為:

CLS^*={(x_i^{cls},y_j^{cls},c_l^{cls})_{i∈I,j∈J,l∈L}}

其中I,J,L是一些索引集。

變量i和j分別編碼相應(yīng)錨點(diǎn)的位置,l編碼相應(yīng)錨點(diǎn)的比率,因此我們可以導(dǎo)出相應(yīng)的錨點(diǎn)集合為:

ANC^*={(x_i^{an},y_j^{an},w_l^{an},h_l^{an})_{i∈I,j∈J,l∈L}}

此外,我們發(fā)現(xiàn)上ANC*的激活得到相應(yīng)的細(xì)化坐標(biāo)為:

FEG^*={(x_i^{reg},y_j^{reg},dx_l^{reg},dy_l^{reg},dw_l^{reg},dh_l^{reg})_{i∈I,j∈J,l∈L}}

因?yàn)槭欠诸?,選前k個點(diǎn),分兩步選擇:

第一步,舍棄掉距離中心太遠(yuǎn)的bb,只在一個比原始特征圖小的固定正方形范圍里選擇,如下圖:

中心距離為7,仔細(xì)看圖可以看出,每個網(wǎng)格都有k個矩形。

第二步,用余弦窗(抑制距離過大的)和尺度變化懲罰(抑制尺度大變化)來對proposal進(jìn)行排序,選最好的。具體公式可看論文。

用這些點(diǎn)對應(yīng)的anchor box結(jié)合回歸結(jié)果得出bounding box:

x_i^{pro}=x_i^{an}+dx_l^{reg}*w_l^{an}\\
y_j^{pro}=y_j^{an}+dy_l^{reg}*h_l^{an}\\
w_l^{pro}=w_l^{an}*e^{dw_l}\\
h_l^{pro}=h_l^{an}*e^{dh_l}

an就是anchor的框,pro是最終得出的回歸后的邊界框 至此,proposals set就選好了。

然后再通過非極大抑制(NMS),顧名思義,就是將不是極大的框都去除掉,由于anchor一般是有重疊的overlap,因此,相同object的proposals也存在重疊。為了解決重疊proposal問題,采用NMS算法處理:兩個proposal間IoU大于預(yù)設(shè)閾值,則丟棄score較低的proposal。

IoU閾值的預(yù)設(shè)需要謹(jǐn)慎處理,如果IoU值太小,可能丟失objects的一些 proposals;如果IoU值過大,可能會導(dǎo)致objects出現(xiàn)很多proposals。IoU典型值為0.6。

5.實(shí)施細(xì)節(jié)

我們使用從ImageNet [28]預(yù)訓(xùn)練的改進(jìn)的AlexNet,前三個卷積層的參數(shù)固定,只調(diào)整Siamese-RPN中的最后兩個卷積層。這些參數(shù)是通過使用SGD優(yōu)化等式5中的損耗函數(shù)而獲得的。共執(zhí)行了50個epoch,log space的學(xué)習(xí)率從10-2降低到10-6。我們從VID和Youtube-BB中提取圖像對,通過選擇間隔小于100的幀并執(zhí)行進(jìn)一步的裁剪程序。如果目標(biāo)邊界框的大小表示為(w,h),我們以大小A×A為中心裁剪模板補(bǔ)丁,其定義如下:

(w+p)×(h+p)=A^2

其中p =(w + h)/2

之后將其調(diào)整為127×127。以相同的方式在當(dāng)前幀上裁剪檢測補(bǔ)丁,其大小是模板補(bǔ)丁的兩倍,然后調(diào)整為255×255。

在推理階段,由于我們將在線跟蹤制定為一次性檢測任務(wù),因此沒有在線適應(yīng)。我們的實(shí)驗(yàn)是在帶有Intel i7,12G RAM,NVidia GTX 1060的PC上使用PyTorch實(shí)現(xiàn)的。

學(xué)習(xí)更多編程知識,請關(guān)注我的公眾號:

代碼的路

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容