畢忠勤,單美靜,劉志斌,徐富強
(1.上海電力大學 計算機科學與技術學院, 上海 200090;2.華東政法大學 信息科學與技術系,上海 201620)
目標檢測任務是計算機視覺領域最重要的任務之一,其研究主要用于人臉檢測、安全系統、行人檢測、自動駕駛、車輛檢測以及醫療領域等[1]。在目前已知的研究領域中,要訓練一個好的模型往往需要大量的數據,而人工智能令人印象深刻的特征是能夠僅通過一個或幾個樣本就快速建立對新穎概念的認知的能力。這意味著當前的目標檢測技術還有很大的發展空間。為了提高目標檢測應用的適用性,少樣本目標檢測任務成了當前研究的重點[2]。涉及到少樣本目標檢測的研究起步較早,早期的檢測方法主要有基于模式匹配的方法,即使用小部分的樣本作為模板,使用該樣本在測試樣本中尋找目標,后來也出現過形狀匹配算法,即通過制定的標準來檢測目標之間的相似性,然而傳統的目標檢測算法往往運算量大并且速度緩慢[3]。傳統方法的特點是候選區域幾何特征的選擇,直線特征識別是早期圖像目標的基本特征之一,其檢測算法主要包括:標準霍夫變換(SHT)[4]、Burns[5]方法和LSD[6]方法等。由于霍夫變換對隨機噪聲和特征部分的遮擋具有較高魯棒性,該方法得到了廣泛的運用。而多邊形特征識別是通過候選區域的各邊界端點的圖像二維坐標來進行描述,通過對各相鄰特征點連線即可恢復完整的多邊形信息。該方法的問題是,由于空間環境問題使得邊界特征不完整,從而造成邊界特征描述上的困難。傳統的目標檢測算法取得了很大的進展,但是仍然存在一些問題,例如,基于滑動窗口的區域選擇策略沒有針對性,時間復雜度高,窗口冗余,手工設計的特征對于環境多樣性的變化并沒有很好的魯棒性。
隨著深度學習的發展,基于深度學習的少樣本目標檢測逐漸成為了研究熱點。根據監督機制的不同,基于深度學習的少樣本目標檢測算法主要分為有監督少樣本目標檢測、半監督少樣本目標檢測以及弱監督少樣本目標檢測。有監督少樣本目標檢測主要采用元學習方法、遷移學習方法或者數據增強方法。半監督少樣本目標檢測則主要基于自我訓練或自我監督兩種解決方案。弱監督少樣本目標檢測則主要包括基于主動對抗的方法、多實例學習方法以及基于度量學習的方法。
該文對SSD[7]網絡運用于少樣本目標檢測任中存在的問題進行分析,優化SSD網絡,優化后的模型不僅可以提高主干網絡的特征提取能力,還可以有效提升對少樣本數據集檢測的準確性。首先將SSD網絡中的主干網絡替換成層數更深的ResNet-50,高層次的網絡模型有效地提高了特征提取能力,并且利用殘差單元避免了網絡退化問題。其次,用FPN模塊替換了原模型中的兩個特征層,充分地融合了語義信息和位置信息。
SSD網絡是傳統的one stage目標檢測算法,SSD的特點是生成的候選框都是相同尺寸,也是評分機制對候選框內的目標物體進行預測,最后使用非極大值抑制產生最終的檢測結果。
SSD網絡結構如圖1所示。首先數據從輸入層輸入到模型中,接著由特征提取網絡提取數據特征。SSD的特征提取網絡是由原始的VGG16網絡和另外的五個卷積層構成,增強了對復雜特征的提取能力。從圖中可以直觀看出這些層的尺寸不一樣,是為了實現在不同的尺度上對特征圖進行預測。

圖1 SSD網絡模型
SSD算法中,提出了一個新的概念,即先驗框,在特征提取網絡生成特征圖之后,以每個特征圖為中心都會產生一系列不同尺度的先驗框,這些先驗框與原圖一一對應,通過損失函數檢測先驗框的位置與真實目標框的位置的重疊度,從而分析出這個先驗框內目標物體的類別,而且通過檢測,也會對先驗框的形狀進行調整,以使其大小和尺度與真實的目標框更貼合。
先驗框包含兩個參數:尺度S和寬高比a。假設特征提取網絡總共產生m個特征圖,那么每個特征圖的先驗框尺度的計算方式如公式(1)所示:

(1)
SSD算法對不同特征層生成特征圖的尺度制定了如下規則:先驗框的尺寸隨著網絡層數不斷增加而增加,而特征圖尺寸逐漸減小,不同特征層生成特征圖的詳細尺寸及先驗框的大小如表1所示。

表1 每個特征圖上的初始框尺度
對先驗框的長寬比采用公式(2)的設置方式:

(2)
每個特征圖上的初始框寬、高可以用公式(3)得出:
(3)
對于寬高比為1的初始框,又多增加了一個正方形的初始框,定義如公式(4)所示。
(4)
SSD所用到的特征圖及其大小如表2所示。

表2 SSD網絡所用到的特征圖及其大小
為了得到更好的檢測結果,SSD引入ground truth的概念,即那些預測正確的樣本。算法的關鍵是要搞清楚用哪個候選框進行預測,SSD的操作是用先驗框和訓練樣本中的ground truth進行比對,如果匹配成功,那與之對應的候選框就負責預測它。所以先驗框和ground truth的匹配規則是算法是否有效的關鍵因素。SSD的先驗框與ground truth的匹配規則可以分成以下兩個步驟:
(1)對于圖片中的眾多候選目標,需要確定每個候選框對應的ground truth,計算不同先驗框和ground truth的IOU,找出其中的最大值。這樣就確定了一組匹配關系。因為IOU總有最大值,所以這種方式可以保證每個ground truth都不會被遺漏。如果某個先驗框和ground truth成功匹配,稱之為正樣本。反之,該先驗框對應的候選框定位失敗,只能是負樣本。
(2)在第一輪篩選中剩余的先驗框,不能全部舍棄,通過設定一個閾值,當某個ground truth與先驗框的IOU大于這個閾值,那么也能達成匹配。但是這可能導致某個ground truth與多個先驗框匹配成功,這是可以的,但是一個先驗框只能匹配一個ground truth。
SSD算法的訓練已經非常成熟,因為它不需要生成候選框并且簡化了特征提取的過程。通過實驗表明,SSD在VOC2007數據集上的檢測精度達到了74.3%,比目前最先進的Faster R-CNN算法效果更好。與同類型的one stage算法相比,檢測速度也更快。然而,SSD仍然存在可以優化的地方:首先,該模型提出的先驗框概念雖然有助于訓練,但是先驗框的初始尺度和長寬比需要手工設置,不能通過模型訓練直接獲得。而且SSD網絡中每一層特征圖使用的先驗框的尺寸都不同,增加了訓練的難度。其次,與Faster R-CNN算法相比,SSD對小樣本的檢測效果還存在明顯的差距。因為SSD的底層特征圖結構簡單,無法對小目標的特征進行充分的提取。針對這些問題,該文對SSD算法進行優化,改進后的網絡模型如圖2所示,而對SSD算法提出的改進主要有:
(1)將SSD的特征網絡VGG替換成網絡層數更深的ResNet-50。增強對復雜特征的提取,并且利用殘差單元,避免了網絡層數加深帶來的退化問題。
(2)將SSD結構中Conv8_2和Conv9_2兩個特征層替換成FPN,更充分地融合不同層的語義信息,提升檢測效果。

圖2 改進的SSD模型結構示意圖
下面對圖2中的ResNet-50、FPN模塊以及損失函數進行介紹。
ResNet[8](殘差網絡)是由何凱明等提出的,解決了深層次網絡模型退化的問題。ResNet模型是在VGG19模型的基礎上進行了修改,該算法提出了殘差單元這個概念。殘差單元網絡結構如圖3所示。假設殘差網絡的輸入為X,將學習到的特征記為H(X),使殘差F(X)=H(X)-X,那么就會得到原始的特征為F(X)+X。當殘差為0時,即使使用多個網絡堆積到一起進行訓練,也能保證網絡性能不會下降,實際上殘差不可能為0,那么深層次的網絡結構就可以繼續提取新的特征,從而擁有更好的性能。ResNet還有一個重要的訓練原則:當特征圖大小降低一半時,它的數量增加一倍,保持了網絡層的復雜度。
傳統的Faster R-CNN[9]網絡集成了R-CNN系列算法的優點,逐步解決了R-CNN系列算法存在的問題,但是該算法在小樣本檢測任務中表現不是很好,原因在于無論是RPN[10]網絡還是Fast R-CNN[11]網絡,都是基于單個高層特征進行任務提取,那么小目標經過多次卷積池化,特征層中的小目標特征已經所剩無幾。解決這種問題的常用方法是采用圖像金字塔的方式在訓練或測試階段對圖片進行多尺度變化增強,但是這樣帶來了極大的計算量。FPN主要解決的是物體檢測中的多尺度問題,通過簡單的網絡連接改變,在基本不增加原有模型計算量的情況下,大幅度提升了小物體檢測的性能。FPN[12]的提出是為了結合高層特征和低層特征,借鑒了ResNet的跳接結構,使得待檢測的特征圖中具有豐富的語義信息和位置信息。并且,該模型利用多尺度特征圖檢測,較好地處理了目標檢測中的多尺度變化問題。
損失函數一般用來評價模型的預測值和真實值的誤差,對網絡學習速度的快慢及最終模型預測效果的好壞起著關鍵的作用。IOU[13]是目標檢測中常用的指標,用來反映預測框和目標框之間的檢測效果,其定義為:

(5)
SSD中用CIOU[14]代替原始的BBOX的回歸損失函數。對于目標檢測來講,在獲得真實框之后需要先對真實框進行編碼,將其轉化為預測框的形式,然后將真實框與網絡的預測結果進行對比,對網絡結構進行優化,使框的預測更準確。CIOU是IOU的一個改進版,公式如下:
(6)
式中,b、bgt分別表示預測框和真實框的中心點;ρ2表示兩個中心點的歐氏距離;c表示能夠同時包含預測框和真實框的最小閉包區域的對角線距離。其中:
(7)
(8)
αν與真實框和預測框的框高有關系,二者越相近,αν的值越低,CIOU指的是真實框和預測框的偏離程度,則LOSS函數為:
該文采用FSOD數據集作為測試數據集。FSOD數據集是專為少樣本學習和評估新穎類別模型的通用性而設計的,該模型包含1 000個類別,分別用于訓練和測試集的80/20分割,總共約66 000張圖像和182 000個候選框。該數據集包含83種父級語義,例如哺乳動物、衣服、武器等,并進一步劃分為1 000個葉子類別。數據集包含對象大小和縱橫比差異很大的對象,由26.5%的圖像組成,其中測試集中的對象不少于3個。測試集包含大量未包含在標簽系統中的類別的候選框[15]。
該文進行的實驗是在Ubuntu16.04操作系統下完成的。實驗所采用的硬件配置為:中央處理器(CPU):Intel Core i9-10900k;圖像處理器(GPU):NVIDIA GTX 3080獨立顯卡,10G顯存。使用的編程語言為Python3.6,機器學習開發框架為Pytorch1.7。
實驗步驟如下:
(1)搭建文中網絡。
(2)使用ResNet-50在Mini-ImageNet分類數據集進行預訓練,得到預訓練后的ResNet-50模型。
(3)進行遷移學習,去除ResNet-50模型的全連接層,加載其權重作為文中主干網絡的初始參數,對類別預測分支、位置預測分支使用kaiming分布進行參數初始化,對其余部分參數隨機初始化。
(4)加載Mini-ImageNet訓練集圖片,將圖片大小設置為224×224,使用隨機裁剪、縮放、翻轉等方法進行數據增廣,輸入網絡進行訓練。
(5)使用隨機梯度下降法作為優化器,初始學習率設置為0.001,batch_size大小設置為8,最大迭代次數設置為200。優化器使用Adam,其參數為step_size=1,gamma=0.95。
(6)保存訓練模型。
(7)加載訓練完畢的模型,輸入Mini-ImageNet測試集圖片,輸出測試結果。
在目標檢測領域,往往使用平均精度均值(mean Average Precision,mAP)、平均精度(Average Precision,AP)、精確率(Precision)以及召回率(Recall)來評估模型的檢測效果;使用每秒傳輸幀數(Frame Per Second,FPS)、每秒10億的浮點運算次數(Giga Floating-point Operations Per Second,GigaFLOPS)來評估模型的檢測性能。該文采用FPS和mAP兩個指標衡量改進算法的效率。公式(9)和公式(10)為Precision和Recall的計算公式。
Precision=TP/(TP+FP)
(9)
Recall=TP/(TP+FN)
(10)
式中,TP代表模型認為是正樣本且實際上是正樣本的輸入,FP代表模型認為是正樣本但實際上不是正樣本的輸入,FN代表模型認為是負樣本但實際上不是負樣本的輸入。
由Precision和Recall作為橫縱坐標可以得到一條PR曲線,PR曲線下的面積則被稱為AP指標,對精確率和召回率的結果進行了綜合評估。定義如下:
(11)
式中,p(k)為召回率變化點k對應的精確率;Δr(k)為變化點k對應的召回率的變化量;N為召回率變化點的數量;不同類別AP不同,i為類別的索引值。
mAP指標則為所有的類的AP值進行求平均。定義如下:
(12)
式中,m為類別數量。
(1)灰度世界算法是基于灰度世界假設的,灰度世界算法在物理上假設自然界物體光的平均反射值通常是一個固定值,它近似于灰色。采用色彩平衡方法將該假設應用于訓練集中的圖像,可以從圖像中消除環境光的影響,從而達到增強圖像的效果。
(2)通過對訓練樣本旋轉來實現數據擴增。旋轉包括水平旋轉、垂直旋轉、鏡像旋轉,旋轉的角度范圍為+30°~-30°,并對新增樣本進行篩選,去除劣質樣本。
(3)數據集的制作。在經過對圖像數據的預處理之后,得到的數據如表3所示,分為三類。第一類是原始圖像訓練集,第二類是經過圖像增強后的訓練集,第三類是經過樣本擴增后的訓練集。

表3 訓練集數量
首先,為了驗證提出的改進算法的有效性,對改進的SSD網絡模型與SSD網絡模型進行實驗對比。
如表4所示,改進后的模型采用ResNet-50作為主干網絡,經過實驗,算法在Mini-ImageNet數據集上的mAP有了明顯的提升。這是因為ResNet-50的網絡層數更深,加強了對復雜特征的提取,提高了檢測效果。

表4 改進的算法和原始SSD算法的平均精度對比
表5展示了所提算法與SSD系列改進算法DSOD、RSSD、DSSD、FSSD的詳細對比。從表中可以看出SSD300的FPS最高,達到了46。所提改進算法在檢測速度上對比SSD300有所下降,但是在輸入圖像分辨率、準確率這兩個指標上達到了最優,改進后的算法在速度沒有明顯降低的情況下mAP達到了79.8%。

表5 所提算法與SSD系列改進算法的對比
該文提出了一種基于SSD算法的少樣本目標檢測算法,針對SSD算法在少樣本目標檢測中的問題,提出了改進思路。首先,用神經網絡層數更深的ResNet-50替換原來的VGG,ResNet-50作為主干網絡,可以對更加復雜的特征進行提取,并且利用殘差單元避免了隨著網絡層數加深帶來的退化問題;其次,用FPN替換SSD網絡中間的兩個特征層,充分融合不同層次的特征信息。通過實驗,改進的SSD算法在Mini-ImageNet數據集的檢測結果中,mAP值達到了79.8%,高于原始的SSD算法及其系列的改進算法,FPS也達到了38.3。實驗結果表明提出的改進算法是有效的,并且具有良好的魯棒性。另外,為了增強少樣本檢測的檢測效果,提出了一種圖像處理的方法,該方法會增加一定的計算量,如何設計出更理想的圖像處理方案或者引入更適合研究的少樣本數據集,這是后續研究值得考慮的問題。