1. 程式人生 > >A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection

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塊,分別加以不同的旋轉角度,這樣可以增加任務複雜性,防止網路預測瑣碎的變形