Panoptic Feature Pyramid Networks  論文詳解

論文鏈接:https://arxiv.org/abs/1901.02446

非官方復現代碼:https://github.com/Ixuanzhang/panoptic-fpn-gluon

0. 摘要
  當下用於語義分割和實例分割的方法使用的是完全不同的網絡,二者之間沒有很好的共享計算,該論文通過賦使用特徵金字塔(FPN)的Mask R-CNN一個語義分割分支,在架構層面將這兩種方法結合成一個單一網絡來同時完成實例分割和語義分割的任務。

1. 介紹
  該論文的目標是設計一個相對簡單的單一網絡來進行全景分割,即一種同時進行實例分割(for thing classes)和語義分割(for stuff classes)的分割任務,然而設計這樣的一個網絡面臨着很大的挑戰。對於語義分割任務來說,空洞卷積擴充的FCNs是目前主流的方法;對於實例分割來說,帶有特徵金字網絡的基於區域提議的Mask R-CNN則比較常見。該論文避免了在兩個任務各自的精度上做取捨,設計的模型能夠同時產生實例分割中的區塊輸出和語義分割中的像素密集輸出。

  論文提出的模型結構如上圖,保持FPN主幹網絡不變,在這個主幹的基礎上新增一個與實例分割分支並行的分支進行語義分割。要得到一個好的結果,同時合理訓練兩個分支是至關重要的。作者在如何平衡兩個分支的損失函數,訓練批次,學習率,數據增廣等多方面進行了研究。
  最終發現在coco數據集和Cityscapes數據集上,單獨對每個分支進行訓練最終會得到非常好的結果。實例分割效果和Mask R-CNN相同,附加在FPN後的dense-prediction(稠密預測)分支(即語義分割)的效果與重量級的模型DeepLabV3+相近。
  對於全景分割來說,適當的訓練單個FPN來同時解決兩個問題和訓練兩個FPNs的效果相同,前者還能減少一半的計算量。Panoptic FPN在Mask R-CNN上加了一個輕量級的前端,內存佔用和計算量上都非常高效,而且避免了使用空洞卷積。論文也可以移植使用不同的主幹網絡(backbone)來獲得更好的性能,比如ResNeXt。

2、相關工作

2.1 全景分割(Panoptic segmentation)
    stuff的語義分割和thing的實例分割的聯合,成爲了全景分割中的一個新的熱點。本論文的任務是設計一個對兩個任務都有效的single network,作爲未來全景分割的一個baseline。 

2.2 實例分割(Instance segmentation)
  基於區域(region-based)的目標檢測方法包括:Slow/Fast/ Faster / Mask R-CNN,這些都是應用deep networks去生成候選物體區域,這些已被證明很成功。帶有FPN的Mask R-CNN獲得了最近兩年(2017、2018年)COCO檢測挑戰的winner。最近的一些新的創新:Cascade R-CNN、deformable convolution 、sync batch norm。帶有FPN的Mask R-CNN給本文的工作提供了很好的baseline。
  另一種基於區域的實例分割方法是從像素級語義分割開始,然後執行分組來提取實例。(對應論文:(1)

InstanceCut: from edges to instances with multi-cut   (2)SGN:Sequential grouping networks for install segmentation  (3)Pixelwise instance segmentation with a dynamically instantiated network)這一做法具有創新性、前景廣闊。但這些方法傾向於使用單獨的網絡的來預測實例信息(例如:前面列出的方法中分別使用單獨的網絡來預測實例邊緣、bounding boxes、object breakpoints)本文目標爲聯合任務設計一個單一網絡。另一個有趣的方向是使用位置敏感的像素標籤去全卷積編碼實例信息。

2.3 語義分割(Semantic segmentation)
  FCNs是現在語義分割的基礎。爲增加feature resolution(特徵分辨率),使用dilated convolution(也叫atrous convolution空洞卷積)。一種可替代空洞卷積的方式是:encoder-decoder或‘U-Net’結構,也可增加feature resolution。編碼器-解碼器不斷地向上採樣,並將來自前饋網絡的高級特徵與來自下層網絡的特徵結合起來,最終生成語義上有意義、高分辨率的特徵。但空洞卷積更長用於語義分割。
  本論文采用的方法是一個encoder-decoder框架:FPN。不同於“symetric‘ decoder,FPN採用非對稱的輕量級解碼器。FPN作爲Mask R-CNN默認的backbone,用於實例分割。FPN用於語義分割也很高效。

3. 全景分割特徵金字塔網絡
  Panoptic FPN是一個簡單的單一網絡,它同時實現實例分割和語義分割並希望取得頂級的效果,兩個任務一齊稱爲全景分割。設計原則:用一個強的實例分割做baseline:Mask R-CNN with FPN,做很小改變,生成一個語義分割的稠密像素結果輸出。

3.1 模型架構
(1)特徵金字塔網絡:FPN網絡使用一個標準的網絡提取多個空間位置的特徵,然後加一個輕量級的自頂而下的通路,並且和特徵提取網絡橫向連接。自頂而下的通路在網絡最深的層開始然後進行上採樣,然後與其前層網絡輸出特徵圖進行相加,依次操作。最終生成原始圖像的1/32,1/16,1/8,1/4四個分辨率的特徵圖,每個層級的通道數默認都是256.
(2)實例分割分支:FPN、相同通道數的設計都是爲了基於區域提議的目標檢測器更易於檢測(易於附加到像Faster R-CNN這樣基於區域提議的物體檢測器上)。例如,FPN之後Faster R-CNN在不同的金字塔層級分別進行RoI池化,然後增加一個網絡分支來爲每個候選區域預測其類別得分和邊界框位置。爲了得到實例分割的結果,擴展Faster R-CNN新增一個FCN分支來爲每一個候選區域生成一個二進制掩碼圖,即Mask R-CNN。
(3)Panoptic FPN:該論文的工作就是對帶有FPN的Mask R-CNN進行修改使其能夠進行逐像素的語義分割預測。然而爲了得到這個逐像素的預測,有三個必須的條件:

    一是分辨率適當高的特徵圖以便捕獲細節信息
    二是編碼足夠豐富的語義以準確預測類標籤
    三是捕獲多尺度的信息
  儘管FPN是爲目標檢測設計的,但是這三個條件FPN正好具備,因此只需要在FPN上添加一個簡單的分支用於語義分割即可。

                                                                        Segmetic  FPN

(4)語義分割分支(Semantic segmentation branch):這個分支的構造如上圖所示。開始於:最深層的FPN level(原圖的1/32),執行3次上採樣恢復至原圖1/4的特徵圖。每次上採樣階段包括:3*3 convolution,group norm(分組歸一化),Relu,2× bilinear upsampling(2倍的雙線性插值)。這個策略在FPN的1/16、1/8、1/4尺度重複執行(逐漸上採樣次數減少)。得到4個相同的1/4尺度的特徵圖,然後對其進行對應元素相加。最後執行1*1 convolution,4× bilinear upsampling(4倍的雙線性插值),恢復至原始圖片大小,使用softmax函數生成每個像素的class label(在原始圖像分辨率下)。除了stuff類,這個分支也會輸出一個特殊的‘other’類,針對那些屬於物體的所有像素(爲了避免把那些像素預測成stuff類)。
(5)其他實現細節:FPN每個金字塔層級都有256個輸出通道,語義分割分支降到128個。對於FPN之前的主幹網絡,論文選擇了帶有BN(batch norm)的在ImageNet預訓練的Resnet和ResNeXt。在進行微調的時候,將BN換成一個固定的信道仿射變換。

3.2 推斷和訓練

      1) 全景分割輸出結果:每個像素一個類別標籤和一個實例id(stuff物體不給實例id)
  實例分割和語義分割的輸出會有部分重合,進行一個後處理以消除這種重合(該後處理思想和非極大值抑制思想相似):

             (1)消除不同實例之間的重疊:根據它們的置信得分
             (2)消除實例、語義分割見的重疊:有利於實例
             (3)移除任何stuff標籤爲‘other’的,或者在給定的區域閾值之下的
       2)聯合訓練:實例分割訓練會產生三個損失函數即Lc (classification loss),Lb (bounding-box loss),Lm (mask loss) 。實例分割的損失就是此三者之和,前兩個損失函數通過RoIs採樣的數量進行歸一化,後一個損失通過RoIs判定爲前景的數量進行歸一化。語義分割的損失爲Ls,其計算了每個像素的預測和ground-truth標籤間的交叉熵損失,通過已分類的像素點的數量進行歸一化。

       這兩個分支的有不同的尺度和歸一化策略,簡單的 Lc+Lb+Lm+Ls 將降低其中任一項任務的最終性能。這可通過重新加權來校正。最終的損失函數爲:

                                        L=  λi *(Lc+Lb+Lm)+  λs * Ls

     通過精調 λi 和 λs ,可以訓練一個與兩個獨立的任務特定模型相當的模型,但大約是計算的一半。

3.3 分析
     本文使用FPN做語義分割預測的動機是創作一個簡單、單一的baseline網絡,其同時可做語義和實例分割。考慮我們方法和常用的語義分割的流行結構的內存和計算力是有趣的。最常用的產生高分辨率輸出的設計是空洞卷積和symmetric encoder-decoder模型(對稱的編碼-解碼模型),後者具有帶有空洞連接的鏡像解碼器。然而我們的動機是和Mask R-CNN共存,作者認爲FPN比典型的dilation-8網絡更輕量化、比symmetric encoder-decoder快大約2倍、和dilation-16網絡的魯棒性相當(但產生了更高分辨率的輸出)。

4. 實驗和結果
      論文的目標是證明Panoptic FPN可以作爲一個簡單有效的單網絡baseline,用於實例分割、語義分割,以及他們的聯合任務全景分割。因此,我們從測試語義分割方法(這個單任務變體稱爲Semantic FPN)開始分析,這個簡單的模型在COCO和Cityscapes數據集上實現了具有競爭力的語義分割結果。接下來,分析了語義分割分支與Mask R-CNN的集成,以及聯合訓練的效果。最後,我們再次在COCO和Cityscapes數據集上展示了全景分割的結果。

4.1 實驗步驟

     單任務度量:(1)語義分割:mIoU (mean Intersection-over-Union)作爲COCO、Cityscapes兩個數據集的主要度量。同時對於COCO數據集,也記錄了 fIoU(frequency weighted IoU),對於Cityscapes數據集,用 iIoU (instance-level IoU)(2)實例分割:AP(average precision averaged over categories and IoU thresholds)是主要的度量。主要選用的是AP50和 AP75.

      全景分割度量:PQ(panoptic quality)度量Panoptic FPN的表現。PQ同時捕獲識別和分割質量,並以統一的方式處理stuff和thing。同時,使用去分別記錄stuff和thing的表現。

      定性結果如下圖:

å¨è¿éæå¥å¾çæè¿°

4.2 FPN for 語義分割

Cityscapes:在Cityscapes val split上將我們的Semantic FPN分支和其他現存方法進行比較。本文比較了最近表現最好的方法,但沒有與通常使用集成、COCO預訓練、test-time增強等方法進行比較。本文提出的方法與經歷很多次迭代的方法,例如DeepLabV3+比也不遜色。本文的baseline有意避免了可能會帶來改進的正交結構(例:Non-local、SE)的改進。就計算和內存而言,Semantic FPN比典型的空洞模型更輕量,但仍能獲得高分辨率特徵。比較結果圖見上圖a。

COCO:上圖b是我們方法獲得2017 coco-stuff挑戰的結果。當時設計有別於現在,在語義分割分支有些微不同:每個上採樣模塊有2個3*3 卷ReLU、雙線性插值,已得到最終的分辨率。特徵是連接在一起,而不是加起來。我們的參賽作品是用彩色增強[38]訓練的,在測試時平衡了類別分佈,並使用多尺度推理。最後,我們注意到,當時我們使用了一個針對語義分割的培訓計劃,類似於Cityscapes計劃(但學習速度提高了一倍,批處理大小減半)

Ablations:(模型簡化測試)下圖左展示了RestNet-50 Semantic FPN(語義分割分支)使用不同的通道數的效果,發現128 strikes能很好的平衡精確度和效率。下圖右比較了對不同FPN layers進行sum 和 concatenation操作的效果,sum的效果更好。

4.3 多任務訓練

      下圖展示的是:backbone爲ResNet-50-FPN,對於λi 和  λs,固定其中一個,調整另一個。

      上表說明了:增加一個分支,會提高另一個分支的表現效果。

      對於聯合任務,結果如下圖所示:其中c圖:發現組合損失會有更好的效果。

4.4 Panoptic FPN

      在下面的實驗中λi 和 λs 從 {0.5,0.75,1.0}中選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章