導讀
只使用1349張影象訓練Mask-RCNN,有程式碼。
程式碼:https://github.com/kayoyin/tiny-inst-segmentation
介紹計算機視覺的進步帶來了許多有前途的應用,如自動駕駛汽車或醫療診斷。在這些任務中,我們依靠機器的能力來識別物體。
我們經常看到的與目標識別相關的任務有4個:分類和定位、目標檢測、語義分割和例項分割。
在分類和定位中,我們感興趣的是為影象中目標的分配類標籤,並在目標周圍繪製一個包圍框。在這個任務中,要檢測的目標數量是固定的。
物體檢測不同於分類和定位,因為這裡我們沒有預先假設影象中物體的數量。我們從一組固定的目標類別開始,我們的目標是分配類標籤,並在每次這些類別中的一個目標出現在影象中時繪製邊界框。
在語義分割中,我們為每個影象畫素分配一個類標籤:所有屬於草的畫素被標記為“grass”,屬於羊的畫素被標記為“sheep”。值得注意的是,例如,這個任務不會對兩隻羊產生區別。
我們的任務是例項分割,它建立在目標檢測和語義分割之上。在目標檢測中,我們的目標是在預定義的類別中標記和定位目標的所有例項。但是,我們沒有為檢測到的目標生成邊界框,而是進一步識別哪些畫素屬於該目標,就像語義分割一樣。與語義分割不同的是,例項分割為每個目標例項繪製一個單獨的掩碼,而語義分割將為同一類的所有例項使用相同的掩碼。
在本文中,我們將在一個很小的Pascal VOC資料集上訓練一個例項分割模型,其中只有1349張影象用於訓練,100張影象用於測試。這裡的主要挑戰是在不使用外部資料的情況下防止模型過擬合。
資料處理標註採用COCO格式,因此我們可以使用pycocotools中的函式來檢索類標籤和掩碼。在這個資料集中,共有20個類別。
下面是一些訓練影象和相關mask的視覺化顯示。mask的不同陰影表示同一目標類別的多個例項的不同掩碼。
影象的大小和長寬比各不相同,因此在將影象輸入模型之前,我們調整每個影象的尺寸500x500。當影象尺寸小於500時,我們對影象進行最佳化,使最大邊的長度為500,並新增必要的零以獲得正方形影象。
為了使模型能夠很好地泛化,特別是在這樣一個有限的資料集上,資料增強是克服過擬合的關鍵。對於每一個影象,以0.5的機率水平翻轉,以0.9到1倍的尺度進行隨機剪裁,以0.5的機率進行高斯模糊,標準差為隨機,對比度隨機調整尺度為0.75和1.5之間,亮度隨機調整尺度在0.8和1.2之間,以及一系列隨機仿射變換如縮放、平移、旋轉,剪下。
Mask-RCNN我們使用matterport實現的Mask-RCNN進行訓練。雖然結果可能會很好看,但我們不會用MS COCO的預訓練權重來展示我們如何只用1349張訓練影象就能得到好的結果。
Mask-RCNN是在2017年Mask-RCNN論文中提出的,是同一作者對Faster-RCNN的擴充套件。Faster-RCNN被廣泛應用於目標檢測,模型在被檢測物體周圍生成包圍盒。Mask-RCNN進一步生成了目標的mask 。
我將在下面簡要介紹模型體系結構。
首先,我們使用一個主幹模型從輸入影象中提取相關的特徵。在這裡,我們使用ResNet101架構作為骨幹。影象由張量(500,500,3)轉換為特徵圖(32,32,2048)。
然後將之前獲得的特徵輸入到一個區域建議網路(RPN)中。RPN掃描feature map的區域,稱為anchors,並嘗試確定包含目標的區域。這些anchor的尺寸和縱橫比各不相同。RPN為每個anchor分配一個類別:前景(正樣本anchor)或背景(負樣本anchor)。中性anchor是指不影響訓練的anchor。
正樣本anchors(左),中性anchors(中),負樣本anchors(右)
建議層然後挑選最有可能包含目標的anchor,並最佳化anchor框以更接近目標。當太多anchor點重疊時,只保留前景分數最高的那個(非最大抑制)。這樣,我們就得到了感興趣的區域 (ROI)。
對於每個由ROI分類器選中的目標區域,模型生成28x28的mask。在訓練過程中,將 ground truth mask縮小,用預測的mask計算損失,在推理過程中,將生成的mask放大到ROI的邊界框大小。
遷移學習特別是在資料有限的情況下,更快更好地訓練模型的關鍵是遷移學習。Imagenet資料集是一個巨大的自然影象語料庫,類似於我們的影象。因此,我們可以將Resnet101骨幹模型的權值初始化為在Imagenet上預先訓練的權值。這將提高我們得到的特徵圖的準確性,從而提高整個模型。
為了微調在Imagenet上預訓練的模型,我們首先只訓練model heads。然後我們在剩下的epochs中訓練從ResNet level 4和以上的層。這個訓練方案也有助於最小化過擬合。我們可以不去微調第一層,因為我們可以重用模型從自然影象中提取特徵的權重。
結果 & 檢測pipeline視覺化我們的測試集上獲得的mAP為0. 53650。下面是隨機選擇測試影象的模型輸出的一些視覺化結果:
我們還可以看到演算法不同步驟的輸出。下面,我們有在邊界框細化之前的top anchors的得分。
接下來,我們有了細化的邊界框和非最大抑制後的輸出。這些建議然後被輸入分類網路。注意,在這裡,我們有一些框框住了一些目標,比如標誌,這些目標不屬於我們定義的目標類別。
在建議區域上執行分類網路,得到正樣本的檢測,生成類機率和邊界框迴歸。
在得到邊界框並對其進行細化後,例項分割模型為每個檢測到的目標生成mask。mask是soft masks(具有浮點畫素值),在訓練時大小為28x28。
最後,預測的mask被調整為邊界框的尺寸,我們可以將它們覆蓋在原始影象上以視覺化最終的輸出。
—END—
英文原文:https://towardsdatascience.com/overcome-overfitting-during-instance-segmentation-with-mask-rcnn-32db91f400bc