SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks
2019-04-02 12:44:36
Paper:https://arxiv.org/pdf/1812.11703.pdf
Project:https://lb1100.github.io/SiamRPN++
Official Code: https://github.com/STVIR/pysot
Unofficial Pytorch Implementation: https://github.com/PengBoXiangShang/SiamRPN_plus_plus_PyTorch (Support Multi-GPU and LMDB data preprocessing)
1. Background and Motivation:
與 CVPR 2019 的另一篇文章 Deeper and Wider Siamese Networks for Real-Time Visual Tracking 類似,這篇文章也是為了解決 Siamese Tracker 無法利用 Deep Backbone Network 的問題。作者的實驗發現,較深的網絡,如 ResNet, 無法帶來跟蹤精度提升的原因在於:the distroy of the strict translation invariance。因為目標可能出現在搜索區域的任何位置,所以學習的target template 的特征表達應該保持 spatial invariant,而作者發現,在眾多網絡中,僅僅 AlexNet 滿足這種約束。本文中,作者提出一種 layer-wise feature aggravation structure 來進行 cross-correlation operation,幫助跟蹤器從多個層次來預測相似形圖。
此外,作者通過分析 Siamese Network 發現:the two network branches are highly imbalanced in terms of parameter number; 作者進一步提出 depth-wise separable correlation structure,這種結構不但可以大幅度的降低 target template branch 的參數個數,還可以穩定整個模型的訓練。此外,另一個有趣的現象是:objects in the same categories have high response on the same channels while responses of the rest channels are supressed. 這種正交的屬性可能有助於改善跟蹤的效果。
2. Analysis on Siamese Networks for Tracking:
各種實驗說明了 stride,padding 對深度網絡的影響。
3. ResNet-driven Siamese Tracking :
為了降低上述影響因子對跟蹤結果的影響,作者對原始的 ResNet 進行了修改。因為原始的殘差網絡 stride 為 32,這個參數對跟蹤的影響非常之大。所以作者對最后兩個 block 的有效 stride,從 32 和 16 改為 8,並且通過 dilated convolution 來增加 receptive field。利用 1*1 的卷積,將維度降為 256。但是這篇文章,並沒有將 padding 的參數進行更改,所以 template feature map 的空間分辨率增加到 15,這就在進行 correlation 操作的時候,計算量較大,影響跟蹤速度。所以,作者從中 crop 一塊 7*7 regions 作為 template feature,每一個 feature cell 仍然可以捕獲整個目標區域。作者發現仔細的調整 ResNet,是可以進一步提升效果的。通過將 ResNet extractor 的學習率設置為 RPN 網絡的 1/10,得到的 feature 可以更加適合 tracking 任務。
4. Layer-wise Aggregation :
本文是想利用多層特征的聚合來提升特征表達,提升跟蹤結果。作者從最后三個殘差模塊,得到對應的輸出:F3(z), F4(z) 以及 F5(z)。由於多個 RPN 模塊的輸出,有相同的分辨率。所以,直接對這幾個結果進行加權求和,可以表達為:
5. Depthwise Cross Correlation :
Cross correlation module 是映射兩個分支信息的核心操作。SiamFC 利用 Cross-Correlation layer 來得到單個通道響應圖進行位置定位。在 SiamRPN 中,Cross-Correlation 被拓展到更加高層的信息,例如 anchors,通過增加一個 huge convolutional layer 來 scale the channels (UP-Xcorr)。這個 heavy up-channel module 使得參數非常不平衡(RPN 模塊包含 20M 參數,而特征提取部分僅包含 4M 參數),這就使得 SiamRPN 變的非常困難。於是作者提出一個輕量級的 cross correlation layer,稱為:Depthwise Cross Correlation (DW-XCorr),以得到更加有效的信息貫通。DW-XCorr layer 包含少於 10 倍的參數(相比於 UP-XCorr used in RPN),而性能卻可以保持不降。
為了達到這個目標,作者采用一個 conv-bn block 來調整特征,來適應跟蹤任務。Bounding box prediction 和 基於 anchor 的分類都是非對稱的 (asymmetrical)。為了編碼這種不同,the template branch 和 search branch 傳輸兩個 non-shared convolutional layers。然后,這兩個 feature maps 是有相同個數的 channels,然后一個 channel 一個 channel 的進行 correlation operation。另一個 conv-bn-relu block,用於融合不同 channel 的輸出。最終,最后一個卷積層,用於輸出 classification 和 regression 的結果。
通過用 Depthwise correlation 替換掉 cross-correlation,我們可以很大程度上降低計算代價和內存使用。通過這種方式,template 和 search branch 的參數數量就會趨於平衡,導致訓練過程更加穩定。
另一個有意思的現象是:the objects in the same category have high response on same channels, while response of the rest channels are supressed。也就是說,同一類的物體在同一個 channel 上,都有較高的響應,而其他的 channels 上則被抑制。如下圖所示:
6. Experimental Results:
==