萬 曉 丹
(南昌師范學院物理系 江西 南昌 330032)
目標檢測是一種自動駕駛場景中的視覺模型,便于自動駕駛場景中的車輛對當前駕駛環(huán)境中的目標進行識別。通常,目標檢測方法需要對真實的駕駛場景有很好的魯棒性。為了達到這一目標,目前標準的做法是制作大規(guī)模的數(shù)據(jù)集以包含真實場景中的各種情況,通過大量的數(shù)據(jù)來訓練算法以提升算法的魯棒性。目前COCO數(shù)據(jù)集[2]中約有10 000個具有不同遮擋程度的汽車樣本。然而現(xiàn)實生活中的遮擋情況也遵循長尾理論,即一些很罕見的遮擋情況在數(shù)據(jù)集中幾乎不會出現(xiàn)。圖1所示為大規(guī)模數(shù)據(jù)集中的長尾情況,盡管數(shù)據(jù)集數(shù)據(jù)量夠大,但是也很難突破長尾理論的限制。
圖1 數(shù)據(jù)集中的遮擋情況
近年來,生成式對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)廣泛應(yīng)用于圖像和像素生成領(lǐng)域,并取得一系列成果[3-5],這也讓使用生成式對抗網(wǎng)絡(luò)來生成遮擋圖片成為一種可能。但考慮到生成式對抗網(wǎng)絡(luò)模型的訓練和生成依賴于寶貴的遮擋樣本,且在前期模型生成階段的成本太高,因此不得不考慮使用其他方法來解決訓練樣本不足的問題。一些已經(jīng)提出來的目標檢測方法表明[6-7],使用所有樣本進行訓練通常不是最佳解決方案,并且選擇“難”樣本更好。為了在已有數(shù)據(jù)集的基礎(chǔ)上得到不同遮擋程度的樣本,而不產(chǎn)生新的樣本,本文試圖訓練這樣一個網(wǎng)絡(luò):首先使用對抗網(wǎng)絡(luò)在特征圖空間上生成Mask掩碼來遮擋特征圖的某些部分來得到樣本的遮擋特征圖;再使用Faster RCNN算法的分類器對經(jīng)過對抗網(wǎng)絡(luò)的特征圖進行分類,同時在整個算法的損失函數(shù)中加入對抗網(wǎng)絡(luò)的損失。本文直接在卷積特征圖的基礎(chǔ)上生成Mask掩碼,并作用于原特征圖得到新的特征圖。本文不致力于生成新的像素,因為生成新的像素是一個更難的問題。實驗結(jié)果表明,與標準的Faster RCNN[1]算法相比,結(jié)合對抗網(wǎng)絡(luò)的Faster RCNN算法的性能有了實質(zhì)性的提升。
近年來,越來越深的神經(jīng)網(wǎng)絡(luò)和種類、數(shù)量越來越多的數(shù)據(jù)集,與ImageNet[8]分類任務(wù)中學習的深層特征結(jié)合起來推動了目標檢測方法的進步。其中RCNN[9]系列算法和OverFeat[10]算法在PASCAL VOC[11]數(shù)據(jù)集上以其令人印象深刻的結(jié)果引領(lǐng)了使用神經(jīng)網(wǎng)絡(luò)來做目標檢測的潮流。隨著Fast RCNN[12]等優(yōu)化方法的提出,研究者提出了更多目標檢測方法,同時也提出了更多高效率的計算方法,能夠在更大數(shù)據(jù)集上高效地訓練目標檢測算法。例如,F(xiàn)ast RCNN算法在RCNN算法的基礎(chǔ)上為所有候選區(qū)域共享卷積特征圖,將卷積層提取特征次數(shù)由2 000次降到1次,大大提高了算法的效率。Faster RCNN和R-FCN[13]在框架中引入候選區(qū)域生成網(wǎng)絡(luò)(Region Proposal Network,RPN),從而實現(xiàn)完全端到端的效果。YOLO[14]、SSD[15]和DenseBox[16]等方法借鑒滑動窗口的思想,直接從特征圖上回歸候選區(qū)域,計算效率更高,速度更快。
對于提升目標檢測方法的性能,目前大多數(shù)研究者主要從三個方向進行研究:
(1) 重心在網(wǎng)絡(luò)結(jié)構(gòu)上。通過改變算法的基礎(chǔ)網(wǎng)絡(luò)框架,提升算法的準確性,其主要思想是使用更深或更寬的網(wǎng)絡(luò)。在這方面的工作主要包括ResNet[17]、Inception ResNet[18]和ResNetXt[19]。
(2) 充分利用上下文特征,主要思想是融合不同卷積層特征。例如,Shrivastava等[20]使用分段作為上下文填充目標檢測器,并向初始層提供反饋。Bell等[21]使用跳躍網(wǎng)絡(luò)架構(gòu),并結(jié)合上下文信息來使用多層的特征。還有其他的方法使用自上而下的特征來結(jié)合上下文和更精細的細節(jié)[22],從而提升檢測性能。
(3) 從數(shù)據(jù)集出發(fā),主要包括使用更大、類別更豐富的數(shù)據(jù)集。經(jīng)驗表明,一個成功的目標檢測算法是一個良好的視覺表示框架和大規(guī)??捎柧殧?shù)據(jù)結(jié)合的產(chǎn)物。因此,數(shù)據(jù)集也是影響目標檢測方法不可或缺的因素。目前大部分目標檢測算法中針對數(shù)據(jù)集提高算法性能的方法主要有挑選“難”樣本來訓練算法。
本文以Faster RCNN算法為基礎(chǔ),從數(shù)據(jù)集方向出發(fā)提高目標檢測算法的性能。核心思想是生成讓Faster RCNN難以檢測和分類的樣本,而不是通過篩選數(shù)據(jù)集來找到不同遮擋程度的樣本或生成新的像素。本文的目標是學習一個對抗網(wǎng)絡(luò),讓對抗網(wǎng)絡(luò)學習去生成讓Faster RCNN分類器難以正確分類的遮擋樣本,F(xiàn)aster RCNN分類器則學習如何正確分類遮擋的樣本,通過對抗學習來提高算法的性能。本文工作與近期對抗方法中的很多工作有關(guān)[23]。Radford等[5]指出對抗學習能夠用來訓練更好的模型,同時在圖像分類任務(wù)中對抗學習也表現(xiàn)出了很好的效果。同樣地,對抗學習也用于機器人訓練中[24]。
本文方法的整個網(wǎng)絡(luò)框架如圖2所示,由兩部分組成:對抗網(wǎng)絡(luò)ASDN網(wǎng)絡(luò)和Faster RCNN目標檢測框架。整個網(wǎng)絡(luò)的損失函數(shù)由這兩部分的損失構(gòu)成。
圖2 對抗網(wǎng)絡(luò)ASDN與Faster RCNN方法的結(jié)合
在模型中,將Faster RCNN網(wǎng)絡(luò)表示為F(X),其中:X表示一個候選區(qū)域;F表示Faster RCNN網(wǎng)絡(luò)。Faster RCNN算法包含兩個任務(wù):分類和定位。設(shè)X所屬的標簽類別是C,標簽空間位置為L。Faster RCNN檢測網(wǎng)絡(luò)的整體損失可以表示為:
LF=Lsoftmax(prob(X),C)+
Lbbox(box(X),L)C∈fg
(1)
式中:prob(X)表示Faster RCNN網(wǎng)絡(luò)輸出的類別概率;box(X)表示輸出的包圍框回歸參數(shù);Lsoftmax為分類任務(wù)損失;Lbbox為定位損失(僅計算前景類);fg表示所有的標簽類別。
用A(X)表示對抗網(wǎng)絡(luò),根據(jù)前面的描述,對抗網(wǎng)絡(luò)必須學會生成讓Faster RCNN的分類器錯誤分類的特征,因此對抗網(wǎng)絡(luò)的損失可以表示為:
LA=-Lsoftmax(prob(A(X)),C)
(2)
式中:prob(·)表示Fast RCNN的分類器輸出的對抗網(wǎng)絡(luò)的特征所對應(yīng)的概率。
由于對抗網(wǎng)絡(luò)的目的是學會生成讓Faster RCNN算法的分類器誤檢的特征,因此在分類器的損失較低即分類器分類效果好的情況下,對抗網(wǎng)絡(luò)會獲得高損失來“懲罰”對抗網(wǎng)絡(luò)。
本文中的算法以Faster RCNN算法作為基準框架,F(xiàn)aster RCNN由三部分組成:(1) 用于提取特征的卷積神經(jīng)網(wǎng)絡(luò);(2) 用于生成候選區(qū)域的候選區(qū)域生成網(wǎng)絡(luò)(RPN);(3) 具有ROI池化層和幾個全連接層的特征分類網(wǎng)絡(luò),輸出每個候選區(qū)域的目標類別概率和包圍框坐標回歸參數(shù)。
對于輸入的圖像數(shù)據(jù),F(xiàn)aster RCNN將整幅圖像送入卷積層中提取特征。之后,使用RPN網(wǎng)絡(luò)在特征圖上得到一系列的候選區(qū)域并映射到原圖,再進行一次粗分類得到300個正負樣本比例為1∶1的候選區(qū)域。針對不同大小的輸入圖像會得到不同大小的特征圖的問題,F(xiàn)aster RCNN中使用ROI 池化層得到每個候選區(qū)域的特征,之后再歸一化得到統(tǒng)一尺寸的特征圖,這一操作避免了對候選區(qū)域再次使用卷積神經(jīng)網(wǎng)絡(luò)提取特征。最后將每個候選區(qū)域的特征送入分類器中進行分類,分類器包括兩個輸出:(1) 每個候選區(qū)域?qū)儆诿總€目標類的概率;(2) 每個候選區(qū)域包圍框坐標回歸參數(shù)。
本文使用對抗網(wǎng)絡(luò)來生成Mask掩碼,然后作用在ROI池化層之后的特征上得到遮擋的特征圖。在這里,應(yīng)用一個對抗空間丟棄網(wǎng)絡(luò)(Adversarial Spatial Dropout Network,ASDN)來學習如何遮擋給定的目標使得Faster RCNN難以分類。通過ASDN與Faster RCNN的對抗和競爭,F(xiàn)aster RCNN學會以魯棒的方式來處理檢測中遇到的不同程度的遮擋。
ASDN網(wǎng)絡(luò)的輸入特征圖是每個候選區(qū)域經(jīng)過ROI池化層之后統(tǒng)一尺寸的特征圖。對于每一個候選區(qū)域的特征圖,ASDN網(wǎng)絡(luò)生成一個與特征圖大小相同的Mask掩碼,對于特征圖中要丟棄(遮擋)的部分,其對應(yīng)的Mask掩碼位置為零。如圖3所示,ASDN網(wǎng)絡(luò)能夠?qū)W會遮擋特征圖中對最后分類結(jié)果產(chǎn)生決定性影響的部分。
圖3 ASDN網(wǎng)絡(luò)生成掩碼
(1) 網(wǎng)絡(luò)架構(gòu)。本文使用標準的Faster RCNN算法框架,包括RPN網(wǎng)絡(luò)和ROI池化層。為了減少計算量,ASDN網(wǎng)絡(luò)與Faster RCNN基礎(chǔ)網(wǎng)絡(luò)共享卷積層和ROI池化層。如圖4所示,ASDN網(wǎng)絡(luò)中包含兩個獨立于Faster RCNN算法的全連接層,用來生成Mask掩碼。
圖4 ASDN網(wǎng)絡(luò)架構(gòu)
(2) 模型預訓練。在將ASDN網(wǎng)絡(luò)與Faster RCNN網(wǎng)絡(luò)聯(lián)合起來訓練之前,需要單獨對Faster RCNN網(wǎng)絡(luò)進行預訓練,本文中的訓練方法采用分步訓練法。首先單獨對Faster RCNN網(wǎng)絡(luò)迭代訓練10 000次,以此得到一個具有初步認知能力的目標檢測網(wǎng)絡(luò)。之后固定Faster RCNN網(wǎng)絡(luò)的所有層,將ASDN網(wǎng)絡(luò)融入進去,單獨訓練ASDN網(wǎng)絡(luò)。
(3)
使用上述的損失函數(shù)訓練ASDN 10 000次,這樣能夠讓ASDN網(wǎng)絡(luò)學習到哪一部分特征對于分類是重要的。
圖5 ASDN掩碼投影至原圖
(4) 聯(lián)合訓練。在分別對Faster RCNN網(wǎng)絡(luò)和ASDN網(wǎng)絡(luò)分開訓練10 000次之后,將ASDN網(wǎng)絡(luò)和Faster RCNN模型聯(lián)合起來進行訓練15 000次,將兩個網(wǎng)絡(luò)的損失函數(shù)整合到一起。在每次迭代過程中,將損失函數(shù)的誤差反向傳播到兩個網(wǎng)絡(luò)中共同更新權(quán)重。在每次正向傳播過程中,ASDN網(wǎng)絡(luò)針對ROI池化層得到的每個候選區(qū)域的特征生成同樣尺寸的Mask掩碼,之后根據(jù)掩碼對特征進行遮擋。然后將遮擋后的特征送入分類器進行類別分類和包圍框坐標回歸。在不增加太多層的情況下,僅僅修改了分類器的輸入特征的某一些特征值,而不改變其大小。且通過這種方法,在特征圖空間上生成了更多的“難”樣本。
我們分別在PASCAL VOC 2007和PASCAL VOC 2012數(shù)據(jù)集上進行對比實驗,結(jié)果如表1所示。對于原始的Faster RCNN算法,實驗中從RPN網(wǎng)絡(luò)選擇300個候選區(qū)域。結(jié)果表明,在VOC 2007數(shù)據(jù)集上,平均精度(mAP)由原來的69.9%提升至72.1%;在VOC 2007和VOC 2012聯(lián)合數(shù)據(jù)集上,平均精度由原來的73.2%提升至74.5%。
表1 PASCAL VOC 2007和PASCAL VOC 2012結(jié)果
為了對比ASDN網(wǎng)絡(luò)在各個類別上的性能提升,本文針對VOC數(shù)據(jù)集的20個類別分別做了實驗,結(jié)果如表2所示。與表1類似,候選區(qū)域的數(shù)量以及數(shù)據(jù)集的選擇都是一樣的??梢钥闯?,VOC數(shù)據(jù)集的各個類別上,融合了對抗網(wǎng)絡(luò)的檢測算法都有不同程度的精度提升。
表2 VOC數(shù)據(jù)集各個類別上檢測精度(候選區(qū)域:300)%
本文提出一種基于對抗網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的目標檢測算法,在不改變當前的數(shù)據(jù)集的情況下,使用對抗網(wǎng)絡(luò)得到遮擋的特征圖,通過對抗網(wǎng)絡(luò)與分類網(wǎng)絡(luò)互相對抗學習提高算法的精度。相比在原圖上生成新的像素,本文選擇遮擋特征圖上某些特征值來達到遮擋的效果。實驗表明,融合對抗網(wǎng)絡(luò)的Faster RCNN算法在VOC數(shù)據(jù)集上的檢測性能有顯著提升。