SOLOv 2:實例分割(動態、更快、更強)
SOLOv2: Dynamic, Faster and Stronger
論文鏈接:
https://arxiv.org/pdf/2003.10152.pdf
代碼鏈接:https://github.com/aim-uofa/AdelaiDet
摘要
在這項工作中,本文的目標是建立一個簡單,直接,快速的實例分割框架,具有很強的性能。本文遵循王等人SOLO的原則。“SOLO:按位置分割對象”[33]。重要的是,本文進一步通過動態學習對象分段器的mask頭,使得mask頭受位置的約束。具體地,將掩模分支分解為掩模核分支和掩模特征分支,分別負責卷積核和卷積特征的學習。此外,本文提出矩陣NMS(非最大抑制)來顯著減少由於NMSofmasks引起的推理時間開銷。本文的matrix NMS一次完成了並行矩陣運算的NMS,並獲得了更好的結果。本文演示了一個簡單的直接實例分割系統,在速度和精度上都優於一些最新的方法。一個輕量級版本的SOLOv2以31.3fps的速度運行,產生37.1%的AP。此外,本文在目標檢測(從本文的掩模副產品)和全景分割方面的最新結果顯示,除了實例分割之外,還可能成為許多實例級識別任務的新的強基線。
1. Introduction
通過改進,SOLOv2的AP性能比SOLOv1高出1.9%,而速度提高了33%。Res-50-FPN SOLOv2在具有挑戰性的MS-COCO數據集上以18 FPS的速度實現38.8%的掩模AP,在單個V100 GPU卡上進行評估。一個輕量級版本的SOLOv2以31.3FPS的速度執行,產生37.1%的掩模AP。有趣的是,雖然本文的方法徹底消除了bounding box的概念,但是本文的bounding box的副產品,即直接將預測的掩模轉換為bounding box,產生42.4%的AP用於bounding box對象檢測,它甚至超過了許多最先進、高度工程化的目標檢測方法。
2. Related Work
而本文的方法是從SOLO[33]發展而來的,直接將原始的掩模預測解耦為核學習和特征學習。不需要錨箱。不需要標准化。不需要邊界框檢測。本文直接將輸入圖像映射到所需的對象類和對象掩碼。訓練和推理都簡單得多。因此,本文提出的框架簡單得多,但實現了顯著的更好的性能(6%的AP以可比的速度更好);本文的最佳模型實現了41.7 AP,而YOLACT的最佳31.2%AP。
在傳統的卷積層中,學習的卷積核保持固定並且獨立於輸入,例如,對於每個圖像和圖像的每個位置,權重是相同的。以前的一些作品探索了在傳統卷積中引入更多靈活性的思想。空間變換網絡[15]預測全局參數變換以扭曲特征映射,從而允許網絡根據輸入自適應地變換特征映射。動態濾波器[16]用於主動預測卷積濾波器的參數。它以一種特定於樣本的方式將動態生成的過濾器應用於圖像。可變形卷積網絡[8]通過預測每個圖像位置的偏移量來動態學習采樣位置。將動態方案引入到實例分割中,實現了基於位置的實例分割學習。
與以前的方法不同,本文的矩陣NMS同時解決了硬刪除和順序操作的問題。結果表明,該矩陣NMS能夠在1ms內完成500個掩模的簡單PyTorch實現,與網絡評估時間相比可以忽略不計,其AP值比快速NMS高0.4%。
3. A Revisit to SOLOv1
SOLOv1框架的核心思想是按位置分割對象。輸入圖像在概念上分為S×S網格。如果對象的中心落在網格單元中,則該網格單元負責預測語義類別以及分配每像素位置類別。有兩個分支:類別分支和掩碼分支。類別分支預測語義類別,而掩碼分支分割對象實例。具體地說,范疇分支輸出S×S×C形張量,其中C是對象類的個數。
該層可視為S2類。每一類都是負責對是否屬於該位置類別的像素進行分類。如在[33]中所討論的,由於在大多數情況下對象在圖像中稀疏地定位,所以預測M有點多余。這意味着只有一小部分的S2類在一次推理中起作用。解耦合SOLO[33]通過將S2分類分離為兩組S分類來解決這個問題,分別對應於S水平和S垂直位置類別。因此,輸出空間從H×W×S2減小到H×W×2S。從另一個角度看,由於輸出M是冗余的,特征F是固定的,為什么不直接學習卷積核G呢?這樣,本文可以簡單地從預測的S2分類中選擇有效的分類,並動態地進行卷積。模型參數的數目也減少了。此外,由於預測的內核是根據輸入動態生成的,因此它具有靈活性和自適應性。此外,每個S2分類都取決於位置。它符合按位置分割對象的核心思想,並且通過按位置預測分割器而更進一步。本文在第4.1節中說明了詳細的方法。
4. SOLOv2
在本節中,本文將詳細介紹提議的SOLOv2設計。
4.1. Dynamic Instance Segmentation
本文繼承了SOLOv1的大部分設置,例如網格單元、多級預測、CoordConv[24]和損失函數。在此基礎上,提出了將原掩模分支解耦為掩模核分支和掩模特征分支,分別預測卷積核和卷積特征的動態方案。本文在圖2中顯示了與SOLOv1的比較。
4.1.1 Mask Kernel Branch
掩碼核分支與語義類別分支一起位於預測頭中。頭部工作在由FPN[21]生成的特征地圖金字塔上。頭部的兩個分支由4個用於特征提取的conv和最后一個用於預測的conv組成。頭部的權重在不同的特征圖級別上共享。本文將空間功能添加到核分支,通過給予第一個對標准化坐標的卷積訪問,即連接兩個額外的輸入通道。對於每個網格,核分支預測維度輸出指示預測的卷積核權重,其中是參數的數量。對於生成與E個輸入通道的1×1卷積的權重,D等於E。對於3×3卷積,D等於9E。這些生成的權重取決於位置,即網格單元。如果將輸入圖像划分為S×S網格,則輸出空間為S×S×D,對輸出沒有激活作用。
4.1.2 Mask Feature Branch
由於掩模特征和掩模核是分離和預測的,因此有兩種方法來構造掩模特征分支。本文可以把它和核分支一起放到頭部。這意味着本文可以預測每個FPN級別的掩模特性。或者,預測所有FPN級別的單一掩模特征表示。本文通過實驗比較了第5.1.3節中的兩種實現。最后,本文采用后者的有效性和效率。為了學習單一的高分辨率掩模特征表示,本文在文[17]的語義分割的基礎上,引入特征金字塔融合。經過3×3conv、群范數[34]、ReLU和2×雙線性上采樣的重復階段,FPN特征P2到P5被合並成1/4尺度的單個輸出。元素求和后的最后一層由1×1卷積、群范數和ReLU組成。細節如圖3所示。值得注意的是,在卷積和雙線性上采樣之前,本文將歸一化像素坐標饋送到最深的FPN水平(1/32比例)。所提供的准確位置信息對於實現位置敏感和預測實例感知特征非常重要。
4.1.3 Forming Instance Mask
總的來說,每個預測級別最多有S2個掩碼。最后,本文使用所提出的矩陣NMS來獲得最終的實例分割結果。
4.1.4 Learning and Inference
標簽分配和丟失函數與SOLOv1相同。訓練損失函數定義如下: L=Lcate+λL mask,(2)其中Lcate是語義類別分類的常規焦點損失[23],Lmask是掩模預測的冰損失。有關更多細節,請參閱[33]。
本文首先使用0.1的置信閾值來過濾低置信度的預測。然后使用相應的預測掩模核對掩模特征進行卷積。使用sigmoid操作時,本文使用0.5的閾值將預測的軟掩碼轉換為二進制掩碼。最后一步是矩陣NMS。
4.2. Matrix NMS
動機
本文的矩陣NMS是由softms[1]驅動的。軟NMS以重疊的單調遞減函數(iou)衰減其他檢測分數。通過遞歸地根據IoUs衰減分數,以最小分數閾值消除較高的IoU檢測。然而,這類過程與傳統的貪婪網絡管理系統一樣是順序的,不能並行實現。
圖4顯示了Pytorch樣式的矩陣NMS的偽代碼。在本文的代碼庫中,矩陣NMS比傳統NMS快9倍,而且更精確(表7)。結果表明,矩陣NMS在精度和速度上均優於傳統的NMS,可以很容易地集成到最新的檢測/分割系統中。
5. Experiments
為了對SOLOv2算法進行評價,本文在MS-COCO上進行了實例分割、目標檢測和全景分割三個基本任務的實驗[22]。本文還介紹了最近提出的LVIS數據集的實驗結果,該數據集有超過1K個類別,因此具有相當大的挑戰性。
5.1. Instance segmentation
例如分割,本文通過評估COCO 5K val 2017分割來報告損傷和敏感性研究。本文還報告了COCO mask AP的test dev split,它是在評估服務器上評估的。 訓練詳情
利用隨機梯度下降(SGD)對SOLOv2進行訓練。本文使用同步SGD超過8 GPU,每個小批量總共16個圖像。除非另有說明,否則所有模型均為36個階段(即3×)訓練,初始學習率為0.01,然后在第27個階段除以10,在第33個階段再次除以10。權重減為0.0001,動量為0.9。所有模型都由ImageNet預先訓練的權重初始化。本文使用比例抖動,其中較短的圖像側隨機采樣從640到800像素。
5.1.1 Main Results
本文比較了SOLOv2和最新的方法在MS-COCO-test-dev上的實例分割,見表1。使用ResNet-101的SOLOv2實現了39.7%的掩模AP,這比SOLOv1和其他的狀態實例分割方法要好得多。本文的方法尤其在大型物體(如+5.0apl)上顯示了它的優越性。本文還提供了COCO上的速度精度權衡,以與一些主要的實例分割進行比較(圖1)。本文展示了ResNet-50、ResNet-101、ResNet-DCN-101和第5.1.3節中描述的兩個輕量級版本的模型。所提出的SOLOv2在精度和速度上都優於一系列最先進的算法。運行時間在本文的本地機器上進行測試,只有一個V100 GPU、Pytorch 1.2和CUDA 10.0。本文下載代碼和預先訓練的模型,在同一台機器上測試每個模型的推理時間。
5.1.2 SOLOv2 Visualization
本文從兩個方面對SOLOv2的學習進行了可視化:掩模特征行為和動態學習卷積核卷積后的最終輸出。本文將掩模特征分支的輸出可視化。為了便於可視化,本文使用了一個有64個輸出通道的模型(即,對於掩碼預測之前的最后一個特征映射,e=64)。這里本文繪制64個通道中的每一個(回想一下通道空間分辨率是H×W),如圖5所示。
主要有兩種模式。首先,也是最重要的,掩模特征是位置感知的。它表現出明顯的水平和垂直掃描圖像中的物體的行為。有趣的是,它確實符合分離頭部獨奏中的目標:根據獨立的水平和垂直位置類別分割對象。另一個明顯的模式是,一些特征映射負責激活所有前景對象,例如,白框中的對象。最終輸出如圖8所示。不同的物體是不同的顏色。本文的方法在不同的場景中顯示出很有希望的結果。值得指出的是,邊界處的細節分割得很好,特別是對於大型物體。在圖6中,本文比較了Mask R-CNN的對象細節。本文的方法顯示出很大的優勢。
5.1.3 Ablation Experiments
本文研究並比較了以下四個方面:(a)用於對掩模特征進行卷積的核形狀;(b)用於掩模核分支和掩模特征分支的坐標變換;(c)統一的掩模特征表示和(d)矩陣NMS的有效性。
內核形狀
本文從兩個方面來考慮核的形狀:輸入通道的數目和核的大小。比較結果見表3。1×1conv的性能相當於3×3conv,將輸入通道數從128個增加到256個,AP增益為0.4%。當它超過256時,性能變得穩定。在這項工作中,本文將所有其他實驗中的輸入通道數設置為256個。
坐標的有效性
由於本文的方法是按位置分割對象,或者按特定位置學習對象分割器,因此位置信息非常重要。例如,如果掩碼內核分支不知道位置,則具有相同外觀的對象可能具有相同的預測內核,從而導致相同的輸出掩碼。另一方面,如果掩模特征分支不知道位置信息,它就不知道如何按照與掩模核匹配的順序將像素分配給不同的特征通道。如表4所示,該模型在沒有顯式坐標輸入的情況下獲得36.3%的AP。結果相當好,因為CNNs可以隱式地從常用的零填充操作中學習絕對位置信息,如[14]所示。本文的掩模特性分支中的金字塔零填充應該有很大的貢獻。然而,隱式學習的位置信息是粗糙和不准確的。當通過級聯額外的坐標通道使卷積訪問自己的輸入坐標時,本文的方法獲得1.5%的絕對AP增益。
單一遮罩功能
對於掩模特征學習,本文有兩種選擇:分別在每個FPN層的頭部學習特征,或者構造一個統一的表示。對於前者,本文實現為SOLOv1,並使用7個3×3conv來預測掩模特征。對於后者,詳細的實現如圖3所示。本文在表5中比較了這兩種實現。如圖所示,統一的表示方法取得了更好的效果,特別是對於中大型對象。這很容易理解:在SOLOv1中,大尺寸對象被分配到低空間分辨率的高級特征映射,從而導致粗略的邊界預測。
已解耦的Dynamicvs
動力頭和解耦頭都是單頭的有效變體。本文比較了表6中的結果。所有設置都是相同的,除了頭部類型,這意味着對於動態頭部,本文使用上述單獨的功能。動態頭比解耦頭的AP值高0.7%。本文認為增益來自於動態方案,該方案根據輸入動態地學習核權重。矩陣可以完全並行地實現。表7給出了硬NMS、軟NMS、快NMS和本文的矩陣NMS的速度和精度比較。由於所有方法都需要計算IoU矩陣,因此本文預先計算IoU矩陣以進行公平比較。這里報告的速度是僅NMS進程的速度,不包括計算IoU矩陣。硬NMS和軟NMS在當前的目標檢測和分割模型中有着廣泛的應用。不幸的是,這兩種方法都是遞歸的,並且花費了大量的時間預算(22ms)。 本文的矩陣NMS只需要<1 ms,幾乎是免費的!在這里,本文還展示了快速NMS的性能,它利用矩陣運算,但有性能損失。綜上所述,本文的矩陣NMS在速度和精度上都顯示了它的優勢。
實時設置本文為不同的目的設計了兩個輕量級模型。
1) 速度優先,預測頭中的卷積層數減少到2層,輸入較短側為448。
2) 精度優先,預測頭中的卷積層數減少到3層,輸入較短側為512層。此外,可變形卷積[8]被用於預測頭的主干和最后一層。本文用3×時間表訓練兩個模型,從[352512]中隨機抽取較短的邊。結果見表8。SOLO不僅可以推動最先進的技術,而且已經為實時應用做好了准備。
5.2. Bounding-box Object Detection
雖然本文的實例分割解決方案消除了Bounding-box預測的依賴性,但是本文能夠從每個實例掩碼中生成4D對象Bounding-box。在表2中,本文將生成的盒子檢測性能與COCO上的其他對象檢測方法進行了比較。所有模型均在2017數據子集上進行訓練,並在測試開發上進行測試。如表2所示,本文的檢測結果優於大多數方法,特別是對於大規模對象,證明了SOLOv2在對象盒檢測中的有效性。類似於實例分割,本文還繪制了圖7中不同方法的速度/精度折衷曲線。本文用ResNet-101和上面描述的兩個輕量級版本展示本文的模型。結果表明,SOLOv2的Bounding-box性能在精度和速度上均優於最新的目標檢測方法。這里本文強調,本文的結果是直接從現成的實例掩碼生成的,沒有任何基於框的監督培訓或工程。圖7的觀察結果如下。如果本文不太關心掩碼注釋和邊界框注釋之間的成本差異,那么在本文看來,沒有理由在下游應用中使用框檢測器,因為本文的SOLOv2在精度和速度上都優於大多數現代檢測器。
5.3. Panoptic Segmentation
提出的SOLOv2可以很容易地擴展到全景分割中,加入語義分割分支,類似於掩模特征分支。本文使用COCO 2018全景分割任務的注釋。所有車型均在2017年列車子集上接受訓練,並在2017年val2017上進行測試。本文使用與全景FPN中相同的策略來組合實例和語義結果。如表10所示,本文的方法獲得了最新的結果,並且在很大程度上優於其他最近的無框方法。列出的所有方法都使用相同的主干(ResNet50FPN),除了SSAP(ResNet101)和Panoptic DeepLab(exception-71)。
5.4. Results on the LVIS dataset
LVIS[11]是最近提出的一個用於長尾目標分割的數據集,它有1000多個對象類別。在LVIS中,每個對象實例都用一個高質量的掩碼分割,這個掩碼超過了相關COCO數據集的注釋質量。由於LVIS是新的,只有Mask R-CNN的結果是公開的。因此,本文只將SOLOv2與掩模R-CNN基線進行比較。表9報告了稀有(1∼10個圖像)、常見(11∼100)和頻繁(>100)子集以及整個AP的性能。本文的SOLOv2比基線方法的性能提高了1%左右。對於大型對象(APL),SOLOv2的AP改進率為6.7%,這與COCO數據集的結果一致。
6. Conclusion
在這項工作中,本文從三個方面對SOLOv1實例分割進行了顯著的改進。
•本文建議學習用於掩模預測磁頭的自適應動態卷積核,並根據位置進行調整,從而實現更緊湊但更強大的磁頭設計,並通過減少觸發器獲得更好的結果。
•本文重新設計了掩模功能,如圖3所示,它預測了更精確的邊界。特別是對於中、大尺寸目標,與SOLOv1相比,得到了更好的掩模ap。
•此外,與目標檢測中的box NMS不同,例如,分割在推理效率方面的瓶頸是NMSofmasks。以前的工作要么使用box-NMS作為代理,要么通過近似加速它,從而導致對mask-AP的損害。本文設計了一種簡單而快速的NMS策略,稱為矩陣NMS,用於掩模的NMS處理,而不需要對掩模AP進行破壞。
本文在microsoftco和LVIS數據集上的實驗表明,所提出的SOLOv2在精度和速度方面都具有優越的性能。作為多功能的實例級識別任務,本文表明,在沒有對框架進行任何修改的情況下,SOLOv2在全景分割方面具有競爭力。由於它的簡單性(無提案、無錨、類FCN),在准確性和速度上都有很強的性能,並且有可能解決許多實例級的任務,本文希望SOLOv2能夠成為一種強基線的實例識別方法,並激勵未來的工作,使其充分的潛力可以利用,因為本文認為,還有很大的改進空間。