論文筆記-PolarMask: Single Shot Instance Segmentation with Polar Representation


paper: PolarMask: Single Shot Instance Segmentation with Polar Representation

code: https://github.com/xieenze/PolarMask

作者知乎解答

PolarMask是CVPR2020的oral,相當於是FCOS的泛化版,關於FCOS的解讀參考FCOS筆記

Abstract

  1. PolarMask算是一個新的實例分割的框架,用極坐標的方式建模實例分割任務,將實例分割任務建模為並行的實例中心點分類、密集距離預測的問題。該框架是單階段、anchor-free的方式,非常簡潔有效。
  2. 本篇論文的幾個貢獻點如下:
    • 提出一個相當於全新的實例分割的框架,如上所述
    • 為優化實例分割的效果,提出Polar CenterNess和Polar IoU loss兩個貢獻點。前者是為了獲取更高質量的object類別信息,后者是為了優化網絡的訓練,獲得更好的模型效果(論文中有對比Polar IoU loss和smooth l1 loss之間的性能差別)

Details

  1. 整體流程概述

    • 如上圖所示,PolarMask由backbone和head兩個模塊組成,前者是經典網絡backbone(ResNeXt等)+FPN的結構,后者是類似於FPN的網絡結果預測的head,包括兩部分,一個是分類的branch,一個是回歸的branch(回歸mask),其中,分類的branch由類別分類和polar centerness兩個分支組成(polar centerness相當於FCOS中centerness的變形)
    • 經過上述兩部分,網絡預測出目標的mask,建模方式是:以feature map上的一個點為極坐標中心點,以固定角度增幅產生N條rays(論文角度增量為10度,則N等於36),如此可以計算出每個目標邊緣距離中心點的ray線的距離,然后根據這個距離去擬合最優的mask(polar centerness和polar IoU loss都是基於這個距離做的)。
      • 因此,PolarMask其實就是做兩方面工作,一個是類別的分類,一個是極坐標下上述距離的回歸
    • 最終的網絡預測,是在FPN結構的每一層都保留top 1k個樣本(按照分類置信度得分和polar centerness的乘積過濾)。這時,相當於知道了樣本點\((x_c, y_c)\)以及N個射線的距離\({d_1, d_2, ..., d_n}\),則該物體的邊緣的點的坐標為:\(x_i = cos{\theta_i} \times d_i + x_c, y_i = sin{\theta_i} \times d_i + y_c\),然后將這些邊緣點從0度開始逐個連接起來,構成該instance的輪廓,如下圖
      • 細節1,如果一個射線與多個輪廓相交,即有物體的邊緣點,則選擇距離最長的那個
      • 細節2,如果一個射線以mask外的center作為起點,同時和該instance沒有在特定角度沒有交點,則將其回歸的目標設置為最小值(此處個人理解是將回歸的距離設置為最小值)
  2. 如何篩選並區分正負樣本?

    • 對一個點\((x, y)\),如果其落在物體的重心周圍,則認為是正樣本,否則是負樣本。
      • 重心:作者對比過選用bbox center還是mass-center,驗證效果是后者更好,見下圖。但是對於一些其他特殊形狀的物體,可能兩種方式都不合適,不過這里沒有進一步展開了
        • 這里如何找到mass-center,還沒想明白(好像是直接根據標定的gt值計算的),后續補上
      • 重心周圍:這個范圍的定義,作者是以mass-center上下左右的1.5倍區域作為該范圍。相當於,每個樣本mass-center周圍有9-16個像素的樣本會作為正樣本,增大了正樣本采樣量,避免正負樣本不均衡
    • PolarMask訓練時,classification分支的loss還是focal loss
  3. Polar CenterNess

    • 前面已經闡述了如何進行正負樣本的定義。同FCOS一樣,PolarMask也希望能夠通過centerness這個特性能夠對一些low-quality的mask加大懲罰,獲取high-quality的mask。見下圖:
    • 具體做法是,給定中心點的N條射線的距離,用最短距離除以最長距離,以壓縮該點到物體的重心處,公式為
    • 同FCOS一樣,物體最終的分類得分是分類置信度得分乘以centerness值,然后和閾值0.05比較
  4. Polar IoU loss

    • 對於不同形狀的目標,直接計算IoU並不容易,PolarMask這里提出了一種極坐標下的IoU的計算方式(這是和整個論文的思路相關的,因為PolarMask本身就是想在極坐標下實現目標的分割,所以Polar IoU就像是其自然產物一樣),計算方式如下圖:
      原圖
      個人標注
      • 即,計算個人標注的圖上紅色區域的面積和綠色區域面積的比值
      • 直觀的理解,求紅色、綠色區域的面積可以通過積分的方式,如圖中所示,不過在極坐標系下,可以將其轉為計算距離比值的形式,即,進一步的簡化為,最終,結合二分類的交叉熵,組成Polar IoU Loss,如下:
  5. 效果

    • 結果上看雖然mAP有些情況下並沒有遠高於一些SOTA方法,但是幀率比較可觀,如下:
    • 更多的結果這里不再貼出來了

寫在后面

  1. PolarMask可以看作是FCOS的泛化,bbox相當於4個點的contours,整體框架上看,PolarMask是相當於把FCOS的centerness改為Polar Centerness,然后對應的引入Polar IoU Loss
  2. 因為ray是根據一定角度篩選的,所以,理論上應該是ray數量越多,分得越細,邊緣處理的越好。但是,假如物體的形狀比較奇怪,那么這種方式對邊緣的處理應該也會有缺陷,這一點作者在知乎也有闡述。
  3. 整體來看,PolarMask的處理方式很簡單有效,應該會衍生出一些新的工作。


免責聲明!

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



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