A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection

A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection

摘要

我們如何學習一個對遮擋和變形不變的物體檢測器?我們目前的解決方案是使用數據驅動策略 - 收集具有不同條件下的對象實例的大規模數據集。希望最終的分類器可以使用這些例子來學習不變性。但是真的有可能看到數據集中的所有遮擋?我們認爲像類別,遮擋和對象變形也遵循長尾。一些遮擋和變形非常罕見,幾乎不會發生。但我們想要學習一個不會出現這種情況的模型。在本文中,我們提出了一種替代解決方案。我們建議學習一個GAN網絡,該網絡可以生成包含遮擋和變形的示例。對手的目標是生成對象檢測器難以分類的示例。在我們的框架中,原始檢測器和對手都以共同方式學習。我們的實驗結果表明,與Fast-RCNN管道相比,VOC07上的2.3%mAP提升和VOC2012目標檢測挑戰上的2.6%mAP提升。我們也爲本文發佈代碼1。

1. Introduction

對象檢測的目標是學習汽車等概念的視覺模型,並使用此模型將這些概念定位到圖像中。 這要求能夠對照明,變形,遮擋和其他類內變體進行穩健建模。 處理這些不變性的標準範例是收集具有不同條件下的對象實例的大規模數據集。 例如,COCO數據集[18]在不同的遮擋和變形下有10多萬輛汽車示例。 希望這些例子能捕捉視覺概念的所有可能的變化,然後分類器可以有效地爲它們建立不變性的模型。 我們相信這是ConvNets在物體檢測任務中如此成功的主要原因之一:他們能夠使用所有這些數據來學習不變性。

但是,像對象類別一樣,我們相信即使是遮擋和變形也會遵循長尾分佈。 也就是說,一些遮擋和變形是非常罕見的,以至於它們在大規模數據集中發生的可能性很小。 例如,考慮圖1所示的遮擋。我們注意到一些遮擋比其他遮擋更頻繁地發生(例如,停車庫中其他車輛的遮擋比空調更頻繁)。 類似地,動物中的一些變形是常見的(例如坐姿/站立姿勢),而其他變形非常罕見。

那麼,我們如何學習這種罕見/不常見的遮擋和變形的不變性? 儘管收集更大的數據集是一種可能的解決方案,但由於長尾統計數據而不可能擴展。

 

1:我們認爲,遮擋和變形都遵循長尾分佈。 一些遮擋和變形很少見。 在本文中,我們建議使用GAN網絡來生成具有遮擋和變形的例子,這對於物體檢測器來說很難分類。 隨着對象檢測器變得越來越好,我們的對抗網絡也會適應。 憑藉這種對抗性的學習策略,我們憑藉經驗顯示了檢測準確性的提升

 

最近,在生成圖像(或像素)方面進行了大量工作[4,9,26]。 瞭解這些罕見事件的一種可能方式是通過從尾部分佈中抽樣來生成逼真的圖像。 然而,這不是一個可行的解決方案,因爲圖像生成需要訓練這些罕見事件的例子。 另一種解決方案是產生所有可能的遮擋和變形,並從它們中訓練物體檢測器。 但是,由於變形和遮擋的空間很大,這不是一個可擴展的解決方案。 已經表明,使用所有的例子往往不是最優的解決方案[33,39],而選擇較難的例子則更好。 是否有一種方法可以生成具有不同遮擋和變形的“硬”正面示例,並且不會自行生成像素?

如何訓練另一個網絡:一個通過在空間上阻塞某些特徵映射創建硬性示例的對手,或者通過操縱特徵響應來創建空間變形。 這個對手會預測像Fast-RCNN這樣的檢測器會很難,然後Fast-RCNN會自行調整以學習分類這些GAN的例子。 這裏的關鍵思想是在卷積特徵空間中創建GAN的例子,而不是直接生成像素,因爲後者是一個更難的問題。 在我們的實驗中,與標準的Fast-RCNN流水線相比,我們展示了對抗Fast-RCNNA-Fast-RCNN)性能的實質性改進。

2. Related Work

近年來,在物體檢測領域取得了重大進展。 這些最近的成功基於從ImageNet分類[3]的任務中學到的強大的深層特徵[16]。 R-CNN [8]和OverFeat [30]物體檢測系統在PASCAL VOC領域取得了令人印象深刻的成果[5]; 並且近年來出現了更多計算效率更高的版本,可以在COCO [18]等更大的數據集上進行有效訓練。 例如,Fast-RCNN [7]共享不同區域提案中的卷積以提供加速,Faster-RCNN [28]和R-FCN [2]在框架中合併區域提案生成, 最終版本。 在Overfeat檢測器的滑動窗口範例的基礎上,出現了其他計算效率高的方法,如YOLO [27],SSD [19]和DenseBox [13]。 在[12]中討論了這些方法之間的徹底比較。

最近的研究集中在開發更好的物體檢測系統的三個主要方向。

第一個方向依賴於改變這些網絡的基礎架構。中心思想是,使用更深的網絡不僅會提升分類效果,而且提升檢測效果。最近在這方面的工作包括ResNet [10],Inception-ResNet [38]和ResNetXt [43]用於物體檢測。

第二個研究領域一直是使用上下文推理,推理的代理任務和其他自上而下的機制來改善對象檢測的表示[1,6,17,24,32,34,45]。例如,[32]使用分割作爲一種方式來上下文地提取對象檢測器並向初始層提供反饋。 [1]使用skipnetwork架構,並使用來自多個表示層的特徵以及上下文推理。其他方法包括使用自頂向下的特徵來結合上下文和更精細的細節[17,24,34],這導致改進的檢測。

改進檢測系統的第三個方向是更好地利用數據本身。 人們經常認爲,物體檢測最近的成功是更好的視覺表現和大規模學習數據的可用性的產物。 因此,第三類方法試圖探索如何更好地利用數據來提高性能。 一個例子是將硬實例挖掘整合到一個有效和高效的基於區域的ConvNet [33]訓練中。 findind硬件訓練示例的其他例子包括[20,35,41]。

我們的工作遵循第三個研究方向,重點在於更好地利用數據。然而,我們並不試圖通過篩選數據來找到難以理解的例子,而是嘗試生成難以用於Fast-RCNN檢測/分類的例子。我們限制新一代正面代的空間,以便從數據集中爲當前現有示例添加遮擋和變形。具體而言,我們學習對抗性網絡,試圖預測會導致Fast-RCNN誤分類的遮擋和變形。因此,我們的工作與最近在對抗學習方面的大量工作有關[4,9,14,21,22,23,26,29,37]。例如,已經提出了技術來改善圖像生成的對抗性學習[26]以及訓練更好的圖像生成模型[29]。 [29]還強調,生成對抗學習可以改善半監督環境下的圖像分類。然而,這些作品中的實驗是針對複雜程度低於對象檢測數據集的數據進行的,其中圖像生成結果明顯較差。我們的工作也與最近關於機器人對抗訓練的研究有關[25]。然而,我們並沒有使用生成對抗來獲得更好的監督,而是使用生成對抗來生成這些實例。

3. Adversarial Learning for Object Detection

我們的目標是學習一個對不同條件(如遮擋,變形和照明)具有魯棒性的物體檢測器。 我們假設,即使在大規模數據集中,也不可能涵蓋所有潛在的遮擋和變形。 我們採取另一種方法,而不是嚴重依賴數據集或篩選數據來查找難題。 我們主動生成對於物體檢測器難以識別的示例。 但是,我們不是在像素空間中生成數據,而是專注於生成的受限空間:遮擋和變形。

 

2:我們的ASDN網絡體系結構以及它如何與fast RCNN方法相結合。 我們的ASDN網絡將帶有使用RoIpooling層提取的特徵的圖像補丁作爲輸入。 ASDN網絡比預測一個遮擋/丟棄遮罩,然後用它來丟棄特徵值並傳遞到Fast-RCNN的分類塔。

在數學上,讓我們假設原始物體檢測器網絡表示爲FX),其中X是目標提議之一。 檢測器給出表示類輸出的兩個輸出Fc,並且F1表示預測的邊界框位置。 讓我們假設Xgroundtruth真值類別是C,空間位置是L.我們原來的檢測器損失可以寫成:

 

第一項是SoftMax損失,第二項是基於預測邊界框位置和groundtruth框位置(僅前景類)的損失。

  假設對抗網絡表示爲AX),它給出了一個在圖像I上計算出的特徵X,從而產生一個新的對抗性例子。 檢測器的損失函數保持不變,因爲小批量現在包含較少的原始和一些生成對抗的例子。

然而,生成對抗網絡必須學會預測檢測器失效的特徵。 我們通過以下損失函數訓練這個生成對抗網絡,

 

因此,如果由對抗網絡產生的特徵容易對檢測器進行分類,則對於對抗網絡來說,我們將獲得高損失。 另一方面,如果在對抗性特徵生成之後對於檢測器來說很困難,那麼對於檢測器而言,我們將獲得高損失,並且對於對抗網絡而言損失低。

 

3:(a)模型預訓練:選擇硬遮擋並用作地面實況訓練ASDN網絡的遮擋示例(b)示例

4. A-Fast-RCNN: Approach Details

我們現在描述我們框架的細節。 我們首先簡要介紹我們的基本檢測網絡Fast-RCNN。 接下來描述生成對抗生成的空間。 特別是,我們專注於在本文中產生不同類型的遮擋和變形。 最後,在第5節中,我們描述了我們的實驗設置並顯示示比基線顯着改進的結果。

4.1. Overview of Fast-RCNN

我們建立在Fast-RCNN對象檢測框架[7]上。 Fast-RCNN由兩部分組成:(i)用於特徵提取的卷積網絡; ii)一個RoI網絡,帶有一個RoIpooling層和幾個全連接層,可以輸出對象類和邊界框。

給定輸入圖像後,Fast-RCNN的卷積網絡將整個圖像作爲輸入,並生成卷積特徵映射作爲輸出。 由於操作主要是卷積和最大池化,輸出特徵映射的空間維度將根據輸入圖像大小而變化。 給定特徵映射,RoIpooling層用於將對象提議[40]投影到特徵空間上。 ROI-pooling裁剪和調整大小以爲每個對象提議生成固定大小的特徵向量。 這些特徵向量然後通過全連接層。 全連接層的輸出是:(i)包括背景類的每個對象類的概率; 和(ii)邊界框座標。

對於訓練,SoftMax損失和迴歸損失分別應用於這兩個輸出,並且梯度通過所有層反向傳播以執行端到端學習。

4.2. Adversarial Networks Design

我們考慮生成對抗網絡的兩種類型的特徵生成與Fast-RCNNFRCN)檢測器競爭。 第一種類型是遮擋。 在這裏,我們提出了對抗空間丟失網絡(ASDN),該網絡學習如何封閉給定的對象,使得FRCN很難分類。 我們在本文中考慮的第二種類型是變形。 在這種情況下,我們提出了生成對抗空間變換網絡(ASTN),該網絡學習如何旋轉對象的“部分”並使其難以被檢測器識別。 通過與這些網絡競爭並克服障礙,FRCN學會以一種強有力的方式處理物體遮擋和變形。 請注意,建議的網絡ASDNASTN在訓練期間與FRCN一起同時學習。 聯合訓練可以防止過擬合。

我們沒有在輸入圖像上創建遮擋和變形,而是發現在特徵空間上操作更加高效和有效。 因此,我們設計我們的對抗網絡來修改功能,以使對象更難識別。 請注意,這兩個網絡僅在訓練期間應用以改進檢測器。 我們將首先單獨介紹ASDNASTN,然後將它們組合在一個統一的框架中。

4.2.1 Adversarial Spatial Dropout for Occlusion

我們提出了一個對抗空間丟失網絡ASDN)來爲前景對象的深層特徵創建遮擋。 回想一下,在標準的Fast-RCNN流水線中,我們可以在RoIpooling層之後爲每個前景對象提議獲取卷積特徵。 我們使用這些基於地區的功能作爲我們的Gan網絡的輸入。 鑑於某個對象的特徵,ASDN將嘗試生成一個掩碼,指示要丟棄的特徵的哪些部分(分配零),以便檢測器無法識別該對象。

更具體地說,給定一個對象,我們提取大小爲d×d×c的特徵X,其中d是空間維度,c表示通道數目(例如,c = 256,在AlexNetd = 6)。 鑑於此特性,我們的ASDN將預先設置一個掩模M,其中d×d值在閾值之後爲01。 我們在圖3b)的閾值之前顯示一些掩模。 我們將Mij表示爲面具第i行和第j列的值。 類似地,Xijk表示特徵的位置ij處的通道k中的值。 如果Mij = 1,我們丟棄feature map X的相應空間位置中的所有信道的值,即Xijk = 0,∀k

Network Architecture.

我們使用標準FastRCNNFRCN)架構。 我們使用來自ImageNet的預訓練初始化網絡[3]Gan網絡使用FRCN共享卷積層和RoIpooling,然後使用自己獨立的完全連接的層。 請注意,由於我們正在優化兩個網絡以完成完全相反的任務,因此我們不使用Fast-RCNN共享ASDN中的參數。

Model Pre-training.

在我們的實驗中,我們發現在使用它來改進Fast-RCNN之前,預先訓練ASDN創建遮擋是很重要的。 受fast RCNN檢測器[28]的驅動,我們在這裏應用階段式訓練。 我們首先訓練我們的fastRCNN探測器,無需ASDN進行10K迭代。 由於探測器現在對數據集中的對象有一定的瞭解,我們通過修復探測器中的所有層來訓練ASDN模型以創建遮擋。

Initializing ASDN Network.

爲了初始化ASDN網絡,給定具有空間佈局d×dfeature map X,我們在其上應用尺寸爲d/3×d/3的滑動窗口。我們通過將窗口投影回圖像來表示滑動窗口過程,如圖3a)所示。對於每個滑動窗口,我們刪除空間位置被窗口覆蓋的所有通道中的值,併爲區域提議生成新的特徵向量。這個特徵向量然後通過分類層來計算損失。基於所有d/3×d/3窗口的損失,我們選擇損失最高的窗口。此窗口然後用於創建一個d×d掩碼(窗口位置爲1,其他像素爲0)。我們爲n個正區域提議生成這些空間模板,併爲我們的Gan輟學網絡獲得n對訓練實例{X1M1),...,(XnMn}。這個想法是,ASDN應該學會生成可以給檢測器網絡帶來高損失的掩模。我們將二叉交叉熵損失應用於訓練ASDN,它可以表示爲,


Figure 4: Network architecture for combining ASDN and ASTN network. First occlusion masks are created and then the channels are rotated to generate hard examples for training.

其中AijXp)表示在給定輸入特徵映射Xp的位置(ij)中的ASDN的輸出。 我們用10K迭代的這個損失來訓練ASDN。 我們表明,網絡開始識別哪些部分的對象對於分類有重要意義,如圖3b)所示。 還要注意,我們的輸出掩碼與[31]中提出的注意掩碼不同,他們使用注意機制來促進分類。 在我們的例子中,我們使用mask來遮擋部分以使分類更難。

採樣閾值

ASDN網絡生成的輸出不是二進制掩碼,而是連續的熱圖。 我們不使用直接閾值處理,而是使用重要性採樣來選擇頂部1/3個像素進行掩蓋。 請注意,抽樣過程包含訓練期間樣本中的隨機性和多樣性。 更具體地說,給定一個熱圖,我們首先選擇具有最高概率的頂部1/2個像素,並從其中隨機選擇1/3個像素來分配值1,剩下的2/3個像素設置爲0

聯合訓練

鑑於預訓練的ASDNFastRCNN模型,我們在每次訓練迭代中聯合優化這兩個網絡。 爲了訓練Fast-RCNN檢測器,我們首先使用ASDN在正向傳播期間在RoIpooling之後的特徵上生成掩模。 我們執行採樣以生成二進制掩碼,並使用它們刪除RoIpooling圖層之後的要素值。 然後,我們轉發修改過的功能來計算損耗並對檢測器進行端到端訓練。 請注意,雖然我們的功能已修改,但標籤保持不變。 通過這種方式,我們創建了“更難”和更多樣化的培訓探測器的例子。

爲了訓練ASDN,由於我們應用採樣策略將熱圖轉換爲不可區分的二元掩模,因此我們不能直接回避分類損失中的梯度。 或者,我們從REINFORCE [42]方法中獲得靈感。 我們計算哪些二進制掩碼會導致Fast-RCNN分類分數的顯着下降。 我們只使用那些硬實例掩碼作爲基礎來直接訓練Gan網絡,使用方程式1中所述的相同損失。

4.2.2 用於型變的對抗網絡

我們現在介紹對抗空間變換網絡(ASTN)。 關鍵的想法是在對象特徵上產生變形,並且難以使探測器識別對象。 我們的網絡建立在[15]中提出的空間變換網絡(STN)上。 在他們的工作中,STN被提議使特徵變形以使分類更容易。 另一方面,我們的網絡正在完成相反的任務。 通過與我們的ASTN,我們可以訓練一個更好的探測器,它對變形很有效。

STN概述

STN網絡有三個組成部分,分別是:定位網絡(localisation network)、網格生成器(grid generator)和採樣器(sampler)。定位網絡將估計形變參數(如旋轉度、平移距離和縮放因子),網格生成器和採樣器將會用到這些參數來產生新的形變後的特徵圖。這個空間變換神經網絡仍然是複雜的概念,我自己概括就是:相當於在傳統的卷積層中間,裝了一個“插件”,可以使得傳統的卷積帶有了裁剪、平移、縮放、旋轉等特性。

STN對抗網絡

空間變換有好幾種形式(裁剪、平移、縮放、旋轉等),針對本文中的形變要求,作者僅關注旋轉特徵,意味着ASTN只需要學習出讓檢測器難以判別的旋轉特徵就可以了。如圖4所示,對抗網絡長得和前面的ASDN相似,其中定位網絡由3個全連接層構成,前兩層是由fc6fc7初始化來的。ASTNFast R-CNN還是要聯合訓練,如果ASTN的變換讓檢測器將前景誤判爲背景,那麼這種空間變換就是最優的。作者也提到,可直接使用Fast R-CNNsoftmax loss進行反向傳播,因爲空間變換是可微的。

實施細節

作者在試驗中發現,限制旋轉角度很重要,不加限制容易將物體上下顛倒,這樣最難識別,也沒啥意義。作者把旋轉角度限制在了正負10度,而且按照特徵圖的維度分成4塊,分別加以不同的旋轉角度,這樣可以增加任務複雜性,防止網絡預測瑣碎的變形 

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