萬 曉 丹
(南昌師范學院物理系 江西 南昌 330032)
目標檢測是一種自動駕駛場景中的視覺模型,便于自動駕駛場景中的車輛對當前駕駛環境中的目標進行識別。通常,目標檢測方法需要對真實的駕駛場景有很好的魯棒性。為了達到這一目標,目前標準的做法是制作大規模的數據集以包含真實場景中的各種情況,通過大量的數據來訓練算法以提升算法的魯棒性。目前COCO數據集[2]中約有10 000個具有不同遮擋程度的汽車樣本。然而現實生活中的遮擋情況也遵循長尾理論,即一些很罕見的遮擋情況在數據集中幾乎不會出現。圖1所示為大規模數據集中的長尾情況,盡管數據集數據量夠大,但是也很難突破長尾理論的限制。

圖1 數據集中的遮擋情況
近年來,生成式對抗網絡(Generative Adversarial Networks,GAN)廣泛應用于圖像和像素生成領域,并取得一系列成果[3-5],這也讓使用生成式對抗網絡來生成遮擋圖片成為一種可能。但考慮到生成式對抗網絡模型的訓練和生成依賴于寶貴的遮擋樣本,且在前期模型生成階段的成本太高,因此不得不考慮使用其他方法來解決訓練樣本不足的問題。一些已經提出來的目標檢測方法表明[6-7],使用所有樣本進行訓練通常不是最佳解決方案,并且選擇“難”樣本更好。為了在已有數據集的基礎上得到不同遮擋程度的樣本,而不產生新的樣本,本文試圖訓練這樣一個網絡:首先使用對抗網絡在特征圖空間上生成Mask掩碼來遮擋特征圖的某些部分來得到樣本的遮擋特征圖;再使用Faster RCNN算法的分類器對經過對抗網絡的特征圖進行分類,同時在整個算法的損失函數中加入對抗網絡的損失。本文直接在卷積特征圖的基礎上生成Mask掩碼,并作用于原特征圖得到新的特征圖。本文不致力于生成新的像素,因為生成新的像素是一個更難的問題。實驗結果表明,與標準的Faster RCNN[1]算法相比,結合對抗網絡的Faster RCNN算法的性能有了實質性的提升。
近年來,越來越深的神經網絡和種類、數量越來越多的數據集,與ImageNet[8]分類任務中學習的深層特征結合起來推動了目標檢測方法的進步。其中RCNN[9]系列算法和OverFeat[10]算法在PASCAL VOC[11]數據集上以其令人印象深刻的結果引領了使用神經網絡來做目標檢測的潮流。隨著Fast RCNN[12]等優化方法的提出,研究者提出了更多目標檢測方法,同時也提出了更多高效率的計算方法,能夠在更大數據集上高效地訓練目標檢測算法。例如,Fast RCNN算法在RCNN算法的基礎上為所有候選區域共享卷積特征圖,將卷積層提取特征次數由2 000次降到1次,大大提高了算法的效率。Faster RCNN和R-FCN[13]在框架中引入候選區域生成網絡(Region Proposal Network,RPN),從而實現完全端到端的效果。YOLO[14]、SSD[15]和DenseBox[16]等方法借鑒滑動窗口的思想,直接從特征圖上回歸候選區域,計算效率更高,速度更快。
對于提升目標檢測方法的性能,目前大多數研究者主要從三個方向進行研究:
(1) 重心在網絡結構上。通過改變算法的基礎網絡框架,提升算法的準確性,其主要思想是使用更深或更寬的網絡。在這方面的工作主要包括ResNet[17]、Inception ResNet[18]和ResNetXt[19]。
(2) 充分利用上下文特征,主要思想是融合不同卷積層特征。例如,Shrivastava等[20]使用分段作為上下文填充目標檢測器,并向初始層提供反饋。Bell等[21]使用跳躍網絡架構,并結合上下文信息來使用多層的特征。還有其他的方法使用自上而下的特征來結合上下文和更精細的細節[22],從而提升檢測性能。
(3) 從數據集出發,主要包括使用更大、類別更豐富的數據集。經驗表明,一個成功的目標檢測算法是一個良好的視覺表示框架和大規模可訓練數據結合的產物。因此,數據集也是影響目標檢測方法不可或缺的因素。目前大部分目標檢測算法中針對數據集提高算法性能的方法主要有挑選“難”樣本來訓練算法。
本文以Faster RCNN算法為基礎,從數據集方向出發提高目標檢測算法的性能。核心思想是生成讓Faster RCNN難以檢測和分類的樣本,而不是通過篩選數據集來找到不同遮擋程度的樣本或生成新的像素。本文的目標是學習一個對抗網絡,讓對抗網絡學習去生成讓Faster RCNN分類器難以正確分類的遮擋樣本,Faster RCNN分類器則學習如何正確分類遮擋的樣本,通過對抗學習來提高算法的性能。本文工作與近期對抗方法中的很多工作有關[23]。Radford等[5]指出對抗學習能夠用來訓練更好的模型,同時在圖像分類任務中對抗學習也表現出了很好的效果。同樣地,對抗學習也用于機器人訓練中[24]。
本文方法的整個網絡框架如圖2所示,由兩部分組成:對抗網絡ASDN網絡和Faster RCNN目標檢測框架。整個網絡的損失函數由這兩部分的損失構成。

圖2 對抗網絡ASDN與Faster RCNN方法的結合
在模型中,將Faster RCNN網絡表示為F(X),其中:X表示一個候選區域;F表示Faster RCNN網絡。Faster RCNN算法包含兩個任務:分類和定位。設X所屬的標簽類別是C,標簽空間位置為L。Faster RCNN檢測網絡的整體損失可以表示為:
LF=Lsoftmax(prob(X),C)+
Lbbox(box(X),L)C∈fg
(1)
式中:prob(X)表示Faster RCNN網絡輸出的類別概率;box(X)表示輸出的包圍框回歸參數;Lsoftmax為分類任務損失;Lbbox為定位損失(僅計算前景類);fg表示所有的標簽類別。
用A(X)表示對抗網絡,根據前面的描述,對抗網絡必須學會生成讓Faster RCNN的分類器錯誤分類的特征,因此對抗網絡的損失可以表示為:
LA=-Lsoftmax(prob(A(X)),C)
(2)
式中:prob(·)表示Fast RCNN的分類器輸出的對抗網絡的特征所對應的概率。
由于對抗網絡的目的是學會生成讓Faster RCNN算法的分類器誤檢的特征,因此在分類器的損失較低即分類器分類效果好的情況下,對抗網絡會獲得高損失來“懲罰”對抗網絡。
本文中的算法以Faster RCNN算法作為基準框架,Faster RCNN由三部分組成:(1) 用于提取特征的卷積神經網絡;(2) 用于生成候選區域的候選區域生成網絡(RPN);(3) 具有ROI池化層和幾個全連接層的特征分類網絡,輸出每個候選區域的目標類別概率和包圍框坐標回歸參數。
對于輸入的圖像數據,Faster RCNN將整幅圖像送入卷積層中提取特征。之后,使用RPN網絡在特征圖上得到一系列的候選區域并映射到原圖,再進行一次粗分類得到300個正負樣本比例為1∶1的候選區域。針對不同大小的輸入圖像會得到不同大小的特征圖的問題,Faster RCNN中使用ROI 池化層得到每個候選區域的特征,之后再歸一化得到統一尺寸的特征圖,這一操作避免了對候選區域再次使用卷積神經網絡提取特征。最后將每個候選區域的特征送入分類器中進行分類,分類器包括兩個輸出:(1) 每個候選區域屬于每個目標類的概率;(2) 每個候選區域包圍框坐標回歸參數。
本文使用對抗網絡來生成Mask掩碼,然后作用在ROI池化層之后的特征上得到遮擋的特征圖。在這里,應用一個對抗空間丟棄網絡(Adversarial Spatial Dropout Network,ASDN)來學習如何遮擋給定的目標使得Faster RCNN難以分類。通過ASDN與Faster RCNN的對抗和競爭,Faster RCNN學會以魯棒的方式來處理檢測中遇到的不同程度的遮擋。
ASDN網絡的輸入特征圖是每個候選區域經過ROI池化層之后統一尺寸的特征圖。對于每一個候選區域的特征圖,ASDN網絡生成一個與特征圖大小相同的Mask掩碼,對于特征圖中要丟棄(遮擋)的部分,其對應的Mask掩碼位置為零。如圖3所示,ASDN網絡能夠學會遮擋特征圖中對最后分類結果產生決定性影響的部分。

圖3 ASDN網絡生成掩碼

(1) 網絡架構。本文使用標準的Faster RCNN算法框架,包括RPN網絡和ROI池化層。為了減少計算量,ASDN網絡與Faster RCNN基礎網絡共享卷積層和ROI池化層。如圖4所示,ASDN網絡中包含兩個獨立于Faster RCNN算法的全連接層,用來生成Mask掩碼。

圖4 ASDN網絡架構
(2) 模型預訓練。在將ASDN網絡與Faster RCNN網絡聯合起來訓練之前,需要單獨對Faster RCNN網絡進行預訓練,本文中的訓練方法采用分步訓練法。首先單獨對Faster RCNN網絡迭代訓練10 000次,以此得到一個具有初步認知能力的目標檢測網絡。之后固定Faster RCNN網絡的所有層,將ASDN網絡融入進去,單獨訓練ASDN網絡。

(3)

使用上述的損失函數訓練ASDN 10 000次,這樣能夠讓ASDN網絡學習到哪一部分特征對于分類是重要的。

圖5 ASDN掩碼投影至原圖
(4) 聯合訓練。在分別對Faster RCNN網絡和ASDN網絡分開訓練10 000次之后,將ASDN網絡和Faster RCNN模型聯合起來進行訓練15 000次,將兩個網絡的損失函數整合到一起。在每次迭代過程中,將損失函數的誤差反向傳播到兩個網絡中共同更新權重。在每次正向傳播過程中,ASDN網絡針對ROI池化層得到的每個候選區域的特征生成同樣尺寸的Mask掩碼,之后根據掩碼對特征進行遮擋。然后將遮擋后的特征送入分類器進行類別分類和包圍框坐標回歸。在不增加太多層的情況下,僅僅修改了分類器的輸入特征的某一些特征值,而不改變其大小。且通過這種方法,在特征圖空間上生成了更多的“難”樣本。
我們分別在PASCAL VOC 2007和PASCAL VOC 2012數據集上進行對比實驗,結果如表1所示。對于原始的Faster RCNN算法,實驗中從RPN網絡選擇300個候選區域。結果表明,在VOC 2007數據集上,平均精度(mAP)由原來的69.9%提升至72.1%;在VOC 2007和VOC 2012聯合數據集上,平均精度由原來的73.2%提升至74.5%。

表1 PASCAL VOC 2007和PASCAL VOC 2012結果
為了對比ASDN網絡在各個類別上的性能提升,本文針對VOC數據集的20個類別分別做了實驗,結果如表2所示。與表1類似,候選區域的數量以及數據集的選擇都是一樣的。可以看出,VOC數據集的各個類別上,融合了對抗網絡的檢測算法都有不同程度的精度提升。

表2 VOC數據集各個類別上檢測精度(候選區域:300)%
本文提出一種基于對抗網絡和卷積神經網絡的目標檢測算法,在不改變當前的數據集的情況下,使用對抗網絡得到遮擋的特征圖,通過對抗網絡與分類網絡互相對抗學習提高算法的精度。相比在原圖上生成新的像素,本文選擇遮擋特征圖上某些特征值來達到遮擋的效果。實驗表明,融合對抗網絡的Faster RCNN算法在VOC數據集上的檢測性能有顯著提升。