1. 程式人生 > >論文:Learning to Segment everything閱讀筆記

論文:Learning to Segment everything閱讀筆記

Learning to Segment everything

目錄

Learning to Segment everything

1 概述

2 分割一切

3 實驗

4 大規模例項分割


1 概述

例項分割(instance segmentation)是對每一個檢測到的目標產生一個前景分割掩膜。目前,例項分割所能處理的類別只有100種左右,這只是實際視覺世界中的冰山一角。其主要原因是,先進的例項分割演算法需要在強監督的條件下進行,而收集新的類別需要花費很多的功夫。相反地,對邊框進行標註卻並不需要花費很多的功夫。那麼問題來了,我們是否可以不進行完整的例項分割標註,來進行最先進例項分割系統的訓練呢?在本篇論文中,我們介紹了一種新的半監督例項分割任務,並且採用了一種新奇的遷移學習方法來解決這個問題。

我們半監督例項分割的描述如下:1)給出一個子資料集,其中即包含具有例項掩膜標註的樣本,又包含僅有邊框標註的樣本。2)例項分割演算法可以利用這些資料來分割任何類別的目標。由於訓練集資料中既包含強標註的Masks,又包含弱標註的boxes,所以我們把這個任務稱為半監督。

Visual Genome資料集中包含了很多類別的邊框標記,COCO資料集中包含了很少量類別的掩膜標記。結合這兩者,使用半監督vs弱監督進行訓練,我們就可以構建一個更大規模的例項分割模型。這使得我們可以改造現有的最先進例項分割方法,來對成千上萬種類別進行分割,而這種能力對現實世界中的應用來說是非常重要的。

我們基於Mask R-CNN提出了一種新奇的遷移學習來實現半監督例項分割。而Mask R-CNN把例項分割分為目標檢測和掩膜預測兩個子任務來處理,所以它剛好適合於實現我們的任務。這些子任務通過聯合訓練的heads網路來處理。這個想法背後的含義為:邊框head的引數在經過訓練之後,會對嵌入目標類別進行編碼,然後對這些資訊進行遷移,用於掩膜head的半監督學習。

我們通過設計一個權重轉移函式來實現這個想法,函式的輸入為邊框檢測引數,輸出為某個種類的例項分割引數。這個權重函式可以使用掩膜標註進行端到端的訓練。在推理的時候,權重函式預測每一個種類的例項分割引數,使得模型可以分割所有的目標類別,就算這些掩膜類別沒有出現在訓練過程中。

                                                                                圖1-1 分割結果示意圖

我們的方法分為兩個過程:1)我們使用COCO資料集來訓練半監督例項分割模型。特別地,我們把整個COCO資料集分為掩膜標記子資料集和與之互補的邊框標記資料集。由於COCO資料集僅包含80種分割好的目標類別,所以定量的評估是準確可信的。實驗結果表明,我們對從來沒有在Mask訓練集中出現過的類別的分割Mask AP可以在原有基礎上面提升40%。2)我們在VG(Visual Genome)資料集的3000個類別上面訓練一個大規模的例項分割模型。VG資料集包含了大量物體類別的邊框標註,但是大量的分割類別是存在交叉的,並且標註也並不詳細,這使得精確率和召回率變得很難測量。但是,我們使用VG資料集為大規模的例項分割模型提供了定性的輸出。實現結果如圖1-1所示。

2 分割一切

假設資料集C包含所有訓練樣本的掩膜標註,在此上進行例項分割模型的訓練。假設C=A並B,式中A含有掩膜標註,B只有邊框標註。我們把同時在強標記和弱標記樣本上面進行訓練成為並行訓練。由於掩膜資訊可以很容易地轉化為邊框資訊,所以我們假設A中同樣含有邊框的標註。我們提出了分割方法MASK R-CNNX,其把邊框檢測所的類別資訊遷移到了例項掩膜預測裡面。

我們的方法是基於Mask R-CNN的,邊框分支和掩膜分支的最後一層都包含了用於邊框分類和掩膜預測的特定種類的引數。我們通過設計一個權重引數轉移函式來從邊框引數中學得掩膜引數,而不是把這兩個分支分開單獨訓練,這個函式是和整個模型聯合訓練的。

                                                             圖2-1 半監督方法下Mask R-CNN的細節描述

從圖2-1可以看出來,我們使用標準的邊框檢測Loss函式在C=A並B的所有類別上訓練了邊框head網路,但是使用掩膜預測Loss函式只在A的類別上訓練掩膜head網路和權重引數轉移函式。給出了這些Loss函式之後就得到了兩個截然不同的訓練步驟,分別為階段性訓練和端到端訓練。

在階段性訓練分為兩個階段,分別為檢測訓練階段和分割訓練階段。首先使用C=A並B中的邊框標註訓練一個Faster R-CNN,然後固定卷積特徵和邊框來訓練掩膜head網路。這樣的話每一個類別c的權重引數會被視為固定的內嵌向量,在第二階段的訓練過程中不會更新。這種方法的優勢在於我們只需要訓練一次邊框檢測模型,然後就可以快速的進行權重轉移函式的設計了。

我們把帶有一個FCN掩膜預測head網路的Mask R-CNN作為基準網路。Mask R-CNN的掩膜head分為兩種型別,分別為:1)FCN head,通過全卷積網路預測M*M的掩膜。2)MLP head,由多層感知機構成的全連線層,這和DeepMask非常的類似。在Mask R-CNN中,FCN head可以獲得更高的AP,但是這兩種方法可能是互補的。直觀的理解就是,MLP可以更好地捕獲目標的主旨,而FCN可以更好地捕獲細節資訊,比如說邊沿資訊。基於此,我們把基準的未知類FCN和轉移函式與一個MLP掩膜預測器進行融合,進過實驗可以得到,這個延伸可以改善基準網路和權重轉移函式。

當融合K個類別的未知類和特定類的掩膜預測後,這兩個得分會新增到最終的K*M*M維輸出當中。最後K*M*M維掩膜分數會通過一個sigmoid單元輸出為每一個類的掩膜可能性,並且尺寸變為實際邊框的大小作為最終邊框的例項掩膜。在訓練過程當中,通過二值交叉熵Loss來產生K*M*M維掩膜可能性。

3 實驗

我們在COCO資料集上面評估了我們的方法,雖然只包含了80個類別,但是卻有詳盡的掩膜標註。我們使用AP(average precision)這個指標來嚴格評估模型。我們對這80種類別進行了兩種不同型別的分割:1)把COCO中的80個類別分為20種包含於PASCAL VOC和60種沒有包含於PASCAL VOC的,我們再把這個也稱為voc和nonvoc。2)以隨機的方式分配進行多次實驗。

輸出Mask的解析度為28*28。我們分別用ResNet-50-FPN和ResNet-101-FPN作為Mask R-CNN的backbone,ResNet-50和ResNet-101模型是在ImageNet-1k影象分類資料集上面進行預訓練的。超引數的設定為:minibatch=16*images*512RoIs-per-images,iterations=80K,weight decay=1e-4,momentum=0.9,initial learning rate=0.02,learning rate(60K-80K)=0.002,IoU threshold=0.5-0.95。

 

                                                                          圖3-1 Mask R-CNN的實驗設定

正如上文所述,我們以隨機的方式分配COCO資料集上的80個種類為A/B進行多次實驗,其實驗結果如圖3-2所示。

                                                                         圖3-2 隨機分配A/B比例實驗結果

4 大規模例項分割

我們訓練了一個大規模的MASK R-CNN,邊框的標註來自於Visual Genome資料集,例項掩膜的標註來自於COCO資料集。Visual Genome資料集包含了108077張圖片,超過7000種物體的邊框標註,我們選出了3000種最常見的種類作為我們的C來進行例項分割,裡面也包含了COCO資料集中的80種類別。把Visual Genome資料集中已經包含於COCO資料集的80種類別作為A,其餘的2920種類別作為B,B中只包含邊框的標記。

我們採用分階段的策略來進行訓練。首先使用Visual Genome中的3000種邊框標註訓練Faster R-CNN,使用ResNet-101-FPN作為backbone。在第二階段,我們訓練引數轉移網路和MLP掩膜預測,配置為cls+box,2 layer,LeakeyReLU。掩膜head網路的預測使用從COCO資料集中分出來的80個種類。圖4-1顯示出來了指標結果。

  

                                                                    圖4-1 端到端訓練的指標結果

    從最後的實驗結果可以看出來:1)可以學習去檢測一些抽象的概念,比如陰影和小道。2)除了來自於VG資料集的3000類別外,一些概念更加的事物化,比如當樹和森林很像的時候就不會進行分割。3)對物體的整體和部分的分割操作更加合理。效果如圖4-2所示。

                                                                圖4-2 在VG資料集上的分割效果