SOLO: 按位置分割對象


SOLO: 按位置分割對象

SOLO: Segmenting Objectsby Locations

 

 

論文鏈接:

https://arxiv.org/pdf/1912.04488.pdf

代碼鏈接:

https://github.com/WXinlong/SOLO

摘要

我們提出了一個新的,令人尷尬的簡單方法,在圖像中的實例分割。與其他許多密集預測任務(如語義分割)相比,任意數量的實例使得實例分割更具挑戰性。為了預測每個實例的遮罩,主流方法要么遵循例如mask R-CNN所使用的“檢測然后分段”策略,要么首先預測嵌入向量,然后使用聚類技術將像素分組到單個實例中。我們從一個全新的角度來看待實例分割的任務,引入了“實例類別”的概念,它根據實例的位置和大小給實例中的每個像素分配類別,從而很好地將實例掩碼分割轉化為一個分類可解的問題。現在實例分割被分解為兩個分類任務。我們展示了一個簡單靈活的實例分割框架,具有很強的性能,達到了與Mask R-CNN同等的精度,並且在精度上優於最近的單鏡頭實例分割器。我們希望這個非常簡單和強大的框架可以作為除實例分割之外的許多實例級識別任務的基線。

1.       Introduction

實例分割具有挑戰性,因為它需要正確分離圖像中的所有對象,同時還要在像素級對每個實例進行語義分割。圖像中的對象屬於一組固定的語義類別,但是實例的數量不同。因此,語義分割可以很容易地表述為一個密集的每像素分類問題,而直接按照相同的范式預測實例標簽則是一個挑戰。為了克服這一障礙,目前的實例分割方法可以分為自頂向下和自下而上兩類。前一種方法,即“檢測到段”,首先檢測邊界框,然后在每個邊界框中分割實例掩碼。后一種方法通過推開屬於不同實例的像素,並在同一實例中拉近像素,來學習af finity關系,為每個像素分配一個嵌入向量。然后需要分組后處理來分離實例。兩者這兩種模式是逐步的和間接的,它們要么嚴重依賴於精確的包圍盒檢測,要么依賴於每像素的嵌入學習和分組處理。相比之下,我們的目標是在完整實例掩碼注釋的監督下,直接分割實例掩碼,而不是框中的掩碼或附加的像素對關系。

我們從重新思考一個問題開始:動物之間的基本區別是什么?以challengms COCO數據集[12]為例。驗證子集中共有36780個目標,98.3%的目標對中心距大於30像素。其余1.7%的對象對中,40.5%的對象對大小比大於1.5×。在這里,我們不認為少數情況下像兩個物體在'形狀。總之,在大多數情況下,圖像中的兩個實例要么具有不同的中心位置,要么具有不同的對象大小。這個觀察結果讓人懷疑我們是否可以通過中心位置和對象大小直接區分實例?在密切相關的領域,語義分割,現在占主導地位的范式利用一個完全卷積網絡(FCN)輸出N個通道的密集預測。

每個輸出通道負責其中一個語義類別(包括背景)。語義分割的目的是區分不同的語義范疇。類似地,在這項工作中,我們建議通過引入“實例類別”的概念來區分圖像中的對象實例,即量化的中心位置和對象大小,從而能夠按位置分割對象,因此我們的方法名為SOLO。我們提出的SOLO的核心思想是按位置和大小分離對象實例。位置圖像可以分成S單元的網格,從而產生S2中心位置類。根據對象中心的坐標,將對象實例指定給其中一個網格單元作為其中心位置類別。

DeepMask[21]和TensorMask[2]不同,DeepMask[21]和TensorMask[2]將掩碼打包到通道軸中,我們將中心位置類別編碼為通道軸,類似於語義分割中的語義類別。每個輸出通道負責一個中心位置類別,相應的通道映射應該預測屬於該類別的對象的實例掩碼。因此,結構幾何信息自然地保存在空間矩陣中。實際上,實例類別近似於實例的對象中心位置。因此,通過將每個像素分類到其實例類別中,就相當於使用回歸從每個像素預測對象中心。在這里,將位置預測任務轉換為分類而不是回歸的重要性在於,在分類時,使用固定數量的通道對不同數量的實例進行建模更加直接和容易,同時不依賴於分組或學習嵌入等后處理。為了區分具有不同對象大小的實例,我們采用特征金字塔網絡(FPN)[11],以便將不同大小的對象分配給不同級別的特征映射,作為對象大小類。

因此,所有的對象實例都是定期分離的,這樣就可以按“實例類別”對對象進行分類。請注意,FPN是為檢測圖像中不同大小的對象而設計的。在后半部分中,我們通過實驗證明FPN是我們方法的核心組件之一,它對分割性能有着深遠的影響,特別是對不同大小的物體的分割。利用所提出的SOLO框架,我們能夠針對單獨使用掩碼注釋的實例分割任務,以端到端的方式優化網絡,並且在不受本地盒檢測和像素分組限制的情況下,執行像素級的實例分割。注意,到目前為止,大多數實例分割方法都需要框注釋作為監視信號之一。第一次,我們展示了一種非常簡單的實例分割方法,在具有不同場景和語義類的具有挑戰性的COCO數據集[12]上,實現了與主流的“檢測然后分割”方法Mask R-CNN[7]相當的結果。

此外,我們通過實例輪廓檢測的任務來展示我們框架的通用性,通過將實例邊緣輪廓視為一個熱的二值掩模,幾乎不需要單獨修改就可以生成合理的實例輪廓。提出的SOLO算法只需要解決兩個像素級的分類任務,類似於語義分割。因此,可以借用語義分割的一些最新進展來改進SOLO。本質上,SOLO通過離散量化將坐標回歸轉換為分類。這樣做的一個優點是避免了啟發式的協調規范化和日志轉換,通常使用諸如YOLO[22]這樣的索引器。這種令人尷尬的簡單性和強大的性能可以預測其在廣泛的實例級識別任務中的應用。

 

 

2.       Related Work

我們回顧了一些最接近我們的實例分割工作。              

自頂向下的實例分段             

在先驗包圍盒中分割對象實例的方法屬於典型的自頂向下范式。FCIS[10]將由區域提議網絡(RPN)生成的感興趣區域(roi)內的位置敏感得分圖集合起來,以預測實例掩碼。Mask R-CNN[7]通過在檢測到的邊界框內添加用於分割對象實例的分支,擴展了更快的R-CNN檢測器[23]。在Mask R-CNN的基礎上,PANet[16]進一步增強了特征表示以提高精度,Mask Scoring R-CNN[8]增加了Mask IoU分支以預測預測的Mask的質量,並對Mask進行評分以提高性能。TensorMask[2]采用密集滑動窗口范式,在本地窗口中為每個像素分割實例,並預先確定窗口數和比例。與上述自上而下的方法相比,我們的SOLO完全無箱,因此不受(錨)箱位置和規模的限制,自然受益於FCN的固有優勢。             

自下而上的實例分割             

這類方法通過將像素分組為圖像中呈現的任意數量的對象實例來生成實例掩碼。我們簡要回顧了最近的幾種方法。使用[19]中學習的關聯嵌入將像素分組到實例中。判別損失函數[5]通過推開屬於不同實例的像素並在同一實例中拉近像素,有效地學習像素級實例嵌入。SGN[15]將實例分割問題分解為一系列子分組問題。SSAP[6]學習一個像素對的單位金字塔,兩個像素屬於同一個實例的概率,並通過一個不規則的圖分區依次生成實例。與自頂向下方法相比,自底向上方法的准確性通常落后,特別是在具有不同場景和語義類的數據集上。SOLO沒有利用像素對關系和像素分組,而是在訓練過程中直接使用實例掩碼注釋進行學習,並在不分組后處理的情況下,端到端地預測實例掩碼和語義類別。在這個意義上,我們提出的SOLO是一種直接的端到端實例分割方法。             

直接實例分割             

據我們所知,沒有一種先驗的方法是直接使用mask注釋進行訓練,不需要對后處理進行分組,就可以一次預測實例的mask和語義類別。最近提出的幾種方法可被視為“半直接”范式。AdaptIS[24]首先預測點建議,然后依次為位於檢測到的點建議的對象生成掩碼。polar mask[27]建議使用極坐標表示對掩模進行編碼,並將每像素掩模預測轉換為距離回歸。它們都不需要邊界框進行訓練,但要么是逐步的,要么是建立在折衷的基礎上,例如,面具的粗略參數表示。我們的SOLO以圖像為輸入,直接輸出實例掩碼              以及相應的類概率,在完全卷積的、無盒子的和無分組的范式中。我們簡單的網絡可以在不需要監控的情況下進行端到端的優化。為了進行預測,網絡直接將輸入圖像映射到每個實例的遮罩,既不依賴RoI特征裁剪等中間操作,也不依賴分組后處理。

3.       Our Method: SOLO

3.1.  Problem Formulation

給定任意圖像,實例分割系統需要判斷是否存在語義對象的實例;如果存在,則系統返回分割掩碼。SOLO框架的核心思想是將實例分割轉化為兩個同時存在的類別感知預測和實例感知掩模生成問題。具體來說,我們的系統將輸入圖像分割成一個均勻的網格,即S。如果一個物體的中心落在一個網格單元中,該網格單元負責              1) 預測語義類別以及             

2) 分割該對象實例。

對於每個網格,SOLO預測C維輸出以指示語義類概率,其中C是類的數量。這些概率取決於網格單元。如果我們將輸入圖像分成S網格,則輸出空間為C,如圖2所示(頂部)。該設計基於S網格的每個單元必須屬於一個實例的假設,因此只屬於一個語義范疇。在推理過程中,C維輸出指示每個對象實例的類概率。

在語義類別預測的同時,每個正網格單元也會生成相應的實例掩碼。對於輸入圖像I,如果將其划分為S網格,則總共最多有S2個預測掩模。我們在三維輸出張量的三維(通道)顯式地編碼這些掩模。具體來說,實例掩碼輸出將具有HI×WI×S2維。第k個通道將負責在網格(i,j)處分段實例,其中k=i·S+j(以i和j為零為基礎)1。為此,在語義類別和類不可知掩碼之間建立了一對一的對應關系(圖2)。預測實例掩碼的直接方法是采用完全卷積網絡,如語義分割中的FCNs[17]。

然而,傳統的卷積運算在一定程度上具有空間不變性。由於空間不變性引入了魯棒性,因此在圖像分類等任務中需要空間不變性。然而,恰恰相反,這里我們需要一個空間變化的模型,或者更精確地說,位置敏感的模型,因為我們的分割遮罩是              網格單元必須由不同的特征通道分隔。

我們的解決方案非常簡單:在網絡的開始,我們直接將標准化的像素坐標饋送給網絡,靈感來自“CoordConv”操作符[14]。具體來說,我們創建了一個與包含像素坐標的輸入具有相同空間大小的張量,該張量被規范化為[-1,1]。然后,該張量連接到輸入特征並傳遞到以下層。通過簡單地賦予卷積對其自身輸入坐標的訪問權,我們將空間功能添加到傳統的FCN模型中。值得注意的是,CoordConv並不是唯一的選擇。例如,半卷積算子[20]可以勝任,但我們使用CoordConv是因為它簡單且易於實現。如果原始特征張量的大小為D,則新張量的大小為W×(D+2),其中最后兩個通道是x-y像素坐標。關於CoordConv的更多信息,請參閱[14]。正在形成實例分段。

SOLO中,類別預測和對應的掩碼由它們的參考網格單元(k=i·S+j)自然關聯,在此基礎上,我們可以直接形成每個網格的最終實例分割結果。原始實例分割結果是通過收集所有網格結果生成的。最后,利用非最大值抑制(NMS)方法得到最終的實例分割結果。不需要其他后處理操作。

3.2.  Network Architecture

我們現在介紹在我們的SOLO框架中使用的網絡。SOLO附屬於一個回旋的骨干。我們使用FPN[11],它生成具有不同大小的特征映射金字塔,每個級別具有固定數量的通道(通常為256-d)。這些映射用作每個預測頭的輸入:語義類別和實例掩碼。頭部的重量在不同的層次上共享。網格數在不同的金字塔上可能不同。在此場景中,只有最后一個1 convis沒有共享。為了演示我們方法的通用性和有效性,我們用多個架構實例化SOLO。             

這些差異包括:             

a) 用於特征提取的主干架構,             

b) 用於計算實例分段結果的網絡頭,以及             

c) 利用訓練損失函數對模型進行優化。             

大多數實驗都是基於頭部結構的,如圖3所示。我們還利用不同的變體來進一步研究通用性。我們注意到我們的實例分段頭有一個直接的結構。更復雜的設計有可能提高性能,但不是這項工作的重點。

3.3.  SOLO Learning

對於類別預測分支,網絡需要給出每個S網格的對象類別概率。具體來說,如果網格(i,j)落入任何地面真值掩模的中心區域,則它被視為正樣本,否則它是負樣本。中心采樣在最近的目標檢測工作中是有效的[26,9],在這里,我們也使用了類似的技術來分類掩模類別。

 

 

3.4.  Inference

SOLO的推論非常直接。給定一幅輸入圖像,通過骨干網和FPN進行轉發,得到網格(i,j)處的類別得分pi,j和相應的掩碼mk,其中k=i·S+j,因為我們通常保持行主順序。我們首先使用0.1的置信閾值來過濾低置信度的預測。然后,我們選擇500強評分口罩,並將其輸入NMS操作。為了將預測的軟掩碼轉換為二進制掩碼,我們使用0.5的閾值對預測的軟掩碼進行二進制處理。我們保留前100個實例掩碼供評估。

 

 

 

 

4.       Experiments

我們在MS-COCO實例分割軌道上給出實驗結果[12],並通過評估5k-val2017分割報告損傷和敏感性研究。對於我們的主要結果,我們在test dev split上報告COCO mask AP,它沒有公共標簽,在評估服務器上進行評估。

訓練細節

用隨機梯度下降(SGD)訓練SOLO。我們使用同步SGD超過8個GPU,每個小批量總共16個圖像(每個GPU 2個圖像)。除非另有說明,否則所有模型都要經過36個階段的訓練,初始學習率為0.01,然后在第27個階段除以10,在第33個階段再除以10。重量衰減為0.0001,動量為0.9。所有模型都由ImageNet預先訓練的權重初始化。我們使用比例抖動,其中較短的圖像側隨機采樣640至800像素。

4.1.  Main Results

mscoo測試設備表1中,我們比較了SOLO和最新的分段方法。SOLO結合ResNet-101實現了37.8%的mask AP,是mask R-CNN等現有兩階段實例分割方法中的最新技術。SOLO的性能優於所有前一階段的方法,包括TensorMask[2]。利用DCN-101【4】主干,SOLO進一步實現了40.4 AP,這比目前COCO實例分割任務中的主流方法要好得多。圖8顯示了SOLO的輸出。我們的研究表明,SOLO即使在困難的條件下也能取得好的成績。

4.2.  How SOLO Works?

我們展示了S=12網格生成的網絡輸出(圖4)。子圖(i,j)表示對應掩模通道(乙狀結腸之后)生成的軟掩模預測結果。這里我們可以看到不同的實例在不同的掩碼預測通道中激活。通過在不同位置顯式分割實例,SOLO將實例分割問題轉化為位置感知分類任務。             

每個網格只激活一個實例,多個相鄰掩碼通道可以預測一個實例。在推理過程中,我們使用NMS來抑制這些冗余的掩碼。

4.3.  Ablation Experiments

Grid number

我們將網格數對性能的影響與單輸出特征映射進行比較,如表2所示。該特性是通過合並ResNet中的C3、C4和C5輸出(步長:8)生成的。令我們驚訝的是,S=12已經可以在具有挑戰性的MS-COCO數據集上達到27.2ap。SOLO將網格數提高到24時獲得29.0ap。這一結果表明,我們的單尺度獨奏可以適用於一些場景中的對象尺度變化不大。然而,單尺度模型在很大程度上落后於金字塔模型,說明了FPN在處理多尺度預測中的重要性。             

Multi-level Prediction             

從表2中我們可以看到,我們的單尺度獨奏在分割多尺度物體時遇到了困難。在這個融合過程中,我們證明了FPN的多層次預測可以在很大程度上解決這個問題[11]。從表2的融合開始,我們使用五個FPN金字塔分割不同尺度的物體(表3)。地面真值掩碼的比例被顯式地用於將它們指定給金字塔的級別。在多層次預測的基礎上,進一步實現了35.8AP。如預期的那樣,總體上分割性能指標有了很大的提高。              CoordConv             

另一個有助於我們的SOLO范式的重要組成部分是空間變異卷積(CoordConv[14])。如表4所示,標准卷積在一定程度上已經具有空間變異特性,這與[14]中的觀察結果一致。當通過級聯額外的坐標通道使卷積訪問其自身的輸入坐標時,我們的方法具有3.6的絕對AP gains。兩個或多個坐標變換器不會帶來明顯的改善。這表明,單一的坐標變換已經使預測具有很好的空間變化/位置敏感性。             

Loss function                

5比較了我們的掩模優化分支的不同損失函數。這些方法包括傳統的Cross Entropy(BCE)、Focal Loss(FL)和Dice Loss(DL)。為了獲得更好的性能,對於二值交叉熵,我們將正樣本的掩模損失權重設置為10,像素權重設置為2。Focal Loss的掩模損失權重設置為20。如圖所示,Focal Loss比普通的二元交叉熵損失好得多。這是因為實例掩碼的大部分像素都在背景中,而Focal Loss的設計是為了通過減少良好分類樣本的損失來緩解樣本不平衡問題。但是,Dice Loss在不需要手動調整損失超參數的情況下達到最佳效果。Dice Loss將像素視為一個整體對象,可以自動在前景和背景像素之間建立正確的平衡。注意,通過仔細調整平衡超參數和引入其他訓練技巧,二元交叉熵和Focal Loss的結果可能會有很大的改善。然而,這里的要點是,隨着Dice Loss,訓練通常變得更加穩定,並且更有可能在不使用很多啟發式方法的情況下獲得良好的效果。

Alignment in the category branch

在類別預測分支中,我們必須將卷積特征與空間大小W到S相匹配。這里,我們比較了三種常用的實現方法:插值、自適應池和區域網格插值。             

•插值:直接雙線性插值到目標網格大小;             

•自適應池:在W到S上應用2D自適應max池;             

•區域網格插值:對於每個網格單元,我們使用基於密集采樣點的雙線性插值,並將結果聚合為平均值。             

從我們的觀察來看,七個變量之間沒有明顯的性能差異(±0.1AP),表明校准過程相當靈活。             

Different head depth

SOLO中,實例分割被定義為一個像素到像素的任務,我們使用FCN來開發遮罩的空間布局。在圖5中,我們比較了工作中使用的不同頭部深度。將頭部深度從4更改為7將獲得1.2 AP增益。圖5中的結果表明,當深度超過7時,性能變得穩定。在本文中,我們在其他實驗中使用深度為7。以往的工作(如掩模R-CNN)通常采用四個卷積層進行掩模預測。在SOLO中,面罩是根據空間位置來調節的,我們只需將坐標系附加到頭部的開始。面具頭部必須有足夠的表現力來學習這種轉換。對於語義范疇分支,由於S2  H×W,計算開銷可以忽略不計。             

4.4.  SOLO-512

我們還訓練了一個更小版本的SOLO,旨在加速推理。我們使用的模型具有較小的輸入分辨率(較短的圖像大小為512而不是800)。其他訓練和測試參數在SOLO-512和SOLO之間相同。

SOLO-512采用34.2mask AP,模型推理速度達到22.5fps,顯示了SOLO在實時實例分割應用中的潛力。平均運行5次,在一個V100 GPU上報告速度。

 

 

 

 

 

 

 

 

 

 

5.       Decoupled SOLO

給定預先確定的柵格編號,例如S=20,我們的單頭輸出S2=400通道圖。然而,由於在大多數情況下對象在圖像中稀疏地定位,因此預測有點多余,因為在圖像中不太可能出現如此多的實例。在本節中,我們將進一步介紹一種與vanillaSOLO相當且更為有效的變體,稱為DecoupledSOLO,如圖7所示。

 

 

我們使用和vanillaSOLO相同的超參數進行實驗。如表7所示,DecoupledSOLO取得了與vanillaSOLO相同的性能。結果表明,在單聲道的精度上,DecoupledSOLO是一個有效的等效變量。注意,由於輸出空間大大減少,在訓練和測試期間,DecoupledSOLO需要的GPU內存大大減少。

 

 

 

 

 

 6.       Error Analysis

為了定量地理解用於掩模預測的SOLO,我們通過用地面真值替換預測的掩模來進行誤差分析。對於每個預測的二值掩模,我們用地面真值掩模計算ios,並用最重疊的地面真值掩模替換它。如表8所示,如果我們將預測的掩蔽體替換為地面真實掩蔽體,則AP增加到68.1。這項實驗表明,仍然有足夠的空間改進掩模分支。我們期望更多的語義分割技術可以應用到提高性能上。

 

 7.       SOLO for Instance Contour Detection

通過改變掩模分支的優化目標,我們的框架可以很容易地擴展到實例輪廓檢測。我們首先使用OpenCV的find courtos函數將MS-COCO中的地面真值掩模轉換為實例輪廓[25],然后使用二值輪廓與語義類別分支並行優化掩模分支。這里我們使用焦點損失來優化輪廓檢測,其他設置與實例分割基線相同。圖6顯示了由我們的模型生成的一些輪廓檢測示例。我們提供這些結果作為SOLO可用於輪廓檢測的概念證明。

8.       Conclusion

在這項工作中,我們開發了一個名為SOLO的直接實例分割框架,與事實上的實例分割方法Mask R-CNN相比,達到了競爭性的准確度。我們提出的模型是端到端可訓練的,可以直接將原始輸入圖像映射到期望的實例掩碼,並且具有恆定的推理時間,消除了自底向上方法中的分組后處理或自頂向下方法中的包圍盒檢測和RoI操作的需要。通過引入“實例類別”的新概念,我們第一次能夠將實例掩碼預測重新格式化為一個非常簡單的分類任務,使實例分割比所有當前方法都簡單得多。我們展示了兩個實例級的識別任務,即實例分割和實例輪廓檢測。考慮到SOLO的簡單性、靈活性和強大的性能,我們希望SOLO可以作為許多實例級識別任務的基礎。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM