論文地址:https://arxiv.org/abs/1704.05548
項目地址:http://www.cs.toronto.edu/polyrnn
概述
Polygon-RNN是一篇收錄於CVPR2017的論文,文中作者基於CNN+RNN提出了一種半自動目標實例標注的算法。當前大多方法都將目標分割視為像素級分類問題,而本文則將其看做多邊形預測任務,以裁剪的目標圖像作為輸入,預測目標的多邊形輪廓的頂點(假定使用者已提供目標的bounding box)。如下圖所示:

其半自動過程體現在,人工標注可以在任何時間干預系統的自動標注過程,並在需要修正的時間進行頂點修正。
由於需要生成閉合的多邊形,而閉合多邊形呈環狀,作者假定頂點序列中任意一點都可以作為起點,並按照順時針方向生成頂點。
模型結構
Polygon-RNN通過CNN(基於修正的VGG-16)進行圖像的特征提取,然后通過RNN預測多邊形的頂點。對CNN+RNN模型進行端到端的訓練,有助於CNN對目標邊界進行微調、RNN遵循目標邊界學習目標的形狀。RNN的輸入包括:CNN提取到的圖像塊的特征、前兩個時間序列下生成的頂點(比如需要生成頂點Vi,則需要輸入Vi-1和Vi-2)以及起始頂點。前兩個頂點用於遵循特定的方向,初始頂點用於判斷多邊形是否閉合。模型如Figure 2所示。

CNN
使用VGG-16的基本框架,移除了全連接層及最后的max-pooling層,增加了一系列卷積層和max-pooling層、upscaling層來調整VGG各層(pool2、pool3、conv4_3和conv5_3)輸出的feature map大小,然后將這幾層的feature map進行拼接(文中稱為skip-connections),最后通過卷積層和ReLU層傳遞給RNN。對不同層的feature map拼接能夠獲得低層的邊角信息以及高層的語義信息。
RNN
作者設計了一個兩層的卷積LSTM(ConvLSTM,卷積核3*3,16 channels),有效地減少了參數。單層的計算如下:

每一步預測一個頂點,產生D*D+1的grid,頂點采用one-hot編碼,D*D即頂點可能的位置,最后一維表示頂點序列是否結束。在每一步上取概率最大的頂點作為該步的預測結果,因此用戶可以在任何時間對標注過程進行干預和修正。在量化網格中使用zero error進行多邊形簡化來消除位於一條線上的頂點,並刪除由於量化過程而落在同一網格的多個頂點。
此外,對於第一個頂點的預測,顯然不能使用前文的方法。為了預測第一個頂點,文中使用之前的CNN,並添加了兩層,每層維度是D*D,一個分支用於預測目標的邊界,另一個分支以邊界預測層的輸出和圖像的特征為輸入,進行多邊形的頂點預測。
文中使用多邊形的邊作為目標邊界的gt,使用多邊形的頂點作為頂點層的gt;評估標准采用IOU。
實驗結果
下表是在Cityscapes數據集上的自動標注結果:
IOU優於其他方法。

一些自動標注、半自動標注和Ground truth的對比結果:

總結
Polygon-RNN在自動標注上和其他像素標注方法DeepMask、SharpMask等的精度不相上下,在人工干預的情況下則會明顯優於后兩者,標注速度也大大提升。但是由於模型的分辨率較小,進行大尺寸目標標注時誤差會急劇增大。
