作者:張澤平 來源:人工智慧學習圈
PolarMask在CVPR2020提出,是基於單張2D照片進行實例分割的典範。
Arxiv: https://arxiv.org/abs/1909.13226
Official GitHub: https://github.com/xieenze/PolarMask
突出工作使用加粗標明。
突出工作使用加粗標明。
FCOS
PolarMask基於FCOS,全名Fully Convolutional One-Stage Object Detection。實現了在沒有錨點且不被建議的情形下,實現了目標檢測算法。並且提出了Center-Ness的思想,性能表現與目前許多比較主流的基於錨框的目標檢測算法相同,甚至還有提高。
為什麼不使用錨框成為熱點研究方向
錨框首先在Fast R-CNN中提出,後續在許多YOLO等知名目標檢測模型中應用。但錨框有缺點。首先檢測效果和錨框的長寬比、數目有很大關聯,因此人們在努力提高錨框的數量,和最適合的分布方法。其次,錨框的外形是固定的,在處理較大的目標比較困難,比如飛機的兩翼。同時對於小目標也不夠友好。為了提高召回率,大量的錨框增加了計算量和內存佔用。因此,anchor free方法的潛力成為業界最希望提高性能的目標之一。
FCOS首先使用BackOne CNN提取特徵。FCOS對逐一像素都進行回歸,對不規則輸入友好,這一點和FCN很像。而FCN和CNN的區別就在於把CNN最後的連接層換成卷積層,輸出一張已經Label好的照片。(Fig.2)
對比Mask R-CNN的貢獻
MASK-RNN的工作流程是「先檢測,再分割」。在檢測框的基礎上進行像素級的語義分割,同時取得了接近SOTA的性能。PolarMask和它的目的一致,都是instance segmentation.(Fig.3)
但是Mask-RNN主要完成像素級建模(Fig.4),而PolarMask是基於極坐標系建模(Fig.5)。雖然對於凹的物體有性能損失,但PolarMask還是有意義的。一個是Mask RCNN的上限也達不到100mAP,另一個是根據目前的發展,無論是Mask RCNN還是PolarMask,實際性能距離1--mAP的上限還有一定距離。
PolarMask基於極坐標關係建模輪廓,把實例分割問題轉化為實例中心點分類問題和密集距離回歸問題。同時提出了Polar CenterNess和Polar IoU Loss以優化High-Quality正樣本採樣和dense distance regression的損失函數優化。根據作者的思路,採用FCOS主要為了簡單和可靠。FCOS是目前主流的anchor-free檢測器,十分通用而且簡單。
網絡架構
標準的backbone+FPN模型。左側部分包含主幹和要素金字塔,以提取不同級別的要素。中間是分類和極性遮罩回歸的兩個方向,H,W,C指特徵圖的高度、寬度、通道。而k是類別數,n是射線數。以下的實驗性能都基於n=36。
Polar Segmentation建模
說白了,輸入一張原圖。經過網絡可以得到中心點的位置和36根射線的交點的距離。之後連接這些點構成一個輪廓。連通區域就是實例分割的結果。(Fig.7)
在實驗中,文章以重心為基準,映射到特徵圖上。在重心周圍採樣作為正樣本,別的地方作為負樣本。訓練方式和FCOS一致,使用FOCAL LOSS。文章中提出了一種Polar CenterNess用來選擇高質量的正樣本,並且給低質量的正樣本降低權重。這是一個很聰明的做法。這種做法的思路具有通用性。
Polar CenterNess
通過下面的公式,我們很容易看出來正樣本的充分條件是d min > d max.
這就意味著,一個具有良好長度回歸的樣本,是36根射線比較均衡的情況。Polar Centerness的工作實際上就是給比較均衡情況的點比較高的權重,或者對比的看,削弱不那麼均衡的點的權重。
根據作者的實驗結果,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的計算方法如下所示。(Fig.8)其實就是簡化了計算,最快地看到效果。
後記:
註:代碼目前已經發布,四張Tesla V100可以在15個小時內訓練好PolarMask(讓我看看我的GTX 960要多久)
再註:作者給出了很友好的示例。讀完論文筆者半夜兩點還在嘗試部署。應該是未來一個熱點方向。今年CVPR Segmentation好多灌水文章,精華更應該認真看看。
又註:如果你電腦性能不高,可以直接用訓練好的模型:
https://drive.google.com/drive/folders/1EWtLhWSGuJVtMCS8mTvKNxdYYpz7ufjV?usp=sharing
而我的960M看起來不服,甚至躍躍欲試。
再再註:希望AMD早日出一個可以與CUDA媲美的計算庫,天下苦皮衣久矣。(Vega用戶,利益相關
原文連結:https://zhuanlan.zhihu.com/p/147037149