本文解讀的是ECCV 2020 Oral 論文《Conditional Convolutions for Instance Segmentation》,是沈春華團隊在實例分割領域的又一力作。本論文解讀首發於「AI算法修煉營」。
作者 | SFXiang
編輯 | 叢 末
論文地址:https://arxiv.org/pdf/2003.05664.pdf
代碼地址(非官方):https://github.com/Epiphqny/CondInst
代碼地址(含各類方法):https://github.com/aim-uofa/AdelaiDet/
本文提出了一個簡單而有效的實例分割框架,稱為CondInst(用於實例分割的條件卷積)。效果最好的實例分割方法(例如Mask R-CNN)依靠ROI操作(通常為ROI Pool或ROI Align)來獲取最終的實例mask掩碼。
相反,本文從新的角度解決實例分割問題,沒有使用按實例的ROI作為固定權重網絡的輸入,而是採用了以實例為條件的動態實例感知網絡。 CondInst具有兩個優點:1)通過全卷積網絡解決了實例分割,無需進行ROI裁剪和特徵對齊。2)由於動態生成的條件卷積的容量大大提高,因此mask head可以非常緊湊(例如3個卷積層,每個僅具有8個通道),從而可以顯著加快推理速度。在COCO數據集上,本文的方法優於一些最近的方法,包括經過調整的Mask R-CNN,同時無需更長的訓練時間。
1
簡介
實例分割是計算機視覺中一項基本但具有挑戰性的任務,目前,實例分割的主要框架仍然是兩階段方法Mask R-CNN ,它將實例分割投射到兩階段的檢測和分割任務中。使用目標檢測器Faster R-CNN預測每個實例的邊界框。然後針對每個實例,使用ROI Align操作從網絡的特徵圖中裁剪出感興趣區域(ROI)。為了預測每個實例的最終mask,將緊湊的全卷積網絡(FCN)(即mask head)應用於這些ROI,以進行前景/背景分割。
但是,這種基於ROI的方法可能具有以下缺點:1)由於ROI通常是軸對齊的邊界框,對於形狀不規則的對象,它們可能包含過多的不相關圖像內容,例如在邊界框內包含了背景和其他實例。通過使用旋轉的ROI可以緩解此問題,但是其代價更高。2)為了區分前景實例和背景實例,mask head需要相對較大的感受野來對足夠大的上下文信息進行編碼。因此,在mask head中需要大量的3×3卷積(例如在mask R-CNN中具有4個256通道的3×3卷積)。這大大增加了Mask head的計算複雜度,從而導致推理時間隨實例數的變化而顯著變化。3)ROIs通常大小不同。為了在深度學習框架中使用有效的批量計算,通常需要進行大小調整操作以將區域調整為相同大小的patch。例如,Mask R-CNN將所有裁剪區域的大小調整為14×14(使用反卷積將其上採樣為28×28),這限制了實例分割的輸出解析度,因為大型實例需要更高的解析度才能在邊界保留細節。
圖1:CondInst利用實例感知的mask head預測每個實例的mask,即要預測的實例數。mask head中的卷積隨不同實例而變化,這些實例是動態生成的並以目標實例為條件。在mask head中,除了最後一層卷積操作其餘都使用ReLU作為激活函數,此處不使用諸如批歸一化BN之類的歸一化層。最後一次卷積層使用Sigmoid來預測mask前景的可能性。
在計算機視覺中,最接近實例分割的任務是語義分割,在語義分割領域全卷積網絡(FCN)表現出了巨大的成功。FCN在許多其他逐像素預測任務上也表現出色的性能。但是,幾乎所有基於FCN的實例分割方法都落後於基於最新ROI的方法。為什麼FCN在實例分割上的表現不令人滿意?本文觀察到將FCN應用於實例分割的主要困難在於,相似的圖像外觀可能需要不同的預測,但是FCN在實現這一目標方面遇到了困難。例如,如果輸入圖像中兩個具有相似外觀的人A和B,在預測A的實例mask時,則FCN需要將B預測為背景,這可能很難因為它們看起來相似。本質上,實例分割需要兩種類型的信息:1)外觀信息以對對象進行分類;2)位置信息以區分屬於同一類別的多個對象。幾乎所有方法都依賴於ROI cropping,這可以對實例的位置信息進行明確編碼。相反,CondInst通過使用位置/實例敏感的卷積以及附加到特徵圖的相對坐標來利用位置信息。
主要貢獻:
1、嘗試從新的角度解決實例分割。為此,提出了CondInst實例分割框架,該模板實現了比Mask R-CNN等現有方法更高的實例分割性能,同時速度更快。
2、CondInst是完全由卷積組成的,並且不依賴於ROI操作。無需調整特徵圖的大小即可獲得具有更高精確度的高解析度實例mask。
3、與以前的方法不同,CondInst的mask head中的卷積會動態生成並以實例為條件。由於僅要求卷積預測一個實例的掩碼,因此極大地減輕了學習要求,從而減輕了卷積的負載。與邊界框檢測器FCOS相比,CondInst僅需要多花費約10%的計算時間,甚至可以處理每個圖像的最大實例數(即100個實例)。
2
FCOS:檢測中心點 + 到框的四個距離
論文地址:https://arxiv.org/abs/1904.01355
代碼地址:https://github.com/tianzhi0549/FCOS
通過消除預定義的錨框,FCOS避免了與錨框相關的複雜計算,例如在訓練期間計算重疊等,並且顯著減少了訓練內存。更重要的是,FCOS還避免了設定與錨框相關的所有超參數,這些參數通常對最終檢測性能非常敏感。FCOS算法憑藉唯一的後處理:非極大值抑制(NMS),實現了優於以前基於錨框的one-stage檢測算法的效果。
FCOS的網絡結構還是FPN的結構,就是在生成p3~p7的時候,沒有在C5上採樣得到P6,而是直接用P5採樣得到P6。
網絡的輸出有三個branch,classification branch輸出每個點的類別, regression branch輸出每個點的四個值, (l,t,r,b)。其實這兩個branch都和keypoint detection思想很像,網絡最主要的貢獻在於提出了centernet-ness branch這個方法。以下分別介紹:
1.逐像素回歸預測
YOLOv1中也使用了無anchor策略,但基於YOLOv1在預測邊界框的過程中,提出的cell概念,導致YOLOv1隻預測了目標物體中心點附近的點的邊界框。這很顯然預測的框少,召回率自然也就低了。基於此,FCOS算法為了提升召回率,則對目標物體框中的所有點都進行邊界框預測。當然這種逐像素的邊界框預測肯定會導致最終預測得到的邊界框質量不高,因此作者在後續還會提出彌補策略。FCOS目標檢測算法在邊界框預測中使用的策略和YOLOv1有所不同,F提出的預測策略如下:
如上兩張圖所示,FCOS算法在對目標物體框中所有的點進行目標框回歸時,用到各個邊的距離長度來計算損失。之所以使用這種策略,而不使用主流目標檢測算法的策略,其主要原因是為了後續使用center-ness準備。
由於FCOS算法是基於目標物體框中的點進行逐像素回歸的,因此執行回歸的目標都是正樣本,所以作者使用了exp()函數將回歸目標進行拉伸,可以此操作是為了最終的特徵空間更大,辨識度更強。最後,逐像素回歸預測除了能夠帶來更多的框以外,更重要的是利用了儘可能多的前景樣本來訓練回歸器,而傳統的基於anchor的檢測器,只考慮具有足夠高的IOU的anchor box作為正樣本。作者認為,這可能是FCOS優於基於anchor的同類檢測器的原因之一。
2. 多尺度策略
對於基於anchor的檢測算法,由於較大的降採樣操作而導致的低召回率可以通過降低正anchor所需的IOU閾值做一定程度上的補償,進行召回率的提升。然而對於FCOS算法,如果降採樣的尺度過大,那麼網絡不可能回憶起一個在最終特徵圖上沒有位置編碼的對象的初始框的,基於此作者提出了基於FPN的多尺度策略。(雖然作者在文中說,即使沒有FPN策略,逐像素檢測網絡在召回率上表現的也不遜色基於anchor的網絡)
如上圖所示,FCOS算法那使用了{P3, P4, P5, P6, P7}這五個尺度的特徵映射。其中P3、P4、P5由主幹CNNs網絡的特徵層 C3、C4、C5經過一個1*1的卷積得到的,而,P6、P7則是接著P5進行了步長為2的卷積操作得到的(相當於降採樣,看註解)。最終對這五個尺度都做逐像素回歸。
當然,為了能夠更好的利用這種多尺度特徵,在每一個尺度的特徵層都限定了邊界框回歸的範圍。具體步驟如下:
計算當前層級中的回歸目標:l、t、r、b判斷max(l, t, r, b) > mi 或者 max(l, t, r, b) < mi -1是否滿足。若滿足,則不對此邊界框進行回歸預測。mi是作為當前尺度特徵層的最大回歸距離。
而且這種約束帶來的額外的效果在於,由於不同尺寸的物體被分配到不同的特徵層進行回歸,又由於大部分重疊發生在尺寸相差較大的物體之間,因此多尺度預測可以在很大程度上緩解目標框重疊情況下的預測性能。
3. center-ness
由於FCOS算法使用了逐像素回歸策略,在提升召回率的同時,會產生許多低質量的中心點偏移較多的預測邊界框。基於此,作者提出了一個簡單而有效的策略center-ness來抑制這些低質量檢測到的邊界框,且該策略不引入任何超參數。
如上圖所示,center-ness策略在每一個層級預測中添加了一個分支,該分支與分類並行,相當於給網絡添加了一個損失,而該損失保證了預測的邊界框儘可能的靠近中心。
具體來說,FCOS添加單層分支,與分類分支並行,以預測Center-ness位置。
從圖中可以看出,box的中心處響應值最高, 隨後逐次降低,值的範圍在0~1之間。centet-ness branch中每個featuremap位置上的值計算是根據回歸計算得到的(l, t, r, b), 可以看出, 越是中間位置, centerness值就越高, 越偏離中心處,centerness值就會越低,centerness-branch的loss用BCE來計算。
center-ness(可以理解為一種具有度量作用的概念,在這裡稱之為中心度,中心度取值為0,1之間,使用交叉熵損失進行訓練。並把損失加入前面提到的損失函數中。測試時,將預測的中心度與相應的分類分數相乘,計算最終得分(用於對檢測到的邊界框進行排序)。因此,中心度可以降低遠離對象中心的邊界框的權重。因此,這些低質量邊界框很可能被最終的非最大抑制(NMS)過程濾除,從而顯著提高了檢測性能。
3
本文的方法:Instance Segmentation with CondInst
圖3. CondInst的網絡結構圖。C3,C4和C5的是主幹網絡(例如ResNet-50)的特徵圖。P3到P7是FPN特徵圖。Fmask是mask分支的輸出。分類head預測位置(x,y)處目標實例的類別概率p(x,y),與FCOS中相同。controller head(在虛線框中)應用於P3···P7。mask head是實例感知的,其轉換每種情況下都會動態生成卷積核θx,y,並且將其應用於Fmask的次數與圖像中實例的數量相同(請參見圖1)。
可以看出,整體結構可分為兩大部分:
一、FCOS:上半部分,整個pipeline和FCOS沒啥差別,只是head層的輸出略有不一樣,那麼對於FPN每一個layer的每一個pixel,主要輸出:
1、Classification Head: 和原版FCOS含義一樣
2、Center-ness Head:這個定義也是和原版FCOS一致的,用來抑制不太好的預測結果
3、Controller Head:具有與Classification Head相同的架構,是本篇論文的核心了,負責生成Mask FCN Head的參數,假設Mask FCN Head的總參數量是X,那麼Controller Head的維度就是X,論文中當X取169的時候性能就比較不錯了。
二、Mask FCN Head: 下半部分是論文的核心點,它的結構就是一般的FCN,但是它的特點在於FCN的參數是動態的,不同的instance有不同的參數,這就會造成多個Mask FCN Head的感覺,同時功能上也類似Mask RCNN出框的作用-區分Instance。
Mask FCN Head接在P3 Layer之後, 經過幾層Conv之後得到一個H x W x C的feature map, 論文中C = 8,C的取值對分割的性能影響不大,甚至C = 2的時候性能也只是下降0.3%!因為Mask FCN Head負責出instance,而其參數又是由P3 - P7的head層所得,所以為了構建兩者的聯繫,在Mask FCN Head輸入層Fmask Concat了Fmask到P3 - P7的相對位移,假設Fmask的維度為H x W x C,Pi的維度為Hi x Wi x Ci, 那麼把Fmask的每一個pixel映射到Pi,映射前後坐標的offset就會和原始的Fmask Concat到一起作為Mask FCN Head的輸入。
Mask FCN Head具有3個1×1卷積,每個卷積具有8個通道,並使用ReLU作為激活函數(最後一個除外),不使用諸如批處理歸一化之類的歸一化層,最後一層具有1個輸出通道,並使用sigmoid來預測成為前景的概率。
損失函數
4
實驗與結果
1、消融實驗
2、對比實驗
3、可視化實驗
更多細節可參考論文原文。
參考:
[1]http://libanghuai.com/2020/03/13/Conditional-Convolutions-for-Instance-Segmentation/
[2] 攻克目標檢測難點秘籍六,釋放Anchor的Anchor-Free算法
招聘
AI科技評論希望能夠招聘科技編輯/記者一名
辦公地點:北京
職務:以跟蹤學術熱點、人物專訪為主
工作內容:
1、關注學術領域熱點事件,並及時跟蹤報導;
2、採訪人工智慧領域學者或研發人員;
3、參加各種人工智慧學術會議,並做會議內容報導。
要求:
1、熱愛人工智慧學術研究內容,擅長與學者或企業工程人員打交道;
2、有一定的理工科背景,對人工智慧技術有所了解者更佳;
3、英語能力強(工作內容涉及大量英文資料);
4、學習能力強,對人工智慧前沿技術有一定的了解,並能夠逐漸形成自己的觀點。
感興趣者,可將簡歷發送到郵箱:jiangbaoshang@yanxishe.com
點