PointINS: Point-based Instance Segmentation論文解讀

前言

這應該是一篇正在投稿ECCV2020的實例分割論文。就我的眼光來看,應該是可以中的。從point-based 特徵出發,解決實例分割問題。其中的一些idea,和另一篇基於點的實例分割:AdaptIS有異曲同工之妙。關於AdaptIS,可以去看我的另一篇博客
另外,代碼將會開源

摘要

基於點特徵的idea已經開始在目標檢測流行起來了,但是卻很難應用在實例分割上。這有兩方面的原因。

  1. 基於點特徵的特徵表示能力有限
  2. 容易出現misalignment。目標檢測藉助anchor可以解決一個特徵單元屬於多個目標重疊區域內的問題。但分割問題怎麼辦

PointINS提出了一個instance-aware convolution模塊解決上面兩個問題。

Method

在這裏插入圖片描述
PointINS的結構不復雜,作者明確提出,這新設計的模塊不依賴於Anchor-based或者anchor-free,也就是說這個模塊可以插入任何檢測模型中。其中大致思路是:這個模塊有兩個輸入,instance-aware weight 和 instance-agnostic feature。前者用於過濾掉其他目標在feature上的特徵值,後者提供用於預測mask的特徵圖。前者從box預測中變換得到。後者通過幾個卷積層得到。同時需要注意,PointINS沒有Mask分支,這兩個輸出都來自於Box regression 分支,僅僅是因爲作者認爲mask也是描述目標的位置信息。這一點區別於其他IS的網絡。
在這裏插入圖片描述

在這裏插入圖片描述

Instance-agnostic Feature Generation

box reg分支的到的特徵圖是HxWx256,然後先看下面那條路。

  • channel up-scaling:單純是一個3x3的卷積核,同時升通道,升至9x256
  • depth-to-space: 目測是一個全連接層加reshape的操作。作者論文只說了reshape操作,並非直接插值。

Instance-aware Convolution

再看上面的那一條路,A是anchor數目,如果是anchor-free的框架,A爲1.
經過Transforming操作,得到IMI_M,然後經過FC層得到WIW_I,圓圈裏面的叉號是孿生網絡常常用到的cross correlation操作。關於這個操作可以去看我另一篇關於SiamMask的論文解讀。
作者提出 Instance-aware Convolution的意圖是:

  1. chanel explosion: 如果非要基於點特徵 來實現對目標的分割,該怎麼做? 可以用FC層,預測一個28x28的向量,然後reshape爲分辨率爲28*28的特徵圖,作爲預測結果。可是這樣導致了通道數太大了。
  2. 另一個問題是misalignment。如果一個點特徵編碼了多個目標,由這個點特徵預測的mask,該屬於哪個目標?

接下來看看Transforming操作。
在這裏插入圖片描述
IMI_M是由IA,IPI_A, I_P組成的。而IAI_A的編碼是由anchor信息得到的,s是stride。如果該模塊用於anchor-free的檢測網絡,則IMI_M僅僅由IPI_P組成。h和w是anchor的高和寬。
在這裏插入圖片描述
IPI_P是6個值。p只的是prediction。就是預測結果和anchor之間的offset。rxcr_x^c是anchor的中心和預測框中心在x軸的偏移值。最後經過FC層得到WIW_I
然後將WIW_I作爲卷積核,得到用於預測mask的特徵FIF_I
在這裏插入圖片描述

如何訓練

大家一定好奇如何訓練吧。畢竟一個目標身上的點這麼多,該選擇哪些位置的點特徵作爲訓練樣本呢。
既然是基於點特徵的。那麼就要像訓練anchor-based 檢測網絡類似,目標檢測需要選出正負anchor,那麼PointINS就要選擇正負點特徵了。而事實上,這些點特徵只是爲了訓練mask預測的,所以我們不需要負樣本。如何定義positive point feature? 如果某個位置的點向量,對應的anchor和預測結果的IOU都大於0.5,那麼這個位置的點特徵就是正樣本,用於訓練mask。訓練階段,每張圖隨機選擇滿足條件的125個這樣的點。而實際上,滿足這樣的點,在所有的FPN層上,加起來有2W個。
所以,個人認爲,PointINS的精度依賴於檢測網絡,訓練應該是分步訓練的,先訓練檢測,後訓練這個模塊

Experiments

在這裏插入圖片描述
在這裏插入圖片描述

和AdaptIS的區別和聯繫

作爲都是point-based的IS網絡,他們的聯繫有一下幾點:

  • dynamic weight:PointINS使用instance-aware weight 加權 feature map,進而得到mask;ApdatIS使用AdaIN獲得每個目標的特徵向量,憑藉該向量重新改變特徵圖的均值和方差,來獲得mask
  • 都是一種範式:backbone輸出整張圖的特徵圖,尋找某個目標的特徵向量,過濾掉特徵圖其他目標的特徵。PointINS使用的過濾方法是加權,且特徵向量來自於box預測。AdaptIS使用的adaIN。

區別:

  • AdaptIS使用額外輸出,需要用戶提供一個點,指明哪個目標需要分割; PointINS不需要額外輸出,依賴於目標檢測,可以獲知有哪些目標需要分割。有幾個box預測出來了,根據box獲得instance-aware weight即可獲得目標的mask
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章