PolarMask:將實例分割統一到FCN,有望在工業界大規模應用

2020-02-25     AI科技評論

作者 | 謝恩澤

編輯 | 賈偉


CVPR 2020 在昨天剛剛公布錄用結果,其中有效投稿 6656 篇,最終錄用 1470 篇,接收率 22.1 % 。CVPR 2020 將於6月14日-6月19日在美國西雅圖舉辦。


雖然在近三年來,CVPR 的論文投稿量都在持續大漲(CVPR 2018有 3300 篇有效投稿、CVPR 2019有 5160 篇有效投稿、CVPR 2020有效投稿達6656),然而在接收率方面,已是「二連降」(CVPR 2018 收錄論文 979 篇、接收率為 29%左右;CVPR 2019 收錄論文 1300 篇,接收率為25%左右;CVPR 2020 收錄論文 1470篇、接收率為 22%左右)。


我今天要介紹的是我們在CVPR 2020上被錄用的文章《PolarMask: Single Shot Instance Segmentation with Polar Representation》,介紹一種single shot的實例分割框架PolarMask。


論文連結:https://arxiv.org/pdf/1909.13226.pdf

開原始碼:https://github.com/xieenze/PolarMask


PolarMask基於FCOS,把實例分割統一到了FCN的框架下。在2019年4月份FCOS掛出來之後,我和沈老師就一直在討論如何進把instance segmentation融合進FCN里。FCOS本質上是一種FCN的dense prediction的檢測框架,可以在性能上不輸anchor based的目標檢測方法,讓行業看到了anchor free方法的潛力。接下來要解決的問題是實例分割。
這個工作我個人覺得最大的貢獻在於,把更複雜的實例分割問題,轉化成在網絡設計和計算量複雜度上和物體檢測一樣複雜的任務,把對實例分割的建模變得簡單和高效。
Mask R-CNN

首先回顧一下之前最經典的實例分割方法,『先檢測再分割』,在這方面做到極致的算法是Mask RCNN。


Mask R-CNN屬於基於兩階段的檢測算法,在檢測框的基礎上進行像素級的語義分割,簡化了實例分割的難度,同時取得了stoa的性能,在'先檢測再分割』 這一範式上做到了極致。

PolarMask

我們的PolarMask提出了一種新的instance segmentation建模方式,通過尋找物體的contour建模,提供了一種新的方法供大家選擇。
兩種實例分割的建模方式:

1、像素級建模 類似於圖b,在檢測框中對每個pixel分類;

2、輪廓建模 類似於圖c和圖d,其中,圖c是基於直角坐標系建模輪廓,圖d是基於極坐標系建模輪廓。

可以看到Mask R-CNN屬於第一種建模方式,而我們提出的PolarMask屬於圖d建模方式。圖c也會work,但是相比圖d缺乏固定角度先驗。換句話說,基於極坐標系的方式已經將固定角度設為先驗,網絡只需回歸固定角度的長度即可,簡化了問題的難度。

PolarMask 基於極坐標系建模輪廓,把實例分割問題轉化為實例中心點分類(instance center classification)問題和密集距離回歸(dense distance regression)問題。

同時,我們還提出了兩個有效的方法,用來優化high-quality正樣本採樣和dense distance regression的損失函數優化,分別是Polar CenterNess和 Polar IoU Loss。

沒有使用任何trick(多尺度訓練,延長訓練時間等),PolarMask 在ResNext 101的配置下 在coco test-dev上取得了32.9的mAP。這是首次,我們證明了更複雜的實例分割問題,可以在網絡設計和計算複雜度上,和anchor free物體檢測一樣簡單。我們希望PolarMask可以成為一個簡單且強有效的single shot instance segmentation 的baseline。
PolarMask最重要的特點是:

(1) anchor free and bbox free,不需要出檢測框

(2) fully convolutional network, 相比FCOS把4根射線散發到36根射線,將instance segmentation和object detection用同一種建模方式來表達。
我們選取FCOS嵌入我們的方法,主要是為了simple。FCOS是目前state-of-the-art的anchor-free檢測器,並且十分simple。我們在FCOS的基礎上,幾乎不加任何計算量,就可以建模實例分割問題,並取得competitive的性能,證明了實例分割可以簡化成和目標檢測相同複雜的問題。

此外,FCOS可以看成PolarMask的特殊形式,而PolarMask可以看作FCOS的通用形式,因為bbox本質上是最簡單的Mask,只有0,90,180,270四個角度回歸長度。我們首次將instance segmentation和object detection用同一種建模方式來表達。

網絡結構


整個網絡和FCOS一樣簡單,首先是標準的backbone + fpn模型,其次是head部分,我們把fcos的bbox分支替換為mask分支,僅僅是把channel=4替換為channel=n, 這裡n=36,相當於36根射線的長度。同時我們提出了一種新的Polar Centerness 用來替換FCOS的bbox centerness。

可以看到,在網絡複雜度上,PolarMask和FCOS並無明顯差別。

Polar Segmentation建模


首先,輸入一張原圖,經過網絡可以得到中心點的位置和n(n=36 is best in our setting)根射線的距離,其次,根據角度和長度計算出輪廓上的這些點的坐標,從0°開始連接這些點,最後把聯通區域內的區域當做實例分割的結果。

在實驗中,我們以重心為基準,assign到feature map上,會在重心周圍採樣,作為正樣本,別的地方當做負樣本,訓練方式和FCOS保持一致,採用Focal Loss, 在此,我們提出Polar CenterNess,用來選擇出高質量的正樣本,給低質量的正樣本降低權重。

Polar CenterNess

如何在Polar Coordinate下定義高質量的正樣本?我們通過如下公式定義


其中 d1 d2....dn指的是36根射線的長度,最好的正樣本必須具備dmin ——> dmax.

用一張圖舉例:


以看到中間的圖,會出現長度回歸差別很大的問題,而右邊的圖中心點位置就較為合適,到所有輪廓的長度回歸就較為接近,36根射線的距離會比較均衡。Polar Centerness 可以給右邊圖的點較高的centerness分數,給中間圖的點降低centerness分數,這樣在infernece的時候右邊圖的點分數較高。
根據消融實驗,Polar Centerness可以有效提高1.4的性能,同時不增加網絡複雜度。結果如下圖所展示


Polar IoU Loss

在PolarMask中,需要回歸k(k=36)根射線的距離,這相比目標檢測更為複雜,如何監督regression branch是一個問題。我們提出Polar IoU Loss近似計算出predict mask和gt mask的iou,通過Iou Loss 更好的優化mask的回歸。通過實驗證明,Polar IoU Loss相比Smooth L1loss可以明顯提高2.6個點,同時Smooth L1loss還面臨和其他loss不均衡的問題,需要精心調整權重,這是十分低效的,Polar IoU loss不需要調整權重就可以使mask分支快速且穩定收斂。

那麼,Polar IoU Loss如何計算呢?如下圖所展示



可以看到 兩個mask的Iou可以簡化為在dθ下的三角形面積iou問題並對無數個三角形求和,最終可以推倒到如下形式:


其實最終的表達形式十分簡單,但是相比smooth l1的確可以不用調參並裸漲2.6個點。說明loss func的設計對於深度神經網絡呢意義重大。結果如下所展示


我們在論文中還做了如下消融實驗:射線數量的選擇,加不加bbox branch, backbone以及尺寸和速度的trade off. 細節在論文中都有,不一一展開。

上限分析

看到這裡,很多人心裡都會有一個疑問,射線這種建模方式,對於凹的物體會有性能損失,上限達不到100mAP,PolarMask怎麼處理這個問題?

答案是這樣,PolarMask相比Mask R-CNN這種pixel建模的方法,對於形狀特別奇怪的mask的確建模會失敗,但是這並不代表polarmask毫無意義。原因有兩個,(1)Mask R-CNN的上限也到不了100 mAP 因為有下採樣這類操作使得信息損失。(2)不管Mask R-CNN還是PolarMask,他們的實際性能距離100mAP的上限都特別遠。
所以我們目前應該關注如何讓實際網絡性能去更好地趨近於上限。
定量分析分析射線建模的上限:


如圖所示,當採用mass center做instance中心時,當射線數量不斷提高,射線的gt和真實的gt的平均iou高達90%以上,這證明了對於射線建模的性能上限的憂慮還遠遠不需要擔心。現階段需要操心的問題是如何不斷提高基於射線建模的網絡性能。

實驗

最終,配上一圖一表展示一下相比sota的結果



可以看到, 沒用採用任何trick的情況下,PolarMask在resnext101-fpn的情況下,取得了32.9的配置,雖然不是stoa,但是也比較有競爭力。我們目前並沒有採用很多常用的能漲點的trick,比如 ms train和longer training epochs。相比之下,別的one stage方法都不約而同的採用了mstrain和longer training epoches。我們會進一步改進,爭取再提高性能。

後記

我們會儘快完善並放出帶多尺度訓練和增長訓練時間的代碼和模型,以提供給大家並和上述模型公平比較,做instance segmentation非常費卡和時間,希望大家理解。

一些調參的碎碎念:

這個工作在今年4月FCOS出來的同時,我和沈春華老師就在討論如何進行FCOS進行single shot anchor free實例分割,以及在CVPR開會的時候,和文海,彥偉, 宋林等小夥伴就論證過contour regression的可行性,因為大家可以看出,anchor free 物體檢測已經是大勢所趨,下一個領域必然是anchor free實例分割,預測一下,再下一個領域是全景分割。在和沈老師這麼多月的討論中以及一次又一次實驗的失敗中,polarmask逐漸成型。最開始mask regression無數次無法收斂,寫mask iou loss又複雜效果還不怎麼好,直到某一天想出了polar iou loss。發現性能很好,不用調參,一把出結果。感覺平時做研究還是需要多思考,而不是盲目的做實驗。同時,polar centerness也是我在旅遊的過程中想到的,然後立馬找了個咖啡廳寫代碼調試,裸漲1.4個點。這兩個方法在不增加計算量的情況下,充分發揮了polarmask的性能,看起來其實很簡單,但是實際上是背後很多次思考和化簡的結果。

總得來說,我最喜歡這篇文章就兩點,

1、足夠簡單,不加任何trick, 也沒有任何複雜的操作,比如deformable conv和roi align操作,有希望在工業界大規模應用;

2、找到了一種表達方式,把bbox detection和mask segmentation統一了起來,和FCOS是一種傳承的工作,FCOS理論上可以看成PolarMask的特殊版,而PolarMask是FCOS的泛化版,因為bbox本質上是最簡單的Mask。PolarMask本質上可以看成一個目標檢測和實例分割統一的框架。只需要簡單修改就可以退化到FCOS。


本文首發於知乎:

https://zhuanlan.zhihu.com/p/84890413




文章來源: https://twgreatdaily.com/zh-cn/KOXzf3AB3uTiws8KCGqd.html