SPLT(Skimming-Perusal Tracking)算法详解
‘Skimming-Perusal’ Tracking: A Framework for Real-Time and Robust Long-term Tracking
論文鏈接:論文鏈接
論文代碼:代碼鏈接
目錄
- 1、SPLT算法簡介
- 1.1 short-term tracking和long-term tracking的區別
- 1.2 SPLT簡介
- 2、SPLT算法整體框架
- 3、SPLT算法實現步驟
- 4、SPLT算法細節詳解
- 4.1 Perusal模塊詳解
- 4.1.1 SiameseRPN網絡
- 4.1.2 Verification網絡
- 4.2 Skimming模塊詳解
- 4.3 論文實現細節
- 4.3.1 網絡架構和訓練數據集
- 4.3.2 訓練數據集預處理
- 4.3.3 訓練策略
- 4.3.4 網絡測試速度
- 5、SPLT算法結果分析
- 6、個人總結
- 參考資料
- 注意事項
1、SPLT算法簡介
1.1 short-term tracking和long-term tracking的區別
??對于這兩者而言,主要存在2個不同之處:
- 即視頻幀的總數不同。前者的測試視頻的長度一般都比較短,整個視頻幀總共幾十幀或者幾百幀;而后者的測試視頻的長度一般都比較長,整個視頻幀總共幾千幀。
- 即兩者的輸出內容不同。前者僅僅需要在視頻的每一幀中輸出對應的BB即可;而后者不僅僅需要輸出每一幀中目標的BB信息,同時需要提供出待跟蹤目標的狀態,存在或者缺失。
1.2 SPLT簡介
??SPLT是一個long-term跟蹤算法。整個算法是基于一個skimming模塊和一個 perusal模塊,perusal模塊包含一個高效的BB回歸器-其用來生成一系列的目標候選框;和一個目標驗證器-其用來根據自信度得分選擇出一個最優的候選框。skimming模塊的作用是根據得分去判斷目標在當前幀中的存在情況,然后根據這個信息靈活的選擇使用局部搜索還是全局搜索策略。
2、SPLT算法整體框架
??上圖展示了整個SPLT跟蹤算法的整體框架。框圖的上方表示的是Perusal模塊,框圖下方表示的是Skimming模塊。通過觀察上圖我們可以發現,Perusal模塊中包含著一個SiameseRPN-即所謂的BB回歸器和一個Verifier,前者通過匹配策略在原圖中尋找到多個可能的候選區域,然后將這些候選區域送到后面的Verifier模塊中做Feature Embedding-即將目標圖片和候選的目標嵌入到同一個空間中,接著使用Cosine Similarity來獲得一個最優的候選框。后者在前者的基礎上根據候選框的Confidence Score來切換成不同的搜索策略,當該Confidence Score>threshold時,采用Local Search策略來在下一幀中尋找目標-即在一個小的搜索區域中尋找目標;當Confidence Score<threshold時,采用Global Serach策略來在下一幀中尋找目標-即在一個大的區域中尋找目標。
3、SPLT算法實現步驟
??通過理解上面的算法整體框架,你可能已經明白整個算法啦,這里我詳細的整理一下整個算法的實現步驟,具體的實現步驟如下所示:
- 步驟1-根據數據集中提供的BB信息在視頻第一幀中裁剪出待跟蹤的目標;
- 步驟2-選擇一個合適的搜索區域,并將其和第一幀中目標的BB同時輸入到SiameseRPN網絡中;
- 步驟3-使用SiamRPN中的RPN網絡來在搜索區域中獲得多個候選的目標框,即圖中的Candidate Proposal;
- 步驟4-對候選的目標框和第一幀的目標框通過Feature Embedding嵌入到同一個空間之中;
- 步驟5-使用Cosine Similarity來尋找出最可能包含待跟蹤目標的邊界框,即圖中的紅色BB;
- 步驟6-根據選擇的BB的Confidence Score來進行搜索區域的切換操作,即當該Confidence Score>threshold時,采用Local Search策略來在下一幀中尋找目標-即在一個小的搜索區域中尋找目標;當Confidence Score<threshold時,采用Global Serach策略來在下一幀中尋找目標-即在一個大的區域中尋找目標;
- 步驟7-在視頻中的下一幀中重復執行上面的操作,直到視頻的最后一幀。
4、SPLT算法細節詳解
4.1 Perusal模塊詳解
??SPLT的Perusal模塊由一個預訓練好的SiameseRPN模型和一個預訓練好的verification模型組成。前者的作用是從搜索區域中尋找到一個候選的BB,后者的作用是對這些候選的BB進行驗證并選擇出最優的一個BB。
4.1.1 SiameseRPN網絡
??上圖展示了SiameseRPN網絡的整體框架。這個算法使用一個Feature Extraction分別獲取Search Region和Target Template的特征表示;然后使用Feature Fusion將不同的Feature Map進行融合;接著將融合之后的特征送入RPN網絡中進行目標檢測;接著使用NMS對檢測的結果進行去重處理;最終輸出相應的檢測框,即目標所在的具體位置信息。
4.1.2 Verification網絡
??整個驗證網絡的作用是通過將不同的BB映射到同一個距離空間中,然后計算其Cos相似度,最后選擇出最優的BB。使用 triplet loss來確保整個算法的判別能力。
4.2 Skimming模塊詳解
??該模塊的主要作用是根據選擇的BB的Confidence Score值來進行全局和局部搜索區域的快速切換操作。當我能確定當前的BB是我要找的目標的時候,我就可以在一個很好的搜索區域范圍內快速的在下一幀中找到目標;當我不能確定當前的BB是我要找的目標的時候,我就需要在一個大的區域中尋找目標,免的我丟失目標。從而在提升準確率的同時提升算法的運行速度。
??上圖展示的是Skimming模塊的網絡架構。整個網絡的作用是為了學習一個函數p=g(Z,X)p=g(\mathcal{Z}, \mathcal{X})p=g(Z,X)來表示待跟蹤的目標是否出現在該區域中,即一個簡單的二分類問題。整個網絡首先將Target Template和Search Region同時輸入到一個Feature Extraction中來獲取特征表示;然后將目標的Feature Map擴展為1024x4x4的維度并做點乘操作;接著通過一個全局最大池化層來降維之后將不同的Feature Map連接起來構成一個Vector;最后將這個Vector送入到一個Fc+Sigmoid的網絡層中輸出相應的結果,即當前的搜索區域中是否目標的問題。
??上圖展示了Skimming模塊的有效性。該圖的橫坐標表示的是視頻的第XXX幀,縱軸表示的是尋找目標所花費的時間,其中紅色的曲線表示使用了Skimming模塊,而藍色的曲線表示沒有使用Skimming模塊。通過觀察我們可以發現,該模塊在保證尋找到目標的同時提高了跟蹤算法的速度。
4.3 論文實現細節
4.3.1 網絡架構和訓練數據集
- regression和skimming模型使用了類似的網絡架構,作者使用MobileNet-V1作為這兩個模塊的特征檢測器;
- 使用平均池化層來將模板的特征空間下采樣到1x1大小;
- Siamese網絡的兩個分支不做權重共享;
- 使用ResNet50作為Verification網絡的基準;
- 模板圖像和候選區域的大小被裁剪為127x127,搜索區域的大小被裁剪為300x300;
- 使用ImageNet的權重來對上面的網絡進行初始化操作,并在ImageNet DET和VID數據集上面執行微調操作。
4.3.2 訓練數據集預處理
- 對于回歸網絡而言,為了提高該模塊的通用性,我們使用了ImageNet DET和VID數據集,并加入了一些數據增強操作,包括水平翻轉和隨機擦除等。
- 對于驗證網絡而言,為了加速網絡的收斂速度并提升網絡的判別性能,作者做了如下的操作:(1)隨機的從訓練數據集中選擇一個視頻,選擇其初始的目標塊作為anchor;(2)隨機的在視頻中選擇一幀作為正樣本;(3)隨機的從屬于不同目標類的視頻中選擇一幀作為負樣本。
4.3.3 訓練策略
- 使用SGD分別對regression、verification、skimming網絡進行端到端訓練,momentum=0.9;
- regression和skimming網絡的batch_size=32,而verification網絡的batch_size=64;
- regression和skimming網絡的訓練次數為500000次迭代,在20個epoch中使用了相同的學習率lr=1e?3e^{-3}e?3,對于verification網絡,作者訓練了70次epoch,初始的lr=1e?2e^{-2}e?2,每20次減小0.1。
4.3.4 網絡測試速度
SPLT算法在Inter i7 CPU (32G RAM)和a NVIDIA GTX1080Ti上面取得了25.7fps。
5、SPLT算法結果分析
??上圖展示了SPLT算法在VOT2018LT數據集上面的效果展示,SPLT獲得了最優的結果,在MBMD算法的基礎上獲得了0.006的提升。除此之外,和MBMD算法相比,SPLT獲得了更快的跟蹤速度。
??上圖展示了SPLT算法中不同模塊的作用,通過上圖我們可以知道SPLT算法中提出的每一個模塊都對算法的性能做出了一定的貢獻。
??上圖展示了不同的驗證網絡可以獲得的性能,通過上表觀察可以發現ResNet50可以獲得最好的驗證性能。
??上圖展示了SPLT算法和其它算法的性能比較,包括一些short-term跟蹤算法,通過上表我們可以發現SPLT獲得了較好的結果,同時也說明了long-term跟蹤器還有很大的優化空間,和性能最好的short-term跟蹤器相比,還有較大的差距。
6、個人總結
??整個SPLT算法的思路比較簡單,很多人其實都可以想到。盡管整個算法的性能得到了一部分提升,但是整個算法速度和基于siamese網絡的相比卻有了很大的差距,性能上并沒有得到極大的提升。不過作為long-term跟蹤領域中的一些工作,本文還是有一些借鑒意義的,因為long-term跟蹤具有更廣闊的研究價值,和現實場景中的情況更加接近。除此之外,long-term跟蹤和short-term跟蹤之間還是存在著較大的性能差距,還需要提出一些新的有效的算法來提升它的性能。
參考資料
[1] 原始論文
注意事項
[1] 該博客是本人原創博客,如果您對該博客感興趣,想要轉載該博客,請與我聯系(qq郵箱:1575262785@qq.com),我會在第一時間回復大家,謝謝大家的關注.
[2] 由于個人能力有限,該博客可能存在很多的問題,希望大家能夠提出改進意見。
[3] 如果您在閱讀本博客時遇到不理解的地方,希望您可以聯系我,我會及時的回復您,和您交流想法和意見,謝謝。
[4] 本文測試的圖片可以通過該鏈接進行下載。網盤鏈接- 提取碼:5f46。
[5] 本人業余時間承接各種本科畢設設計和各種小項目,包括圖像處理(數據挖掘、機器學習、深度學習等)、matlab仿真、python算法及仿真等,有需要的請加QQ:1575262785詳聊,備注“項目”!!!
總結
以上是生活随笔為你收集整理的SPLT(Skimming-Perusal Tracking)算法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySql数据库查询优化
- 下一篇: 直线检测算法汇总