ECCV18 | 如何正確使用樣本擴充改進目標檢測性能(附Github地址)

衆所周知,在計算機視覺識別任務中,對訓練樣本進行增廣是非常重要的,可以減少過擬合、改進模型泛化性能。

在大多數視覺任務中,對圖像進行顏色改變或是增加隨機噪聲等這些通用數據增廣操作,都會改進模型預測能力,但如果能利用特定任務的先驗知識則往往會獲得更大的性能改進。比如在目標檢測的任務中,將目標的圖像隨機複製粘貼到其他背景圖像中,形成人造的含有目標的樣本。

來自ECCV2018的論文《Modeling Visual Context is Key to Augmenting Object Detection Datasets》研究了在目標檢測任務中,使用目標類實例分割標註的數據進行數據增廣的上下文建模,取得了顯著的性能改進。
作者信息

算法思想
將擁有像素級標註的對象實例,與場景圖像合成,作爲目標檢測的訓練圖像是一種顯而易見的樣本擴充,但問題並不是這麼簡單,該文作者發現如果忽視了場景圖像上下文本身出現該對象的可能性,隨機將對象實例與圖像合成的話,有時候甚至會使檢測性能下降。
如下圖所示:

上圖中將Instances列中的圖像放入Images列中。右上角是正常的圖像合成,使用上下文引導(context guidance)的方法,這些物體在現實世界中經常是自然同時出現的。右下角是錯誤合成的圖像,狗的頭部不能以大的尺度出現在鐵軌上,啤酒瓶不該和飛機一起出現在天空中。
也許你已經想到了這篇文章的想法,訓練一個深度學習網絡,預測Images中某一幅圖像是否適合與某一類實例instance相合成。
請看下圖:

首先在場景圖像中生成200個候選框,然後以每個候選框爲中心裁剪出包圍它的周圍鄰域圖像,將候選框內像素置0,將此裁剪出的圖像送入Context CNN,分類其與那一類目標合成最自然。最後將目標實例適應大小(rescale)並與上述圖像融合(blend),作爲擴充的訓練樣本。
下面是一些常用的圖像blend合成方法示例:

 

如何爲Context CNN分類器構建訓練樣本呢?
該文作者的做法非常簡單,找到數據庫中含有目標的圖像中的目標包圍框,將完全覆蓋此包圍框的外圍圖摳出來作爲正樣本。
負樣本則是在那些不含有目標的區域摳圖。
請看下圖,在第一和第二行展示了構建的正樣本,第三行展示了構建的負樣本。

假設目標檢測的類別是K類,加上負樣本類,則該分類問題是K+1類圖像的分類問題,訓練時作者使用在ImageNet預訓練的ResNet50網絡微調權重。
下面是一些blend合成後的樣本示例:

第一行是合成的比較自然的,第二行有些視覺上的小問題,第三行則是一些錯誤合成的例子。

實驗結果
訓練數據使用Pascal VOC 2012數據集的訓練集,共20類目標,其目標含有像素級語義標註,共1464幅圖像,目標檢測器和Context CNN分類器均在其上訓練。
測試數據使用Pascal VOC 2007數據集的測試集,其含有4956幅圖像,類別與訓練集相同。
目標檢測器模型使用開源的BlitzNet。
Base-DA:常規的圖像顏色改變、圖像縮放旋轉等樣本擴充方法。
Random-DA:使用隨機背景圖像與目標圖像合成的方法。
Context-DA:該文提出的考慮上下文建模的方法。

作者首先爲每一個目標類訓練單個的檢測器,訓練20個,評估其性能,如上圖中的Table 1,
相比Base-DA方法,可以看到除了在chair類性能略有下降,其他類別性能均上升,而隨機圖像合成的Random-DA則對性能造成了損害。
這證明該文提出的方法不僅有效,而且對於目標類別沒有特定性,是通用的目標檢測樣本擴充方法。

而後作者訓練一個多目標檢測器,如上圖中的Table 2,除了在bus類下降,整體性能同樣得到提升。

上述方法用在語義分割上怎麼樣?
上文證明,這種面向特定任務的目標檢測樣本擴充方法大幅提高了性能,那能否將其用在語義分割場景中呢?
答案是肯定的。在作者後續擴充版本的論文《On the Importance of Visual Context for Data Augmentation in Scene Understanding》中,使用上述方法,也改進了語義分割的性能。
 

如果訓練數據只有目標的包圍框,沒有像素級標註怎麼辦?
上述增廣方法,必須得到目標的像素級標註,不然在合成的時候會很不自然,分割數據的標註可是非常耗時且昂貴的。
作者的答案是使用弱監督學習,在擴充版本論文中,對於訓練數據中圖像使用DeepLabV1-DeepLabV4語義分割方法分割出目標,將分割結果集成,然後用於訓練數據的合成。
通過使用這種弱監督學習的方法,相對有像素級標註的監督學習方法,只損失了0.6%的mAP性能,仍比不進行樣本擴充高出1.6%。
 

總結
這篇論文深入研究了目標檢測樣本擴充的上下文建模方法,表明樣本擴充不能亂來,也要有“基本法”,比較有啓發的是,那常規的樣本擴充方法是否也有值得探索的“基本法”呢?比如顏色改變的程度大小?比如樣本旋轉的角度?等等。
期待各位讀者能發明更具指導性的方法來。

工程地址:
http://thoth.inrialpes.fr/research/context_aug/
https://github.com/dvornikita/context_aug

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章