實時實例分割的Deep Snake:CVPR2020論文點評
Deep Snake for Real-Time Instance Segmentation
論文鏈接:https://arxiv.org/pdf/2001.01629.pdf
摘要
本文提出了一種基於輪廓的深度snake方法用於實例的實時分割。與最近一些直接從圖像中回歸物體邊界點坐標的方法不同,deep snake使用神經網絡迭代地將初始輪廓變形到物體邊界,這一方法用基於學習的方法實現了snake算法的經典思想。對於輪廓的結構化特征學習,我們提出在deep snake中使用循環卷積,與一般的圖卷積相比,它更好地利用了輪廓的循環圖結構。在deep snake的基礎上,我們開發了一個兩階段的分割流水線:初始輪廓提議和輪廓變形,可以處理初始目標定位中的錯誤。實驗表明,該方法在實時實例分割效率高的同時,在城市景觀、Kins和Sbd數據集上取得了最新的性能,在1080tigpu上對512×512幅圖像的分割效率為32.3fps。這些代碼可以在https://github.com/zju3dv/snake/上找到。
1. Introduction
本文提出了一種基於學習的snake算法deepsnake,用於實例的實時分割。受前面方法的啟發[20,23],deep snake將初始輪廓作為輸入,並通過回歸頂點偏移使其變形。我們的創新之處在於在輪廓上引入循環卷積以實現高效的特征學習,如圖1所示。我們觀察到輪廓是一個循環圖,由一個封閉循環中連接的頂點序列組成。由於每個頂點的相同階數都等於2,因此我們可以對頂點特征應用標准的一維卷積。考慮到輪廓是周期性的,deep snake引入了循環卷積,這意味着非周期函數(1D核)以標准方式卷積為周期函數(輪廓上定義的特征)。圓卷積的核心不僅對每個頂點的特征進行編碼,而且對相鄰頂點之間的關系進行編碼。相反,通用GCN執行池來聚合來自相鄰頂點的信息。循環卷積中的核函數相當於一個可學習的聚合函數,它比一般的GCN更具表現力,性能也更好,我們在第5.2節的實驗結果證明了這一點。
基於deep snake,我們開發了一個管道實例分割。給定初始輪廓,deep snake可以迭代地將其變形到對象邊界並獲得對象形狀。剩下的問題是如何初始化輪廓,經典snake算法已經證明了輪廓的重要性。受[30,27,42]的啟發,我們建議生成一個由物體極值點形成的八角形作為初始輪廓,它通常將物體緊緊地包圍起來。
具體來說,我們在檢測模型中加入了deep snake。檢測到的方塊第一個通過連接四個以其邊界為中心的點來提供菱形輪廓。然后,deep snake將菱形作為輸入,並將該點從四個頂點偏移到四個端點,這些端點用於構造后面的八邊形[42]。最后,deep snake將八角形輪廓變形到對象邊界。我們的方法在城市景觀[7]、Kins[33]和Sbd[15]數據集上展示了最先進的性能,同時在GTX 1080ti GPU上對512×512個圖像的實時實例分割效率為32.3 fps。基於學習的snake之所以快速而准確,有兩個原因。
首先,我們的方法可以處理目標定位中的錯誤,從而允許光檢測器。
其次,與基於像素的表示相比,對象輪廓具有更少的參數,並且不需要昂貴的后處理,例如掩模上采樣。
總之,這項工作有以下貢獻:
•我們提出了一種基於學習的snake算法用於實時實例分割,該算法將初始輪廓變形到對象邊界,並引入循環卷積來進行輪廓特征學習。
•我們提出了一個兩階段的管道,例如分割:初始輪廓建議和輪廓變形。這兩個階段都可以處理初始對象定位中的錯誤。
•我們在城市景觀、KIN和Sbd數據集上展示了我們方法的最新表現。對於512×512幅圖像,我們的算法運行速度為32.3fps,這對於實時實例分割是非常有效的。
2. Related work
Pixel-based methods
大多數方法[8、22、17、25]在區域建議內的像素級上執行實例分割,這對於標准cnn尤其有效。
Contour-based methods
在半自動標注領域,[3,1,23]嘗試用其他網絡代替標准cnn進行輪廓標注。[3,1]使用遞歸神經網絡依次預測輪廓點。為了避免順序推理,[23]遵循snake算法的流程,使用圖卷積網絡來預測輪廓變形的頂點偏移。此策略顯著提高了注釋速度,同時與基於像素的方法一樣精確。然而,[23]缺少例如分段的管道,並且沒有充分利用輪廓的特殊拓撲。deep snake利用循環圖的拓撲結構,引入了循環卷積,使輪廓的特征學習更為有效,而不是將輪廓看作一般的圖形。
3. Proposed approach
受[20,23]啟發,我們通過將初始輪廓變形到對象邊界來執行對象分割。具體地說,deep snake根據CNN主干的圖像特征輸入輪廓,並預測指向對象邊界的每個頂點偏移量。為了充分利用輪廓拓撲結構,我們引入了圓卷積來有效地進行輪廓特征學習,這有助於deep snake學習變形。在deep snake的基礎上,開發了一個管道分割實例。
3.1. Learning-based snake algorithm
給定輪廓上定義的輸入特征,deep snake引入了用於特征學習的循環卷積,如圖2所示。一般來說,輪廓頂點的特征可以看作是一個Ddiscrete信號f:Z→RD,並通過標准卷積進行處理。但這會破壞輪廓的拓撲結構。因此,我們將輪廓上的特征視為周期信號,定義為:
類似於標准卷積,我們可以構造一個基於循環卷積的網絡層用於特征學習,這很容易集成到現代網絡結構中。特征學習后,deep snake對每個頂點的輸出特征應用三個1×1卷積層,並預測輪廓點與目標點之間的逐頂點偏移量,用於輪廓變形。在所有的實驗中,圓卷積的核大小被確定為9。正如在引言中所討論的,與一般的圖卷積相比,所提出的循環卷積更好地利用了輪廓的循環結構。我們將在第5.2節中展示實驗比較。另一種方法是使用標准CNN從輸入圖像中回歸像素向量,以指導初始輪廓的演變[35、31、38]。我們認為,與標准CNNs相比,deep snake的一個重要優點是對象級的結構化預測,即一個頂點的偏移預測依賴於同一輪廓的其他頂點。因此,對於位於背景中且遠離目標的頂點,deep snake更合理地預測其偏移量,這在初始輪廓中非常常見。在這種情況下,標准CNN很難輸出有意義的偏移量,因為決定背景像素屬於哪個對象是不明確的。
Network architecture
圖3(a)顯示了詳細的示意圖。根據[32,37,21]的觀點,deep snake由三部分組成:主干、融合塊和預測頭。主干網由8個“CirConvBn ReLU”層組成,並對所有層使用殘留跳轉連接,其中“CirConv”表示循環卷積。融合塊的目的是在多個尺度上融合所有輪廓點的信息。它將骨干網中所有層的特征連接起來,然后通過1×1卷積層和max池轉發它們。然后將融合特征與每個頂點的特征連接起來。預測頭將三個1×1卷積層應用於頂點特征並輸出頂點偏移量。
3.2. Deep snake for instance segmentation
圖3(b)概述了提議的管道,例如分段。在目標檢測模型中加入了deepsnake。探測器首先生成用於構建菱形輪廓的對象框。然后deep snake將菱形頂點變形為對象極值點,用於構造八邊形輪廓。最后,以八邊形為初始輪廓,進行迭代輪廓變形,得到目標形狀。
Initial contour proposal
大多數活動的contou rmodel需要精確的初始輪廓。由於[42]中提出的八邊形通常緊緊地包圍着物體,我們選擇它作為初始輪廓,如圖3(b)所示。 我們通過基於極值點生成四條直線並連接它們的端點來構造八邊形。具體來說,這四個極端點形成了一個新的對象框。對於每個極端點,一條線從它沿着相應的框邊界在兩個方向延伸到邊界長度的1/4。如果這條線與方框角相交,它將被截斷。然后四條線的端點連接起來形成八邊形。
Contour deformation
請注意,輪廓是對象空間延伸的另一種表示。該方法通過將初始輪廓變形到目標邊界,解決了探測器的定位誤差。
Handling multi-component objects
由於遮擋,許多實例包含多個連接組件。但是,一個輪廓只能為每個邊界框勾勒一個連接的組件。為了克服這一問題,我們提出在對象盒中檢測對象組件。具體來說,我們的方法使用檢測到的盒子,執行RoI Align[17]來提取特征映射,並在特征映射上添加一個檢測器分支來生成組件盒子。圖4顯示了基本思想。以下分段管道保持不變。我們的方法通過合並來自同一對象盒的組件輪廓來獲得最終的對象形狀。
4. Implementation Results
訓練策略
對於Deep snake的訓練,我們利用文[13]中提出的平滑損失來學習這兩種變形過程。極值點預測的損失函數定義為:
對於檢測部分,我們采用與原始檢測模型相同的損失函數。訓練細節隨數據集的變化而變化。
用循環卷積代替圖卷積,使APvol提高了0.8apvol。為了充分驗證循環卷積的重要性,我們進一步比較了具有不同卷積算子和不同推理迭代的模型,如表2所示。循環卷積在所有推理迭代中都優於圖卷積。兩次迭代的循環卷積比三次迭代的圖卷積性能好0.6apvol。圖5顯示了Sbd上圖形和循環卷積的定性結果,其中循環卷積給出了更清晰的邊界。定量和定性分析結果表明,具有圓卷積的模型具有較強的輪廓變形能力。
表3將我們的結果與城市景觀驗證和測試集的其他最新方法進行了比較。所有的方法都經過測試,沒有技巧。我們的方法只使用了有限的注釋,在驗證和測試集上都達到了最先進的性能。在驗證集上,我們的性能優於PANet,分別為0.9ap和1.3ap50。根據[29]中的近似定時結果,PANet以小於1.0fps的速度運行。相比之下,我們的模型在1080ti GPU上以4.6fps的速度運行,生成1216×2432幅圖像,速度大約快5倍。當不采用處理多分量對象的策略時,我們的方法在測試集上達到28.2ap。視覺效果如圖6所示。
表4顯示了與Kins數據集上的[8,22,10,17,25]在AP度量方面的比較。Kins[33]指出,同時處理模態分割和模態分割可以提高性能,如表4的第四行和第五行所示。我們的方法只學習一個模態分割任務,並在所有方法中獲得最佳性能。我們發現蛇分支可以提高檢測性能。當CenterNet單獨訓練時,檢測到30.5ap。當使用蛇枝訓練時,它的性能提高了2.3ap。對於Kins數據集上的768×2496幅圖像,我們的方法在1080ti GPU上以7.6fps的速度運行。圖7顯示了Kins的一些定性結果。
在表5中,我們根據Voc AP指標與Sbd數據集上其他基於輪廓的方法[19,39]進行了比較。[19,39]通過回歸形狀向量來預測物體輪廓。STS[19]將物體輪廓定義為物體中心的徑向矢量,ESE[39]用20和50個切比雪夫多項式系數近似物體輪廓。相反,我們的方法將初始輪廓變形到對象邊界。我們的性能比這些方法至少高出19.1apvol。注意,我們的方法得到了21.4ap50和36.2ap70的改進,這表明改進隨着IoU閾值的增加而增加。這表明我們的算法能更好地勾勒出物體的邊界。對於Sbd數據集上的512×512圖像,我們的方法在a1080Ti上以32.3fps的速度運行。一些定性結果如圖7所示。
Running time
表6將我們的方法與其他方法[8、22、17、19、39]在Pascal Voc數據集上的運行時間進行了比較。由於Sbd數據集與Pascal Voc共享圖像並且具有相同的語義類別,因此Sbd數據集上的運行時間在技術上與Pascal Voc上的運行時間相同。我們從[39]中得到了其他方法在Pascal Voc上的運行時間。
對於Sbd數據集上的512×512圖像,我們的算法在桌面上以32.3fps的速度運行,采用Intel i7 3.7GHz和GTX1080TiGPU,這對於實時實例分割非常有效。具體來說,CenterNet需要18.4 ms,初始輪廓建議需要3.1 ms,輪廓變形的每次迭代需要3.3 ms。由於我們的方法輸出對象邊界,因此不需要像上采樣這樣的后處理。如果采用處理碎片實例的策略,則檢測器額外需要3.6ms。
5. Conclusions
提出了一種新的基於輪廓的實例實時分割模型。受傳統snake算法的啟發,我們的方法將初始輪廓變形到目標邊界,得到目標形狀。為此,我們提出了一種基於學習的snake算法deep snake,該算法引入了循環卷積來有效地學習輪廓特征,並對輪廓變形的頂點偏移進行了回歸。基於deep snake,我們開發了一個兩階段的管道分割實例:初始輪廓提議和輪廓變形。結果表明,與直接回歸目標邊界點坐標相比,該流水線具有更好的性能。我們還證明了圓卷積比圖卷積更有效地學習輪廓的結構信息。為了克服輪廓線只能勾勒出一個連通分量的局限性,提出了在目標盒內檢測目標分量的方法,並在城市景觀中驗證了該方法的有效性。該模型在城市景觀、Kins和Sbd數據集上取得了最新的結果,具有實時性。