肖振久,孔祥旭,宗佳旭,楊玥瑩
遼寧工程技術大學 軟件學院,遼寧 葫蘆島 125105
現代目標檢測算法是基于卷積神經網絡(Convolutional Neural Networks,CNN)開發的,主要分為兩類:兩階段目標檢測算法[1]和單階段目標檢測算法[2]。兩階段目標檢測算法中,在第一階段預先生成目標候選框提高了檢測精度,例如在目前具有挑戰性的PASCAL VOC[3]和COCO基準[4]上,但是降低了目標檢測的速度。相比之下,單階段目標檢測算法跳過了生成目標候選框的步驟,為了實現在圖像全局檢索目標,單階段目標檢測算法在每個空間位置都使用了一組密集的固定采樣網格,例如多個“錨框”[5],單階段目標檢測算法提高了檢測速度,但是檢測精度較差。類別不平衡被認為是這種檢測精度差距的來源。兩階段方法通過根據第一階段的候選框生成來過濾大部分的負樣本避免了正負樣本不平衡問題(例如RPN[5]、Selective Search[6]、Edge Boxes[7]和DeepMask[8])。并在第二階段,使用正負樣本固定比率[9]或在線困難樣本挖掘(Online Hard Example Mining,OHEM)[10]等方法,最終平衡訓練數據。盡管兩階段目標檢測算法取得了成功,但受到檢測速度的制約,不能在實際生活中得到廣泛應用。
對于單階段目標檢測算法來說,因為其檢測速度更快,具有更大的實用性,實現高精度檢測成為當前最需要解決的問題,問題所面臨的難點在于:在單階段目標檢測算法中,卷積神經網絡訓練大量的采樣區域時,會導致正樣本數量較少而負樣本數量較多,同時數據集中背景部分占了整個圖像的大部分,其中大多數很容易分類。這意味著隨著訓練的進行,模型傾向于由簡單樣本主導,這些樣本會稀釋模型在訓練過程中的有效梯度并對參數的更新貢獻很小。為解決上述問題,可以利用聚焦損失函數來聚焦于對訓練過程貢獻大的樣本,作為解決類別不平衡問題和提高目標檢測算法精度的杠桿。早期的單階段目標檢測算法使用的是靜態損失函數,損失函數的超參數在模型訓練時沒有改變。為緩解正負樣本不平衡問題,在RetinaNet[11]中,提出了一個新的損失函數Focal Loss。引入加權因子α來平衡正負樣本,根據不同正負樣本的相對頻率對損失進行加權。除此之外,還引入了調制因子γ來控制訓練數據中難易樣本的不平衡。
對于正負樣本和難易樣本的不平衡問題,Focal Loss通過修改交叉熵損失函數來解決這個問題。然而,Focal Loss采用了兩個超參數,需要進行大量的調整。它是一種靜態損失,不適應數據分布的變化,從而不能隨著訓練過程的變化而變化。為解決上述問題,本文在Focal Loss基礎上提出一種新的自適應聚焦損失函數,即Adaptive Focal Loss(AFL)。AFL是為數據不平衡的情況設計的,對原有Focal Loss中的超參數α和γ分別做出了改進,一方面提出了能夠自適應動態平衡正負樣本的加權因子,該加權因子可以根據不同批次正負樣本的數量分別對正負樣本進行加權,實現了隨著訓練自適應改變正負樣本的權重,動態地平衡正負樣本。另一方面提出了能夠自適應地懲罰簡單樣本,而不減少困難樣本損失的調制因子,讓損失函數聚焦在困難樣本的訓練,該調制因子可以隨著訓練進度動態設置不同樣本的權重來將模型集中在困難樣本上,并減少無數容易降低模型性能的樣本的負面影響。
利用CNN檢測物體的想法可以追溯到1998年,當時Lecun等[12]將最初的CNN分類方法擴展到檢測圖像中物體的能力。這種網絡變換后來被稱為全卷積網絡(Fully Convolutional Network,FCN)[13],它隱式地模擬了網絡結構中的滑動窗口。特別是在2012年Krizhevsky等[14]完成了AlexNet之后,目標檢測算法的準確性有了很大的提高,深度神經網絡開始主導計算機視覺中的目標檢測和其他各種任務。隨著神經網絡結構的發展,目標檢測算法也在不斷進步,逐漸分為兩個主要方向:兩階段目標檢測算法和單階段目標檢測算法。
應用于經典目標檢測方法的兩階段框架由來已久。兩階段目標檢測算法將此框架應用到CNN架構中。R-CNN[9]率先在第一階段使用CNN作為特征提取器,然后在第二階段使用支持向量機(Support Vector Machine,SVM)進行分類任務。之后,Fast R-CNN[15]在第二階段對分類器升級為卷積神經網絡,大大提高了分類的準確性。Faster R-CNN[5]創造性地提出了候選框機制,使目標檢測系統成為一個完整的神經網絡結構,隨后文獻[16]對這種結構提出了許多的擴展。
單階段目標檢測算法通常在卷積神經網絡中完成特征提取、目標定位和目標分類。OverFeat[17]是最早的單階段目標檢測算法之一。SSD[2,18]和YOLO[19-21]對許多想法進行了研究,例如錨框和兩階段目標檢測算法的特征金字塔。最近的工作RetinaNet[11],因其出色的結構和高效率而受到了廣泛的關注。
目標檢測中的不平衡問題受到了廣泛的關注,特別是類別不平衡[22]。對于兩階段目標檢測算法,由于候選框機制[5],通過一些常見的采樣方發[5,10]可以更好地解決此問題。盡管這些采樣方法可以應用于單階段目標檢測算法,但是由于在訓練過程中容易分類的背景樣本占主導地位,它們的效率仍然不高[11]。為了提高訓練效率,提出了多種挖掘難負樣本的方法[2,10]。另一個有影響的方法是修改損失函數,Bulo等[23]提出了的損失函數,即Loss Max Pooling,來消除長尾分布的數據集對訓練的影響。Liu等[2]將加權因子α平衡整合到交叉熵損失中,根據不同類別的頻率來對損失加權。Lin等[11]提出的Focal Loss降低了簡單負樣本的權重,而困難樣本則不受影響。上述方法認為,由于從次要類中學到的特征較差,次要類的樣本應該比主要類的樣本有更高的損失。Focal Loss降低負樣本和簡單樣本的損失權重來解決正負樣本和難易樣本不平衡,Huber損失[24]降低誤差較大的困難樣本的損失權重來減少離群值的貢獻。最近的工作“梯度協調機制”[25]也考慮了困難樣本的危害性,但它基于梯度的統計分布,而不是損失的統計分布。同時,如文獻[25]中所述,梯度的最佳分布尚不清楚。在本文中,還是考慮了重塑損失函數的想法,隨著訓練的進行自適應的對難易樣本進行加權并動態的對正負樣本加權。
損失函數作為每個目標檢測算法的一個關鍵部分,通常由兩部分組成,一部分用于目標分類的損失函數,另一部分用于目標位置回歸。對于分類損失,通常使用Softmax交叉熵損失函數[17-18,20]或Sigmoid交叉熵損失函數[11]。
Softmax交叉熵損失函數定義如下:

式中,p是一個向量,表示網絡用于多類預測的估計概率,y也是一個獨熱真實標簽向量。因為y是獨熱標簽,所以定義pcorrect為真實類的預測概率。p的元素是pi,由Softmax操作生成:

Sigmoid交叉熵損失函數定義如下:

式中,p是類別的預測概率,由Sigmoid函數生成:

對于目標位置回歸損失函數,通常使用L2損失函數[19],平滑L2損失函數[2]或類似的平滑L1損失函數[18]。回歸損失函數的修正不是本文的目的,本文遵循Retina-Net[11]采用平滑的L1損失函數。
在目標檢測中單階段目標檢測運行速度較快,但是受數據集中難易樣本和正負樣本的影響較大,其精度低于兩階段目標檢測。為解決上述問題,Lin等[11]提出了Focal Loss損失函數。Focal Loss是應用在傳統的Sigmoid交叉熵損失函數式(4)上建立的,為了便于說明,網絡分配給正樣本或負樣本的概率可以統一為pcorrect:

通過上述公式可將Sigmoid交叉熵損失函數式(4)簡化為:

Focal Loss最主要的貢獻是損失可以用動態因子ω進行加權,該動態因子的定義使網絡中的難易樣本得以平衡:

式中,動態因子ω由兩個變量pcorrect和γ來決定,前者是模型估計真實標簽的預測概率值,后者是調制因子。其中pcorrect的范圍是[0,1],用于量化樣本的分類難度。γ的范圍是[0,∞)用于調節難易樣本數量不平衡。對于簡單正樣本,當pcorrect足夠大時(pcorrect?0.5),則對應的樣本分類較好,通過增大γ,會減小,減輕了損失的權重,降低簡單正樣本對損失的影響。相反,當pcorrect較小時(pcorrect?0.5),通過增大γ,會減小,減輕了損失的權重,降低簡單負樣本對損失的影響。
除了減少困難樣本和簡單樣本之間的不平衡,Focal Loss還集成了一個加權因子αc,用于解決正樣本和負樣本之間的類別不平衡:

式中,α是正樣本的加權因子,而1-α是負樣本的加權因子,α可以通過不同正負樣本相對的頻率來設置。α的取值范圍是[0,1],如果正樣本的數量大于負樣本的數量,那么α應該小于0.5,保護樣本少的類,而多懲罰樣本多的類。最后,Focal Loss可以定義為:

直觀上看,Focal Loss通過控制αc解決了正負樣本不平衡的問題,通過控制γ解決了目標檢測中難易樣本不平衡的問題。但是式(10)所示αc和γ被設置為兩個超參數,在求解目標檢測模型最優化問題的時候,需要對損失函數進行大量的實驗,這無疑大量消耗了計算機的時間資源和空間資源。根據Lin等[11]通過大量實驗的經驗當α取0.25,γ取2時實驗效果最佳。本文為解決上述問題,在Focal Loss的基礎上引入了自適應的加權因子和自適應的調制因子,使現有的模型可以自適應地去適合各類不同的數據集。
在單階段目標檢測算法中通常會產生高達10萬的候選目標,其中只有少數正樣本,正負樣本數量出現明顯差別。為了解決正負樣本不平衡的問題,Lin等[11]在Focal Loss中加入了加權因子α(式(9)),可以用作調節正負樣本數量,更大的α賦予數量少的正樣本,讓損失函數不受負樣本數量過多的影響。但是加權因子α在Focal Loss中的值的選擇,很大程度上依賴于研究人員的先驗經驗,為了有效處理正負樣本不平衡的問題,以及無需手動調節超參數α來平衡正負樣本,Wang等[26]提出W-CEL函數是一種動態平衡正負樣本問題的方法,并得到了廣泛的應用。不同于最初的Focal Loss中α的定義,本文將改進了α定義為與W-CEL函數類似的加權因子如下:

式中,P定義一個批量標簽中為“1”的總數,N為“0”的總數。y表示標簽的每個元素。通過每個標簽中“0”和“1”的統計量,可以自適應每批量的正負樣本來動態平衡。因此AFL加入自適應的加權因子α定義如下:

在Focal loss損失函數中,動態因子ω或調制因子γ將直接影響神經網絡梯度下降的過程,修改調制因子γ來修正模型對不同樣本的關注情況。通過式(10)可以得出網絡變量net的導數可以揭示權重ω在導數中保持不變。

式中,當γ選擇的數值過高時,例如γ等于5,Focal Loss將聚焦在表現不佳的樣本,但是忽視了良好樣本的訓練,最終將造成模型整體精度偏低。當γ選擇數值過低時,例如γ等于0,Focal Loss損失將退化成交叉熵損失,則通過損失無法動態地平衡不同樣本。在復雜的任務上,尤其是當數據不平衡時,使用定值的調制因子將使網絡無法學習問題,網絡很容易被占優勢的數據淹沒。
本文提出的自適應的調制因子可以在訓練過程中按照模型不同階段的需求,進行不同的調節,克服了Focal Loss選擇固定γ的限制。從而也避免了在訓練后期所有樣本表現良好的情況下,因為損失值過低造成提前收斂,使網絡不能達到最優值。在模型訓練初期,因存在樣本不平衡的問題導致模型對不同類別的樣本預測存在偏差,此時不同類別樣本在模型中預測值的期望也各不相同,針對期望值較小的類別,希望增加訓練樣本的權重,使模型在訓練的過程中可以均衡訓練各種不同的樣本量的樣本。本文決定根據真實標簽的預測概率pcorrect對訓練進度進行建模。如式(14)所示,計算了在不同階段各類真實標簽的期望概率。

式中,pcorrect的期望概率可以通過計算訓練批次的pcorrect上的平均值來近似。在小批量訓練的情況下,建議使用指數平滑法。在實驗中,通過=0.95·old+0.05·new平滑可以使AFL的效果達到最優。
由上文可知,在各批次中期望概率為p?correct,并且希望當面對期望概率較低的類別時網絡獲取較大的注意力,隨著期望概率的增加其關注度逐漸降低,由此定義了自適應的調制因子γ,如下式所示:



圖1 不同算法的權重變化情況Fig.1 Weight changes of different algorithms
如式(16)所示,為AFL最終表現形式,如果將AFL算法應用于實際問題,需要定義聚焦的損失函數L和定義的計算策略。對于單目標分類,損失函數應該是式(1)中的Softmax交叉熵損失函數LCE(softmax),利用計算γ可以通過式(15)來完成。所需的應使用指數平滑效果最好。
在多目標分類的情況下,損失函數應該是式(7)中的Sigmoid交叉熵損失函數LCE(sigmoid)。利用計算γ可以通過式(15)來完成。的計算比單目標分類的更復雜一些。當一個類別處于正類的情況下,概率pcorrect被定義為p,當一個類別處于非正類的情況下,概率pcorrect被定義為1-p。計算的最佳方法取決于要解決的問題,并不像簡單的平均pcorrect那么容易。由于在多目標分類任務中,對于單個樣本中通常只有少數類別同時處于正類,因此pcorrect的平均值將由負類占主導地位。
AFL通過對Focal Loss的改進,參數α和γ解決了不平衡問題的兩個方面,并在學習模型中取得了良好的性能。最重要的是,AFL將更適合于具有挑戰數據庫中不平衡的問題。
實驗仿真在Pytorch1.4框架,訓練及測試的計算機硬件配置CPU為Intel XeonE5-2620 V4,GPU為NVDIA GeForce GTX 1080Ti,操作系統為Ubuntu16.04下進行的。
改進的Focal Loss通過600×600輸入的訓練和測試,批量大小設為64,共進行了60 000次迭代并采用了熱身策略來提高學習速度。初始學習率設為0.01,權重衰減值設為0.000 5,在網絡迭代20 000次后學習率設為0.001,網絡迭代50 000次后學習率設為0.000 1。本文相關實驗都采用了與上述相同的設置并在相同的訓練集上進行訓練。首先,訓練了原始Focal Loss算法。在實驗中,設置Focal Loss[11]中建議的α=0.25,γ=2。然后對本文提出的AFL進行了消融性實驗,完成了改進的Focal Loss算法的訓練和測試。
在本文中,關于改進的Focal Loss算法都是在標準化數據集為PASCAL VOC2007和VOC2012[3]上實現的。模型訓練階段,使用VOC2007訓練驗證集和VOC2012訓練驗證集進行訓練,測試階段對VOC2007測試集和VOC2012測試集分別進行測試。VOC數據集由20個對象類別組成,帶有注釋的真實標簽位置和每個圖像的相應類別信息。
準確性是指目標檢測算法對于不同種類目標的檢測準確率,是考察目標檢測算法優劣的一項重要指標。為了評價目標檢測算法的準確性最常用的指標是通過計算模型在測試集上的平均準確率(AP)和所有類別的平均準確率均值(mAP)來評價模型的好壞。AP就是精確率(precision)/召回率(recall)曲線下面的面積,計算公式如下式所示:

式中,p表示precision,r表示recall,p是一個以r為參數的函數。TP(True Positive)表示被模型預測為正值的正樣本,FP(False Positive)表示被模型預測為負值的正樣本,FN(False Negative)表示被模型預測為負值的負樣本。mAP是各個類別AP的平均值,值越高表示模型在全部類別中檢測的綜合性能越高。
本文通過引入自適應的加權因子和自適應的調制因子,解決了Focal Loss中依賴人工調節超參數的問題,提高了模型的訓練效率。為驗證本文算法的有效性,通過在Focal Loss損失函數中分別添加自適應的加權因子和自適應的調制因子,為本文算法做了消融性實驗,在訓練階段,通過判斷目標預測值是否小于某一閾值來計算目標損失,使用0.5閾值來訓練網絡。并在VOC2007數據集上做了相應的測試,其實驗結果使用0.5的閾值對20類對象的平均準確率均值(mAP)如表1所示。

表1 不同算法在VOC2007數據集的實驗結果Table 1 Experimental results of different algorithms on VOC2007 dataset
通過實驗可知,添加自適應的加權因子和添加自適應的調制因子對模型均有不同程度的提高,并且使用添加自適應的加權因子和添加自適應的調制因子的AFL模型相比原始Focal Loss訓練的模型提升了3.45個百分點。究其原因,AFL可以根據不同的訓練數據動態的調整正負樣本之間的關系和難易樣本之間的關系,可以使訓練數據得到更有效的利用。
為了評估本文的AFL算法在目標檢測中的有益影響,在VOC2007的20個類別上比較了AFL和原始的Focal Loss的AP值。實驗結果如表2可知,Focal Loss和AFL結果對比,各類AP值提高了1~6個百分點。表明了模型在VOC2007測試集上,其中鳥、盆栽等類別為訓練數據中較難訓練的樣本,因為其數據量少,且目標尺寸相對較小,故在神經網絡的訓練中對模型參數的影響較小。相比Focal Loss,AFL通過自適應的調制因子可以更好地聚焦在困難樣本的訓練上,并隨訓練進度改變實時修改模型對不同樣本的關注度,故AFL在困難樣本的識別上要優于Focal Loss。另外,AFL通過建立自適應的加權因子,相比Focal Loss可以更好地適應數據中不同程度的正負樣本,通過上述兩處改進,AFL的整體效果優于Focal Loss。

表2 不同算法各類的AP值對比情況Table 2 Comparison of AP values of different algorithms%
為證明AFL的泛化性和有效性,除了在VOC2007數據集測試,本文繼續測試了模型在VOC2012數據集上的mAP值,其實驗結果如表3所示。其中AFL添加了自適應的加權因子和自適應的調制因子,由表3可知AFL算法在數據集VOC2012的測試效果依然優于Focal Loss,其結果提升了1.87個百分點。由此可知本文所建立的算法模型具有良好的泛化性,在多個不同的數據集上均可取得較好的結果。

表3 不同算法在VOC2012數據集的實驗結果Table 3 Experimental results of different algorithms on VOC2012 dataset
為了進一步直觀地評估本文的算法,提供了AFL與原始的Focal Loss進行了定性比較。圖2顯示了原始的Focal Loss和AFL在VOC2012測試集上的檢測目標比較,不同顏色的盒子代表不同的類別。將置信度閾值設置為0.5。其中圖2(a)、(c)為Focal Loss檢測結果圖,(b)、(d)為AFL檢測結果圖。觀察對比可以看出,AFL比原始Focal Loss性能更好。減少了對目標檢測中對象的遺漏,降低了對目標檢測過程中的錯誤率,具有更強的檢測和識別物體的能力。并且發現對于小目標的檢測也有優異的效果。這些改進是由于本文提出的針對正負樣本和難易樣本更平衡的AFL損失函數,使得訓練過程更平滑地收斂到更好的模型。

圖2 不同算法在VOC2012數據集的效果圖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訓練驗證集和VOC2012訓練驗證集進行訓練,然后用VOC2007測試集進行測試。表4顯示了實驗結果,與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測試數據集在不同算法的比較Table 4 Comparison of different algorithms on VOC2007 test dataset
Focal Loss損失函數減少了正負樣本不平衡和難易樣本不平衡的影響,但仍然依賴于手動調節超參數α平衡和為任務選擇一個調制因子γ,常數α和γ不能使正負樣本的平衡和聚焦困難樣本適應當前的訓練進度。本文提出了克服這一問題的方法,通過計算依賴于訓練進度的γ能夠在訓練過程中轉移其聚焦的損失來有效地進行困難樣本挖掘,以及通過計算每批次正負類樣本來改進了加權因子α的定義從而實現自適應的動態平衡正負樣本。最后在VOC2007測試集和VOC2012測試集進行了一系列的實驗,并對AFL與原始的Focal Loss進行了性能的比較。結果表明,AFL優于原始的Focal Loss,并且發現對小目標的檢測也有不錯的結果。后續將進一步研究對提高小目標檢測精度的方法,以及對在更復雜的數據集上有效提高目標檢測精度的方法。