Siamese RPN

Paper : High Performance Visual Tracking with Siamese Region Proposal Network
Code : unofficial

摘要

之前在閱讀SiamFC的時候就感覺目標追蹤與物體檢測在候選框生成上可以有很多互相借鑑的地方,而且SiamFC存在兩個問題:一個是遍歷的方法容易成爲時間瓶頸,另一個是定位框處理有點太粗糙了,不僅固定了尺寸還固定了長寬比。在目標檢測上提出的RPN遲早要遷移到物體追蹤的任務中。因此商湯在CVPR2018中掏出了一篇SiamRPN。對於深度較深的CNN處理目標追蹤,基本上爲了保證算法的實時性很難像相關濾波器一樣進行在線訓練,因爲更新參數時間花費太高,只能離線訓練。基本上都是one-shot detection task,也就是把每一幀和第一幀中目標的圖像拿出來進行比較。

相比於基於濾波器的目標追蹤算法,作者認爲SiamRPN作爲沒有在線finetune的算法,表現依舊比較好的原因有以下兩點

  1. 足夠大的訓練數據
  2. RPN預測的比較準

網絡架構

在這裏插入圖片描述
前半部分屬於傳統的SiamNetwork,兩CNN共享參數進行特徵提取,中間是一個RPN網絡,一支用來進行二分類,而另一支用來在archors的基礎上對定位框進行進一步的迴歸,其中k表示RPN中選定的archor個數。經過CNN模塊後,將RPN每個分支中的兩個輸出進行相關操作,使用 表示相關操作,得到輸出

Aw×h×2kcls=[φ(x)]cls[φ(z)]clsAw×h×4kreg=[φ(x)]reg[φ(z)]reg \\A_{w\times h\times 2k}^{cls} = [\varphi(x)]_{cls}⋆ [\varphi(z)]_{cls} \\A_{w\times h\times 4k}^{reg} = [\varphi(x)]_{reg}⋆ [\varphi(z)]_{reg}

訓練時使用的損失函數與Faster RCNN 中的相同,對cls使用交叉熵,對reg使用smooth-L1。因爲相鄰兩幀之間尺寸變化不大,因此選擇archor時只使用一種尺寸,多種長寬比 [0.33,0.5,1,2,3][0.33,0.5,1,2,3] 。訓練時,template 和 detection patch pair從同一個視頻中抽取兩幀生成。SiamRPN的每個分支都在ImageNet數據集上進行了預訓練。正負訓練樣本定義如下:定義Archor與目標定位框IoU>0.6 爲正例,<0.3爲負例。

one-shot 部分的解釋對應下圖

在這裏插入圖片描述
圖中,將Template frame 計算一次之後,把上半部分的輸出當成下半部分網絡的參數,然後將上半部分裁剪掉,該網絡就對應了一個單輸入的目標追蹤網絡了。

最後,是proposal region 的選取問題,有兩種策略進行選取

  • 捨棄 archor 距離圖片中心較遠的proposal
    在這裏插入圖片描述

  • 使用cosine窗口對不同位置的score進行加權,根據候選框的長寬變化對proposal進行懲罰

    penalty=exp(kmax(rr,rr)max(ss,ss)) \text{penalty}= \exp(k\max(\frac{r}{r'},\frac{r'}{r})\max(\frac{s}{s'},\frac{s'}{s}))
    其中,kk 是超參數,r,rr,r' 是當前幀與上一幀的長寬比,s,ss,s'是當前幀與上一幀的尺寸
    (w+p)(h+p)=s2 (w+p)(h+p) = s^2
    pp 表示padding寬度,p=w+h2p=\frac{w+h}{2} 。最後,在對分數進行重計算和NMS之後,得到當前幀的定位框位置

總結

SiamRPN在所有實時算法裏準確率最高,完全達到了實時tracking的SOTA,SiamRPN稱得上應用性很強的算法。但是Siam RPN在結構上沒有改進,因此沒能拿到oral。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章