2019年3月18日 星期一

.Siamese:CVPR 2019 接收論文作者為你解讀影像跟蹤領域算法

cvpr2019美圖聯合清華推出大規模教程類行為數據集


科寶電子官網 www.cop-security.com

leiphone 作者:王雪佩

本文作者 Qiang Wang,原載於知乎

今年的 CVPR 的結果已經完全公佈,我參與的兩篇文章 SiamMask SiamRPN++均被接收。遺憾的是 SiamMask 最終並沒有被 reviewer 認可,只取得了 poster。

SiamMask 的測試代碼:foolwood/SiamMask


Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

以下正文:
在兩年前,當我們提起視覺跟蹤(Visual Tracking),我們的腦海裡總是灌滿了相關濾波(KCF、SRDCF、CF2、CCOT、ECO... 等等經典工作,在我的腦海裡飄蕩)。

如果給這個時代截取一篇最經典的工作,我想我會選擇 KCF。他是真的將視覺跟蹤推向流行,讓整個領域真的沸騰起來的工作。如果現在來分析,他之所以能統治跟蹤領域的原因,我覺得主要是兩點:

足夠高效+開源。高效到只需要 10 行以內的代碼就可以實現核心計算,隨便一個 CPU 就可以跑到 200FPS 以上。這極大程度上拉低了視覺跟蹤領域的門檻,讓所有人很容易進入這個領域。開源,這個詞彙現在看,已經是土的不能在土的詞彙。真的做起來,卻也存在很多阻力。

當然,除了懷舊以外。我們也會經常反思甚至有些詫異,似乎視覺跟蹤和整個 CV 大領域,走到了不同的方向,深度學習在跟蹤領域,並沒有得到什麼用武之地。當然,所有新的方向的產生,大都遵循著量變到質變的基本原則。

下圖可以看到CVPR2018 時候的時間跟蹤發展,相關濾波的發展已經經過了幾代更新,深度學習方向也在不斷積攢(廣度高而深度淺)。大家都在嘗試可行的方向。目前來看,應該是以 SiamFC 為代表的 Siamese Tracker 脫穎而出。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019
視覺跟蹤在 CVPR2018 時的發展分布

而 Siamese 網路的概念,應用於目標跟蹤的源頭,應該從 SINT 這篇文章開始,但真正開始流行卻是從 Siam FC 開始。簡潔優雅的框架,讓它得變得流行,像極了上一波的 KCF。
有關 SiamFC 的討論可以見上一篇:Qiang Wang:CVPR2018 視覺跟蹤 (RASNet)

關於我的新工作 (SiamMask)
Motivation: 影像跟蹤到底是跟蹤什麼?
長久以來,我們的思維傾向於陷入舒適區。當 A 做了物體檢測,我們嘗試改網路,改 loss,別的領域 trick 拿來就是一篇。而我們常常忽略了更為重要的問題,到底這個問題的該如何定義,這點極為重要。

對於目標跟蹤而言,一般論文開篇通常都會說,在第一幀給定目標位置,在後續幀中預測目標的位置。然而如何對後續幀中表述的定義,直接影響了整個跟蹤領域的發展。

為了方便表述,早期的跟蹤算法,都是坐標軸對齊的的矩形框。但隨著跟蹤精度的不斷提升,數據集的難度在不斷提升,在 VOT2015 時,即提出使用旋轉矩形框來作為標記。

在 VOT2016 的時候,提出自動的透過 mask ,來生成旋轉框的方法。更為本質的,我們會發現,這個旋轉的矩形框,實際上就是 mask 的一種近似。我們所要預測的,實際上就是目標物體的 mask。利用 mask 才能得到精度本身的上界。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

我自己將 2013 年以後的跟蹤分為幾類,第一類是預測 score 的方法,這類算法以相關濾波,和 SiameFC 為代表。透過預測候選區域的 score map ,來得到物體的位置,物體的尺度大小,通常是透過圖像金字塔得到。同時無法得到物體的長寬比變化。

第二類就是以 GOTURN 和 SiamRPN 為代表的,做 boundingbox regression 的方法。這也是 SiamRPN 取得當前最好結果的核心所在,充分挖取精度方向的紅利

實際上並不是 SiamRPN 預測的有多穩定,而是在預測正確的時候,會給出更為精確的 box。利用網路預測長寬比可以調整 box,這個方向一直以來被大家所忽視,所以 SiamRPN 很快殺出重圍。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

而在物體發生旋轉的時候,簡單的 box 的表述,通常會產生極大的損失,這實際上就是表述本身存在的缺陷。而為了進一步探索,在精度上存在的問題。我們更進一步,直接預測物體的 mask。這種表述使得我們可以得,到最為準確的 box。最直觀的利用,一個簡單的事例的可視化就可以看出,這三種算法的區別(左中右分別是 SiamFC | SiamRPN | SiamMask)。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

同時,對於影像目標分割(VOS)領域,之前普遍流行的算法,是利用語義分割網路線上,進行一個二分類的訓練,然後再後續幀進行預測。

這種方法在訓練過程中一般都會花費數分鐘,給人一種電腦假死的感覺。最近越來越多的,不需要線上 finetune 的算法被提出。但其速度仍然無法到達令人滿意的狀態,例如 FAVOS 和 OSMN 分別需要 1s/幀,120ms/幀。

這距離真正的實時運行還是有一定差異。另一方面,VOS 算法的第一幀需要給定目標的 mask,這在人機交互的場景中很難時間,這個 mask 獲取成本過高。

所以我們提出了對視覺目標跟蹤(VOT)和影像目標分割(VOS)的統一框架 SiamMask。我們將初始化,簡化為影像跟蹤的 box 輸入即可,同時得到 box 和 mask 兩個輸出。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

具體實現
當有了上述的 motivation 之後,具體實現非常簡單,只需要在 siamese 網路架構中,額外增加一個 Mask 分支即可。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

但是相較於預測 score 和 box,mask 的預測會更為困難。我們這裡使用的表述方法,是利用一個 vector ,來編碼一個 RoW 的 mask。這使得每個 prediction 位置,具有非常高的輸出維度(63*63) 我們透過 depthwise 的卷積後級聯 1x1 卷積,來升維來實現高效運行。這樣即構成了我們的主要模型框架。

但直接預測的 Mask 分支的精度並不太高。所以提出了如下圖所示的 Refine Module ,用來提升分割的精度,refine module 採用 top-down 的結構。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

這一部分借鑒了 SharpMask 的思路。deepmask 和 sharpmask 是 facebook 在 2015-2016 年提出的,物體分割 proposal 框架。我進行了一個重現 foolwood/deepmask-pytorch

實驗結果
對照實驗(ablation study)結果方面,我們首先透過實驗分析,驗證了所提出的 Mask 的輸出,表達對於跟蹤問題的貢獻。透過進行 Oracle 實驗分析,可以明確得出,旋轉矩形框的平均 IoU ,會遠好於只預測坐標軸對齊的矩形框。尤其是在更高的 IoU 閾值下,旋轉矩形框的優勢更為明顯。

當對比 SiamFC,SiamRPN 的時候,SiamMask 對於整體的精度提升非常顯著。對於輸出 mask 轉換為 box,有多重選擇,我們使用了較為容易生成的最小外包矩形(MBR)。

按照 VOT 的優化方式生成的框的品質會更高,但按照優化算法生成太慢。如果有編碼好的同學,可以把這個加速,我相信我們算法的精度,至少可以再提升一個百分點,非常歡迎嘗試之後在我們的 github 上提 Pull Requests。(優化的 box 的 matlab:http://cmp.felk.cvut.cz/~vojirtom/dataset/votseg/data/optimize_bboxes.m)

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

在影像跟蹤領域(VOT),VOT2016 和 VOT2018 數據集上的性能,我們的方法已經到達到 SOTA 的結果,同時保持了 55fps 的超即時的性能表現。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

在影像目標分割領域(VOS),我們取得了當前最快的速度。在 DAVIS2017 和 Youtube-VOS 上,我們和最近發表的較為快速的算法對比 我們的算法可以取得,可比較的分割精度,同時速度快了近一個數量級。對比經典的 OSVOS我們的算法快了近三個數量級,使得影像目標分割,可以得到實際使用。

Siamese:CVPR 2019 接收论文作者为你解读视频跟踪领域 | CVPR 2019

此外,我們需要強調的是,影像分割任務目前的影像片段都較短,我們的 decay 要遠小於其他算法,這意味著在更長的影像片段中,我們的算法性能會保持的更好。

對比上述 VOS 算法,我們的算法更易於交互,只需要簡單的畫一個框,就可以實現自動的分割跟蹤:


對於應用領域
自動駕駛場景中的影像跟蹤分割簡單應用:


帶字幕表情包生成


Adobe MAX 2018 FastMask 

我也使用 SiamMask 做了一個類似的項目,當然精度上和 Adobe 的 FastMask ,肯定存在差距。但我們的方法可以很容易的生成一些表情包,或者 b 站的智慧防擋彈幕_bilibili_嗶哩嗶哩彈幕視頻網

關於 CVPR2019 跟蹤領域發展: foolwood/benchmark_results
從今年接收的文章,已經可以明顯看出來,跟蹤領域已經基本完成換代更新。接收的文章中 Siamese 網路的改進工作,已經佔據了主導的地位。

SiamRPN++,CIR 兩篇,都是圍繞如何使用深度網路主幹這個問題,兩篇文章都中了 oral。這個問題一直困擾著整個跟蹤圈子,在此之前的所有工作,都採用的是 alexnet 為主的網路架構。

不能使用現代網路架構,一直困擾著整個跟蹤領域的發展。SiamRPN++透過數據增強的方法,解決訓練的空間位置偏見。CIR 透過 crop 操作從網路架構上,減弱網路 padding 帶來的學習偏見,透過大量的實驗分析了感受野等因素,對學習的影響。總的來說,當網透問題被解決了之後,直接導致了現在,在幾乎所有的數據集上,SiamRPN++已經超過了相關濾波的方法。

在 SiamRPN++的基礎上,網路主幹問題已經被解決,我們可以做更多方向的探索。我們可以非常簡單的,讓輸出做更複雜的預測,這就催生了 SiamMask 這篇文章。

SPM 和 C-RPN 兩篇都算是多階段的 SiamRPN 擴展。SPM 就是典型的 faster-RCNN 的思路做跟蹤,只是最後的 score fusion 的方式,可以再優雅一些。C-RPN 當然就是 Cascade R-CNN: Delving into High Quality Object Detection 在跟蹤領域的翻版。兩者的思路都很直接,透過第二/N 階段,來學習更精細的判別。

Martin Danelljan 大神的 ATOM: Accurate Tracking by Overlap Maximization 這篇肯定也是重量級的文章。Martin 大神並沒有 fellow SiamRPN 的架構,轉而使用粒子濾波採樣,搭配 IoU 預測,多次迭代得到目標結果。

在多個庫上取得了非常驚人的結果。這項工作我覺得最突破的點是網路學習的問題實際上更 hard,更符合跟蹤的需求。

LaSOT 這個測評集的接收,也是常規操作。希望各位大佬能繼續維護好這個庫。最近跟蹤的數據庫相當多,人們都意識到之前的數據,已經無法滿足深度學習的跟蹤算法。

關於 Siamese Tracking 的未來研究方向(free ideas):
當你閱讀了一定的文章,以及有現成的代碼之後,下面當然是如何著手改進。我自己總結了一些小的可以改進的方向,僅供參考。

1)高效的在線學習算法:進展到目前為止,我的所有實驗研究表明。Siamese 網路無法真正意義上,抑制背景中的困難樣本。離線的學習從本質上,無法區分兩個長相相似的人或者車。而 CF 相關算法,可以透過分析整個環境的上下文關係,來進行調整。

如果對於提升整個算法的上界(偏學術)的角度考慮,線上學習有必要。如果正常的工程使用,我認為目前的算法,只要在相應的場景中,進行訓練就足夠了。

2)精確輸出表達:今年我們的工作提出額外的 mask 輸出。可直接擴展的思路為關鍵點輸出(CornerNet / PoseTrack),極點預測(ExtremeNet),甚至 6D pose 跟蹤。本質上是透過網路,可以預測任何與目標相關的輸出。大家可以任意的發散思維。

3)訂製網路架構:其中包含兩個子方向,一個是追求精度的去探索,究竟什麼樣的網路架構,會有利於當前的跟蹤框架的學習。另一個有價值的子方向,是如何建構超快速的小網路,用於實際工程。

工程項目中有時,並沒有 GPU 的資源供使用,如何提供「廉價」的高品質跟蹤算法,也具有很強的實際意義。當對網路進行裁剪之後,很容易達到 500FPS 的高性能算法,來對傳統的 KCF 進行真正的替換。

4)離線訓練學習優化:目前的跟蹤算法,在相似性學習方向,還是過於簡單,如果去設計更為有效的度量學習方案,應該會有一定的提升。同時我們也並沒有很好的掌握網路的訓練。當前的訓練策略,是將網主幹的參數進行固定,先訓練 head,然後逐步放開。

實際上我們發現,當直接將所有層,全部放開一起訓練的時候,網的泛化性能會顯著下降。另一個方面,train from scratch 的概念,已經在檢測領域非常普遍了。跟蹤的網目前我們的經驗,在跟蹤方面並不 work。

5)更細粒度預測:這一條實際上是上一條的續集,就是專注於 score 分支的預測。現在大家的做法是>0.6 IoU 的,都當做前景(正樣本),但實際上正樣本之間,還是有較大的差異的。跟蹤本質上,也是不斷預測一個非常細小物體幀間,運動的過程,如果一個網不能很好的分辨細小的差異,他可能並不是一個最優的設計選擇。這也是 ATOM 的 IoUNet 主攻的方向。

6)泛化性能提升:非常推薦自動化所黃凱奇老師組的 GOT-10k 數據集,數據組織的非常棒。黃老師組在 one-shot learning 領域有著深厚的積澱,所以站在這個領域的角度,他們提出了嚴格分離訓練集,和測試集的物體類別,來驗證泛化性能。

所以原則上所有 one-shot learning 方向的一些嵌入學習方法,都可以移過來用。同時,我覺得 Mask-X-RCNN,segment everything 這個思路可以借鑒。

本質上我也不得不承認,基於深度學習的跟蹤算法,存在泛化性能問題。我們有理由懷疑,跟蹤是否會在未知的類別上,有較好的泛化性能,實際上肯定是會下降。

7)long-term 跟蹤框架:截止到目前為止,雖然 VOT 組委會,以及牛津這邊的 OxUVA ,都有專門的 long-term 的數據集,但 long-term 算法,並沒有一個較好的統一框架出來。關於這方面的研究,似乎有點停滯,今年大連理工的文章非常可惜,我覺得品質非常不錯。

當然,寫到這裡,也該結尾了。畢竟大家都在趕 ICCV,祝大家都有好的運氣。也真的感謝周邊認識的很多優秀的朋友。

期待 CVPR2020。希望明年我可以帶來更好的工作。

歡迎關注我的這個項目:foolwood/SiamMask

另外,我們 AI 研習社建立了 CVPR 相關的討論群,想瞭解更多關於 CVPR 的最新消息,就快快加入小組討論吧~



沒有留言:

張貼留言