肖振久,孔祥旭,宗佳旭,楊玥瑩
遼寧工程技術(shù)大學(xué) 軟件學(xué)院,遼寧 葫蘆島 125105
現(xiàn)代目標檢測算法是基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)開發(fā)的,主要分為兩類:兩階段目標檢測算法[1]和單階段目標檢測算法[2]。兩階段目標檢測算法中,在第一階段預(yù)先生成目標候選框提高了檢測精度,例如在目前具有挑戰(zhàn)性的PASCAL VOC[3]和COCO基準[4]上,但是降低了目標檢測的速度。相比之下,單階段目標檢測算法跳過了生成目標候選框的步驟,為了實現(xiàn)在圖像全局檢索目標,單階段目標檢測算法在每個空間位置都使用了一組密集的固定采樣網(wǎng)格,例如多個“錨框”[5],單階段目標檢測算法提高了檢測速度,但是檢測精度較差。類別不平衡被認為是這種檢測精度差距的來源。兩階段方法通過根據(jù)第一階段的候選框生成來過濾大部分的負樣本避免了正負樣本不平衡問題(例如RPN[5]、Selective Search[6]、Edge Boxes[7]和DeepMask[8])。并在第二階段,使用正負樣本固定比率[9]或在線困難樣本挖掘(Online Hard Example Mining,OHEM)[10]等方法,最終平衡訓(xùn)練數(shù)據(jù)。盡管兩階段目標檢測算法取得了成功,但受到檢測速度的制約,不能在實際生活中得到廣泛應(yīng)用。
對于單階段目標檢測算法來說,因為其檢測速度更快,具有更大的實用性,實現(xiàn)高精度檢測成為當(dāng)前最需要解決的問題,問題所面臨的難點在于:在單階段目標檢測算法中,卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練大量的采樣區(qū)域時,會導(dǎo)致正樣本數(shù)量較少而負樣本數(shù)量較多,同時數(shù)據(jù)集中背景部分占了整個圖像的大部分,其中大多數(shù)很容易分類。這意味著隨著訓(xùn)練的進行,模型傾向于由簡單樣本主導(dǎo),這些樣本會稀釋模型在訓(xùn)練過程中的有效梯度并對參數(shù)的更新貢獻很小。為解決上述問題,可以利用聚焦損失函數(shù)來聚焦于對訓(xùn)練過程貢獻大的樣本,作為解決類別不平衡問題和提高目標檢測算法精度的杠桿。早期的單階段目標檢測算法使用的是靜態(tài)損失函數(shù),損失函數(shù)的超參數(shù)在模型訓(xùn)練時沒有改變。為緩解正負樣本不平衡問題,在RetinaNet[11]中,提出了一個新的損失函數(shù)Focal Loss。引入加權(quán)因子α來平衡正負樣本,根據(jù)不同正負樣本的相對頻率對損失進行加權(quán)。除此之外,還引入了調(diào)制因子γ來控制訓(xùn)練數(shù)據(jù)中難易樣本的不平衡。
對于正負樣本和難易樣本的不平衡問題,F(xiàn)ocal Loss通過修改交叉熵損失函數(shù)來解決這個問題。然而,F(xiàn)ocal Loss采用了兩個超參數(shù),需要進行大量的調(diào)整。它是一種靜態(tài)損失,不適應(yīng)數(shù)據(jù)分布的變化,從而不能隨著訓(xùn)練過程的變化而變化。為解決上述問題,本文在Focal Loss基礎(chǔ)上提出一種新的自適應(yīng)聚焦損失函數(shù),即Adaptive Focal Loss(AFL)。AFL是為數(shù)據(jù)不平衡的情況設(shè)計的,對原有Focal Loss中的超參數(shù)α和γ分別做出了改進,一方面提出了能夠自適應(yīng)動態(tài)平衡正負樣本的加權(quán)因子,該加權(quán)因子可以根據(jù)不同批次正負樣本的數(shù)量分別對正負樣本進行加權(quán),實現(xiàn)了隨著訓(xùn)練自適應(yīng)改變正負樣本的權(quán)重,動態(tài)地平衡正負樣本。另一方面提出了能夠自適應(yīng)地懲罰簡單樣本,而不減少困難樣本損失的調(diào)制因子,讓損失函數(shù)聚焦在困難樣本的訓(xùn)練,該調(diào)制因子可以隨著訓(xùn)練進度動態(tài)設(shè)置不同樣本的權(quán)重來將模型集中在困難樣本上,并減少無數(shù)容易降低模型性能的樣本的負面影響。
利用CNN檢測物體的想法可以追溯到1998年,當(dāng)時Lecun等[12]將最初的CNN分類方法擴展到檢測圖像中物體的能力。這種網(wǎng)絡(luò)變換后來被稱為全卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)[13],它隱式地模擬了網(wǎng)絡(luò)結(jié)構(gòu)中的滑動窗口。特別是在2012年Krizhevsky等[14]完成了AlexNet之后,目標檢測算法的準確性有了很大的提高,深度神經(jīng)網(wǎng)絡(luò)開始主導(dǎo)計算機視覺中的目標檢測和其他各種任務(wù)。隨著神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的發(fā)展,目標檢測算法也在不斷進步,逐漸分為兩個主要方向:兩階段目標檢測算法和單階段目標檢測算法。
應(yīng)用于經(jīng)典目標檢測方法的兩階段框架由來已久。兩階段目標檢測算法將此框架應(yīng)用到CNN架構(gòu)中。R-CNN[9]率先在第一階段使用CNN作為特征提取器,然后在第二階段使用支持向量機(Support Vector Machine,SVM)進行分類任務(wù)。之后,F(xiàn)ast R-CNN[15]在第二階段對分類器升級為卷積神經(jīng)網(wǎng)絡(luò),大大提高了分類的準確性。Faster R-CNN[5]創(chuàng)造性地提出了候選框機制,使目標檢測系統(tǒng)成為一個完整的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),隨后文獻[16]對這種結(jié)構(gòu)提出了許多的擴展。
單階段目標檢測算法通常在卷積神經(jīng)網(wǎng)絡(luò)中完成特征提取、目標定位和目標分類。OverFeat[17]是最早的單階段目標檢測算法之一。SSD[2,18]和YOLO[19-21]對許多想法進行了研究,例如錨框和兩階段目標檢測算法的特征金字塔。最近的工作RetinaNet[11],因其出色的結(jié)構(gòu)和高效率而受到了廣泛的關(guān)注。
目標檢測中的不平衡問題受到了廣泛的關(guān)注,特別是類別不平衡[22]。對于兩階段目標檢測算法,由于候選框機制[5],通過一些常見的采樣方發(fā)[5,10]可以更好地解決此問題。盡管這些采樣方法可以應(yīng)用于單階段目標檢測算法,但是由于在訓(xùn)練過程中容易分類的背景樣本占主導(dǎo)地位,它們的效率仍然不高[11]。為了提高訓(xùn)練效率,提出了多種挖掘難負樣本的方法[2,10]。另一個有影響的方法是修改損失函數(shù),Bulo等[23]提出了的損失函數(shù),即Loss Max Pooling,來消除長尾分布的數(shù)據(jù)集對訓(xùn)練的影響。Liu等[2]將加權(quán)因子α平衡整合到交叉熵損失中,根據(jù)不同類別的頻率來對損失加權(quán)。Lin等[11]提出的Focal Loss降低了簡單負樣本的權(quán)重,而困難樣本則不受影響。上述方法認為,由于從次要類中學(xué)到的特征較差,次要類的樣本應(yīng)該比主要類的樣本有更高的損失。Focal Loss降低負樣本和簡單樣本的損失權(quán)重來解決正負樣本和難易樣本不平衡,Huber損失[24]降低誤差較大的困難樣本的損失權(quán)重來減少離群值的貢獻。最近的工作“梯度協(xié)調(diào)機制”[25]也考慮了困難樣本的危害性,但它基于梯度的統(tǒng)計分布,而不是損失的統(tǒng)計分布。同時,如文獻[25]中所述,梯度的最佳分布尚不清楚。在本文中,還是考慮了重塑損失函數(shù)的想法,隨著訓(xùn)練的進行自適應(yīng)的對難易樣本進行加權(quán)并動態(tài)的對正負樣本加權(quán)。
損失函數(shù)作為每個目標檢測算法的一個關(guān)鍵部分,通常由兩部分組成,一部分用于目標分類的損失函數(shù),另一部分用于目標位置回歸。對于分類損失,通常使用Softmax交叉熵損失函數(shù)[17-18,20]或Sigmoid交叉熵損失函數(shù)[11]。
Softmax交叉熵損失函數(shù)定義如下:
式中,p是一個向量,表示網(wǎng)絡(luò)用于多類預(yù)測的估計概率,y也是一個獨熱真實標簽向量。因為y是獨熱標簽,所以定義pcorrect為真實類的預(yù)測概率。p的元素是pi,由Softmax操作生成:
Sigmoid交叉熵損失函數(shù)定義如下:
式中,p是類別的預(yù)測概率,由Sigmoid函數(shù)生成:
對于目標位置回歸損失函數(shù),通常使用L2損失函數(shù)[19],平滑L2損失函數(shù)[2]或類似的平滑L1損失函數(shù)[18]?;貧w損失函數(shù)的修正不是本文的目的,本文遵循Retina-Net[11]采用平滑的L1損失函數(shù)。
在目標檢測中單階段目標檢測運行速度較快,但是受數(shù)據(jù)集中難易樣本和正負樣本的影響較大,其精度低于兩階段目標檢測。為解決上述問題,Lin等[11]提出了Focal Loss損失函數(shù)。Focal Loss是應(yīng)用在傳統(tǒng)的Sigmoid交叉熵損失函數(shù)式(4)上建立的,為了便于說明,網(wǎng)絡(luò)分配給正樣本或負樣本的概率可以統(tǒng)一為pcorrect:
通過上述公式可將Sigmoid交叉熵損失函數(shù)式(4)簡化為:
Focal Loss最主要的貢獻是損失可以用動態(tài)因子ω進行加權(quán),該動態(tài)因子的定義使網(wǎng)絡(luò)中的難易樣本得以平衡:
式中,動態(tài)因子ω由兩個變量pcorrect和γ來決定,前者是模型估計真實標簽的預(yù)測概率值,后者是調(diào)制因子。其中pcorrect的范圍是[0,1],用于量化樣本的分類難度。γ的范圍是[0,∞)用于調(diào)節(jié)難易樣本數(shù)量不平衡。對于簡單正樣本,當(dāng)pcorrect足夠大時(pcorrect?0.5),則對應(yīng)的樣本分類較好,通過增大γ,會減小,減輕了損失的權(quán)重,降低簡單正樣本對損失的影響。相反,當(dāng)pcorrect較小時(pcorrect?0.5),通過增大γ,會減小,減輕了損失的權(quán)重,降低簡單負樣本對損失的影響。
除了減少困難樣本和簡單樣本之間的不平衡,F(xiàn)ocal Loss還集成了一個加權(quán)因子αc,用于解決正樣本和負樣本之間的類別不平衡:
式中,α是正樣本的加權(quán)因子,而1-α是負樣本的加權(quán)因子,α可以通過不同正負樣本相對的頻率來設(shè)置。α的取值范圍是[0,1],如果正樣本的數(shù)量大于負樣本的數(shù)量,那么α應(yīng)該小于0.5,保護樣本少的類,而多懲罰樣本多的類。最后,F(xiàn)ocal Loss可以定義為:
直觀上看,F(xiàn)ocal Loss通過控制αc解決了正負樣本不平衡的問題,通過控制γ解決了目標檢測中難易樣本不平衡的問題。但是式(10)所示αc和γ被設(shè)置為兩個超參數(shù),在求解目標檢測模型最優(yōu)化問題的時候,需要對損失函數(shù)進行大量的實驗,這無疑大量消耗了計算機的時間資源和空間資源。根據(jù)Lin等[11]通過大量實驗的經(jīng)驗當(dāng)α取0.25,γ取2時實驗效果最佳。本文為解決上述問題,在Focal Loss的基礎(chǔ)上引入了自適應(yīng)的加權(quán)因子和自適應(yīng)的調(diào)制因子,使現(xiàn)有的模型可以自適應(yīng)地去適合各類不同的數(shù)據(jù)集。
在單階段目標檢測算法中通常會產(chǎn)生高達10萬的候選目標,其中只有少數(shù)正樣本,正負樣本數(shù)量出現(xiàn)明顯差別。為了解決正負樣本不平衡的問題,Lin等[11]在Focal Loss中加入了加權(quán)因子α(式(9)),可以用作調(diào)節(jié)正負樣本數(shù)量,更大的α賦予數(shù)量少的正樣本,讓損失函數(shù)不受負樣本數(shù)量過多的影響。但是加權(quán)因子α在Focal Loss中的值的選擇,很大程度上依賴于研究人員的先驗經(jīng)驗,為了有效處理正負樣本不平衡的問題,以及無需手動調(diào)節(jié)超參數(shù)α來平衡正負樣本,Wang等[26]提出W-CEL函數(shù)是一種動態(tài)平衡正負樣本問題的方法,并得到了廣泛的應(yīng)用。不同于最初的Focal Loss中α的定義,本文將改進了α定義為與W-CEL函數(shù)類似的加權(quán)因子如下:
式中,P定義一個批量標簽中為“1”的總數(shù),N為“0”的總數(shù)。y表示標簽的每個元素。通過每個標簽中“0”和“1”的統(tǒng)計量,可以自適應(yīng)每批量的正負樣本來動態(tài)平衡。因此AFL加入自適應(yīng)的加權(quán)因子α定義如下:
在Focal loss損失函數(shù)中,動態(tài)因子ω或調(diào)制因子γ將直接影響神經(jīng)網(wǎng)絡(luò)梯度下降的過程,修改調(diào)制因子γ來修正模型對不同樣本的關(guān)注情況。通過式(10)可以得出網(wǎng)絡(luò)變量net的導(dǎo)數(shù)可以揭示權(quán)重ω在導(dǎo)數(shù)中保持不變。
式中,當(dāng)γ選擇的數(shù)值過高時,例如γ等于5,F(xiàn)ocal Loss將聚焦在表現(xiàn)不佳的樣本,但是忽視了良好樣本的訓(xùn)練,最終將造成模型整體精度偏低。當(dāng)γ選擇數(shù)值過低時,例如γ等于0,F(xiàn)ocal Loss損失將退化成交叉熵損失,則通過損失無法動態(tài)地平衡不同樣本。在復(fù)雜的任務(wù)上,尤其是當(dāng)數(shù)據(jù)不平衡時,使用定值的調(diào)制因子將使網(wǎng)絡(luò)無法學(xué)習(xí)問題,網(wǎng)絡(luò)很容易被占優(yōu)勢的數(shù)據(jù)淹沒。
本文提出的自適應(yīng)的調(diào)制因子可以在訓(xùn)練過程中按照模型不同階段的需求,進行不同的調(diào)節(jié),克服了Focal Loss選擇固定γ的限制。從而也避免了在訓(xùn)練后期所有樣本表現(xiàn)良好的情況下,因為損失值過低造成提前收斂,使網(wǎng)絡(luò)不能達到最優(yōu)值。在模型訓(xùn)練初期,因存在樣本不平衡的問題導(dǎo)致模型對不同類別的樣本預(yù)測存在偏差,此時不同類別樣本在模型中預(yù)測值的期望也各不相同,針對期望值較小的類別,希望增加訓(xùn)練樣本的權(quán)重,使模型在訓(xùn)練的過程中可以均衡訓(xùn)練各種不同的樣本量的樣本。本文決定根據(jù)真實標簽的預(yù)測概率pcorrect對訓(xùn)練進度進行建模。如式(14)所示,計算了在不同階段各類真實標簽的期望概率。
式中,pcorrect的期望概率可以通過計算訓(xùn)練批次的pcorrect上的平均值來近似。在小批量訓(xùn)練的情況下,建議使用指數(shù)平滑法。在實驗中,通過=0.95·old+0.05·new平滑可以使AFL的效果達到最優(yōu)。
由上文可知,在各批次中期望概率為p?correct,并且希望當(dāng)面對期望概率較低的類別時網(wǎng)絡(luò)獲取較大的注意力,隨著期望概率的增加其關(guān)注度逐漸降低,由此定義了自適應(yīng)的調(diào)制因子γ,如下式所示:
圖1 不同算法的權(quán)重變化情況Fig.1 Weight changes of different algorithms
如式(16)所示,為AFL最終表現(xiàn)形式,如果將AFL算法應(yīng)用于實際問題,需要定義聚焦的損失函數(shù)L和定義的計算策略。對于單目標分類,損失函數(shù)應(yīng)該是式(1)中的Softmax交叉熵損失函數(shù)LCE(softmax),利用計算γ可以通過式(15)來完成。所需的應(yīng)使用指數(shù)平滑效果最好。
在多目標分類的情況下,損失函數(shù)應(yīng)該是式(7)中的Sigmoid交叉熵損失函數(shù)LCE(sigmoid)。利用計算γ可以通過式(15)來完成。的計算比單目標分類的更復(fù)雜一些。當(dāng)一個類別處于正類的情況下,概率pcorrect被定義為p,當(dāng)一個類別處于非正類的情況下,概率pcorrect被定義為1-p。計算的最佳方法取決于要解決的問題,并不像簡單的平均pcorrect那么容易。由于在多目標分類任務(wù)中,對于單個樣本中通常只有少數(shù)類別同時處于正類,因此pcorrect的平均值將由負類占主導(dǎo)地位。
AFL通過對Focal Loss的改進,參數(shù)α和γ解決了不平衡問題的兩個方面,并在學(xué)習(xí)模型中取得了良好的性能。最重要的是,AFL將更適合于具有挑戰(zhàn)數(shù)據(jù)庫中不平衡的問題。
實驗仿真在Pytorch1.4框架,訓(xùn)練及測試的計算機硬件配置CPU為Intel XeonE5-2620 V4,GPU為NVDIA GeForce GTX 1080Ti,操作系統(tǒng)為Ubuntu16.04下進行的。
改進的Focal Loss通過600×600輸入的訓(xùn)練和測試,批量大小設(shè)為64,共進行了60 000次迭代并采用了熱身策略來提高學(xué)習(xí)速度。初始學(xué)習(xí)率設(shè)為0.01,權(quán)重衰減值設(shè)為0.000 5,在網(wǎng)絡(luò)迭代20 000次后學(xué)習(xí)率設(shè)為0.001,網(wǎng)絡(luò)迭代50 000次后學(xué)習(xí)率設(shè)為0.000 1。本文相關(guān)實驗都采用了與上述相同的設(shè)置并在相同的訓(xùn)練集上進行訓(xùn)練。首先,訓(xùn)練了原始Focal Loss算法。在實驗中,設(shè)置Focal Loss[11]中建議的α=0.25,γ=2。然后對本文提出的AFL進行了消融性實驗,完成了改進的Focal Loss算法的訓(xùn)練和測試。
在本文中,關(guān)于改進的Focal Loss算法都是在標準化數(shù)據(jù)集為PASCAL VOC2007和VOC2012[3]上實現(xiàn)的。模型訓(xùn)練階段,使用VOC2007訓(xùn)練驗證集和VOC2012訓(xùn)練驗證集進行訓(xùn)練,測試階段對VOC2007測試集和VOC2012測試集分別進行測試。VOC數(shù)據(jù)集由20個對象類別組成,帶有注釋的真實標簽位置和每個圖像的相應(yīng)類別信息。
準確性是指目標檢測算法對于不同種類目標的檢測準確率,是考察目標檢測算法優(yōu)劣的一項重要指標。為了評價目標檢測算法的準確性最常用的指標是通過計算模型在測試集上的平均準確率(AP)和所有類別的平均準確率均值(mAP)來評價模型的好壞。AP就是精確率(precision)/召回率(recall)曲線下面的面積,計算公式如下式所示:
式中,p表示precision,r表示recall,p是一個以r為參數(shù)的函數(shù)。TP(True Positive)表示被模型預(yù)測為正值的正樣本,F(xiàn)P(False Positive)表示被模型預(yù)測為負值的正樣本,F(xiàn)N(False Negative)表示被模型預(yù)測為負值的負樣本。mAP是各個類別AP的平均值,值越高表示模型在全部類別中檢測的綜合性能越高。
本文通過引入自適應(yīng)的加權(quán)因子和自適應(yīng)的調(diào)制因子,解決了Focal Loss中依賴人工調(diào)節(jié)超參數(shù)的問題,提高了模型的訓(xùn)練效率。為驗證本文算法的有效性,通過在Focal Loss損失函數(shù)中分別添加自適應(yīng)的加權(quán)因子和自適應(yīng)的調(diào)制因子,為本文算法做了消融性實驗,在訓(xùn)練階段,通過判斷目標預(yù)測值是否小于某一閾值來計算目標損失,使用0.5閾值來訓(xùn)練網(wǎng)絡(luò)。并在VOC2007數(shù)據(jù)集上做了相應(yīng)的測試,其實驗結(jié)果使用0.5的閾值對20類對象的平均準確率均值(mAP)如表1所示。
表1 不同算法在VOC2007數(shù)據(jù)集的實驗結(jié)果Table 1 Experimental results of different algorithms on VOC2007 dataset
通過實驗可知,添加自適應(yīng)的加權(quán)因子和添加自適應(yīng)的調(diào)制因子對模型均有不同程度的提高,并且使用添加自適應(yīng)的加權(quán)因子和添加自適應(yīng)的調(diào)制因子的AFL模型相比原始Focal Loss訓(xùn)練的模型提升了3.45個百分點。究其原因,AFL可以根據(jù)不同的訓(xùn)練數(shù)據(jù)動態(tài)的調(diào)整正負樣本之間的關(guān)系和難易樣本之間的關(guān)系,可以使訓(xùn)練數(shù)據(jù)得到更有效的利用。
為了評估本文的AFL算法在目標檢測中的有益影響,在VOC2007的20個類別上比較了AFL和原始的Focal Loss的AP值。實驗結(jié)果如表2可知,F(xiàn)ocal Loss和AFL結(jié)果對比,各類AP值提高了1~6個百分點。表明了模型在VOC2007測試集上,其中鳥、盆栽等類別為訓(xùn)練數(shù)據(jù)中較難訓(xùn)練的樣本,因為其數(shù)據(jù)量少,且目標尺寸相對較小,故在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中對模型參數(shù)的影響較小。相比Focal Loss,AFL通過自適應(yīng)的調(diào)制因子可以更好地聚焦在困難樣本的訓(xùn)練上,并隨訓(xùn)練進度改變實時修改模型對不同樣本的關(guān)注度,故AFL在困難樣本的識別上要優(yōu)于Focal Loss。另外,AFL通過建立自適應(yīng)的加權(quán)因子,相比Focal Loss可以更好地適應(yīng)數(shù)據(jù)中不同程度的正負樣本,通過上述兩處改進,AFL的整體效果優(yōu)于Focal Loss。
表2 不同算法各類的AP值對比情況Table 2 Comparison of AP values of different algorithms%
為證明AFL的泛化性和有效性,除了在VOC2007數(shù)據(jù)集測試,本文繼續(xù)測試了模型在VOC2012數(shù)據(jù)集上的mAP值,其實驗結(jié)果如表3所示。其中AFL添加了自適應(yīng)的加權(quán)因子和自適應(yīng)的調(diào)制因子,由表3可知AFL算法在數(shù)據(jù)集VOC2012的測試效果依然優(yōu)于Focal Loss,其結(jié)果提升了1.87個百分點。由此可知本文所建立的算法模型具有良好的泛化性,在多個不同的數(shù)據(jù)集上均可取得較好的結(jié)果。
表3 不同算法在VOC2012數(shù)據(jù)集的實驗結(jié)果Table 3 Experimental results of different algorithms on VOC2012 dataset
為了進一步直觀地評估本文的算法,提供了AFL與原始的Focal Loss進行了定性比較。圖2顯示了原始的Focal Loss和AFL在VOC2012測試集上的檢測目標比較,不同顏色的盒子代表不同的類別。將置信度閾值設(shè)置為0.5。其中圖2(a)、(c)為Focal Loss檢測結(jié)果圖,(b)、(d)為AFL檢測結(jié)果圖。觀察對比可以看出,AFL比原始Focal Loss性能更好。減少了對目標檢測中對象的遺漏,降低了對目標檢測過程中的錯誤率,具有更強的檢測和識別物體的能力。并且發(fā)現(xiàn)對于小目標的檢測也有優(yōu)異的效果。這些改進是由于本文提出的針對正負樣本和難易樣本更平衡的AFL損失函數(shù),使得訓(xùn)練過程更平滑地收斂到更好的模型。
圖2 不同算法在VOC2012數(shù)據(jù)集的效果圖Fig.2 Effect of different algorithms on VOC2012 dataset
為了驗證和評估本文提出的方法的性能,對本文提出的AFL算法與其他先進的目標檢測算法進行了比較。很容易從各自的文獻獲得SSD[2]、Faster R-CNN[5]、R-FCN[16]、DSSD[18]、YOLOv2[20]、YOLOv2+[20]、R-SSD[27]、RUN2WAY[28]和RUN3WAY[28]的性能。所有的模型首先用VOC2007訓(xùn)練驗證集和VOC2012訓(xùn)練驗證集進行訓(xùn)練,然后用VOC2007測試集進行測試。表4顯示了實驗結(jié)果,與Faster R-CNN[5]和R-FCN[16]相比,AFL提高了4.3個百分點和0.2個百分點。與YOLOv2[20]和YOLOv2+[20]相比,AFL提高了3.9個百分點和2.1個百分點。與SSD[2]、DSSD[18]和R-SSD[27]相比,AFL分別提高了3.6個百分點、2.1個百分點和2.2個百分點。與RUN2WAY[28]和RUN3WAY[28]相比,AFL提高了2.1個百分點和1.5個百分點。從表中可以看出AFL性能最好。
表4 VOC2007測試數(shù)據(jù)集在不同算法的比較Table 4 Comparison of different algorithms on VOC2007 test dataset
Focal Loss損失函數(shù)減少了正負樣本不平衡和難易樣本不平衡的影響,但仍然依賴于手動調(diào)節(jié)超參數(shù)α平衡和為任務(wù)選擇一個調(diào)制因子γ,常數(shù)α和γ不能使正負樣本的平衡和聚焦困難樣本適應(yīng)當(dāng)前的訓(xùn)練進度。本文提出了克服這一問題的方法,通過計算依賴于訓(xùn)練進度的γ能夠在訓(xùn)練過程中轉(zhuǎn)移其聚焦的損失來有效地進行困難樣本挖掘,以及通過計算每批次正負類樣本來改進了加權(quán)因子α的定義從而實現(xiàn)自適應(yīng)的動態(tài)平衡正負樣本。最后在VOC2007測試集和VOC2012測試集進行了一系列的實驗,并對AFL與原始的Focal Loss進行了性能的比較。結(jié)果表明,AFL優(yōu)于原始的Focal Loss,并且發(fā)現(xiàn)對小目標的檢測也有不錯的結(jié)果。后續(xù)將進一步研究對提高小目標檢測精度的方法,以及對在更復(fù)雜的數(shù)據(jù)集上有效提高目標檢測精度的方法。