李慕鍇,張 濤,崔文楠
(1.中國科學院 上海技術物理研究所 上海 200083;2.中國科學院大學,北京 100049)
行人檢測是圖像處理研究中的經典課題,其研究成果在視頻監控、地區偵查、人體行為理解、遇難目標搜救等領域都有諸多應用。隨著近年來計算機視覺、機器學習和深度學習等新技術的突破,可見光圖像中的行人檢測技術已經逐漸發展成熟,出現了許多具有高可用性的方法。然而可見光相機的工作依賴于白天或者其他光照充足的條件,無法滿足很多夜間場景下的監控需求,其工作的可持續性存在問題。紅外相機基于目標對紅外光的反射和目標自身的熱輻射進行成像,受光照強度條件的影響很小,可以覆蓋大多數夜間的場景,在白天也有很好的工作能力,因此紅外相機能夠更好滿足持續工作的需求。并且隨著紅外成像系統價格的逐年降低,紅外相機越來越成為各類監控系統中的重要組成部分,而紅外圖像中的行人檢測技術問題也成為計算機視覺研究中的重點課題。
與可見光圖像相比,紅外圖像僅有一個顏色通道,提供的信息更少,并且紅外圖像往往有分辨率低、物體邊緣模糊、含有噪聲、對比度較低等問題,使得紅外圖像中能夠提取到的特征信息減少。紅外圖像中目標往往具有較高的亮度,特征更加明顯。傳統的行人檢測方法主要是使用人為設計的特征提取器,如Haar[1]、histogram of oriented gridients(HOG)[2]、aggregate channel features(ACF)[3]等,來提取圖像中行人目標的特征,然后再通過滑動窗口的方法對圖像的局部提取特征,最后通過support vector machine(SVM)[4]、adaboost等分類器來判斷區域是否有目標。深度學習將圖像領域中各個問題的處理精度都提升到了一個更高的水平,在目標檢測領域,主要分為兩類方法,一類通過區域打分來預測目標區域,然后通過神經網絡來對區域進行分類,這類方法以R-CNN[5]系列為代表,包括后續的fast R-CNN[6]、faster R-CNN[7]以及single shot multibox detector(SSD)[8]等;另一類方法通過回歸得出目標區域再通過神經網絡分類,這類方法以YOLO[9],YOLO9000[10]和YOLOv3[11]為代表,這一系列的算法都在紅外圖像處理中有很多應用。
現有的檢測算法中,以深度學習的目標檢測算法最為優秀,不過SSD、R-CNN系列的網絡復雜度過高,即使使用運算速度非常高的GPU也仍然運行緩慢,而YOLO系列的方法解決了網絡復雜度過高的問題,在主流的GPU上算法的運行速度達到60 fps以上,能夠滿足實時性要求。本次研究中就以增強了小目標檢測能力的YOLOv3為主要網絡,通過對網絡進行改進,進一步增強了特征描述能力,使其能夠在實際的紅外小目標處理問題中得到應用。
YOLO目標檢測算法是Redmon等[9]在CVPR2016上提出的一種全新的端到端目標檢測算法。與同期的fast R-CNN,faster R-CNN等算法使用區域建議網絡預測目標可能的位置不同,YOLO直接一次回歸得出所有目標的可能位置,雖然定位精度有所降低,但是大幅度地提升了算法的時間效率,得到了具有高實時性的目標檢測方法。經過近幾年的改良,Redmon等[10-11]在YOLO的基礎上又提出了YOLO9000、YOLOv3目標檢測算法,到YOLOv3其檢測精度已經超過faster R-CNN,與精度最高的Retina net基本持平,在保持高精度的同時,YOLOv3的速度比其他算法要高3倍以上,是目前目標檢測領域的最優秀的算法之一。
YOLOv3在目標位置預測方面引入了faster R-CNN中使用錨點框(anchor box)的思想,在每一個特征圖上預測3個錨點框。對于一幅輸入圖像,YOLOv3算法將其分成13×13塊,在每一個小塊上預測3個目標的邊界框,并且YOLOv3引入了多尺度融合的方法,對圖像在3個尺度上進行目標邊界框的預測,從而大幅提升了小目標檢測的精度。目標邊界框參數的計算如圖1所示[11]。

圖1 YOLOv3邊界框計算 Fig.1 YOLOv3 bounding box calculation
YOLOv3在目標的分類上使用了比之前深度更大的神經網絡,其網絡中大量3×3和1×1的卷積核保證了良好的特征提取,使用多尺度預測提升了小目標的檢測精度。在深度學習領域,更深的網絡意味著可以提取更為復雜的特征,然而隨著網絡深度加大會出現訓練難度加大,準確率下降的問題,Resnet很好地解決了這個難題。YOLOv3借鑒Resnet的思想,引入多個Resnet模塊,設計了一個新的層數更多并且分類準確率更高的網絡,由于其包含53個卷積層,作者將其命名為darknet-53,其結構如圖2[11]。

圖2 YOLOv3網絡結構Fig.2 YOLOv3 network structure
Squeeze-and-Excitation Networks[12]由Momenta公司的Jie Hu等人提出,是一種能夠顯著提高網絡性能的新型網絡模型。目前在提升網絡性能方面已經有大量的前人工作,有從統計角度出發的方法,例如dropout通過隨機減少網絡間的連接來減少過擬合;有從空間維度層面尋找提升的方法,例如Inception結構嵌入多尺度信息,聚合多種不同感受野上的特征來獲得性能提升。而SENet從前人很少考慮到的特征通道間的關系出發,提出了一種特征重標定策略,這種策略通過顯示建模特征通道間的相互依賴關系實現,可以通過學習來獲取到每個特征通道的重要程度,然后根據這個主要程度來提升重要特征的權重并抑制不重要的特征。
SENet中包含兩個關鍵操作,壓縮(Squeeze)和激勵(Excitation),其主要流程如圖3[12],其中Ftr和Fsq為壓縮操作,Fex為激活操作,X為輸入,U為中間變換結果,H、W、C為網絡的寬高和層數。壓縮操作順著空間維度來對提取到的特征進行壓縮,將每個二維的特征通道換算為一個實數,這個實數在某種程度上會具有全局感受野,并且輸出的維度和輸入的特征通道數相匹配,它表征著在特征通道上響應的全局分布,而且使得靠近輸入的層也可以獲得全局的感受野。激勵操作類似于循環神經網絡中的門的機制,通過學習參數w來為每個特征通道生成權重,它可以通過兩個全連接層實現,學習得到的參數w即表征了每個特征通道的重要性。最后的操作是權重重標定(Reweight),它將之前學習到的每個特征通道的權重歸一化,然后通過乘法加權到原來的特種通道上,即完成了每個特征通道的重要性的標定。SENet可以很方便地插入在Resnet之后,得到一個SE-Resnet模塊,如圖4[12]所示。經過作者的多番驗證,在不同規模的Resnet上引入SENet后,均能夠大幅提升網絡的準確率,并且作者依靠SENet贏得了ImageNet 2017圖像分類任務的冠軍。
YOLOv3在當前各類目標檢測任務中已經取得了非常優越的效果,不過算法仍然有很多改進的空間,尤其對于小目標方面。在實際的紅外行人小目標數據中,直接使用YOLOv3對數據進行訓練,最后得到的模型具有良好的召回率,但是準確率不夠。為了得到一個具有實時性,同時目標檢測的準確率和虛警率都良好的算法模型,以YOLOv3為基礎網絡,結合SENet以提升分類網絡的準確率是一個可行的思路。
根據SENet的思路,對網絡進行改進一般有幾種方式,一種是直接在卷積層后面直接加SENet模塊,這種方法對所有網絡都通用,但是由于現在的網絡中都含有大量卷積層并且參數量巨大,這樣添加SENet模塊增加的參數量大,且需要大量實驗來確定在哪些卷積層后面加入新模塊。一種是用加入了SENet的模塊替換原有網絡中的inception或者residual層,這類方法替換位置較為明確,需要反復實驗的可能性較小,并且作者也積累了一定經驗。在YOLOv3中含有較多的Residual層,于是對網絡的改進采取引入SE-Resnet模塊的方法。
SE-Resnet模塊中,用Global average pooling層做壓縮操作,將每個特征通道變換成一個實數值,使C個特征圖最后變成一個1×1×C的實數序列。被處理的多個特征圖可以被解釋為從圖像中提取到的局部特征描述子的集合,每個特征圖無法利用到其他特征圖的上下文信息。使用Global average pooling可以使其擁有全局的感受野,從而讓低層網絡也能利用全局信息。

圖3 SENet工作流程Fig.3 SENet workflow

圖4 SE-Resnet模塊Fig.4 SE-Resnet module
激活操作是SENet中用于捕獲特征通道重要性和依賴性的關鍵操作,對于它的實現原作者使用了兩個全連接層(full connected layer)結合ReLU函數去建模各個通道之間的相關性,并且其輸出的權重數與輸入的特征數相同。為了減少參數并且增強泛化能力,第一個全連接層將參數降維r倍,這里r取值為16,然后經過一個ReLU后再經過一個全連接層升維到原來的維數。第二個全連接層后使用sigmoid激活函數作為閾值門限,得到了一個1×1×C的序列,即每個特征通道的權重。最后將權重直接用乘法疊加到開始的特征通道上,即完成了所有特征通道的權重重標定。
引入SENet的SE-Resnet模塊可以簡化表示為一個Residual模塊下添加了一個SE模塊,如圖5[12]所示。

圖5 SE-Resnet模塊簡化示意圖 Fig.5 SE-Resnet module simplified diagram
SENet模塊的激活操作的實現中包含兩個全連接層,全連接層的參數量相對其他類型的網絡層是最大的,因此添加過多的SENet模塊將會導致網絡參數規模增大,影響目標檢測算法的時間效率。根據原作者的經驗,添加在網絡末端的SE模塊對準確率的影響較小,所以末端的幾個Residual塊不做處理。YOLOv3包含23個Residual塊,從減少模型參數量優化避免增加太多算法運行時間的角度考慮,只對每組卷積和殘差層的最后一個殘差層進行替換,于是改進后的網絡結構如圖6所示。

圖6 改進后網絡結構 Fig.6 Network structure after improvement
實驗使用焦距20 mm,波段8~12 μm的長波紅外熱像儀在50 m的高度拍攝了570張單場景紅外行人圖像。數據拍攝地點在城市中,拍攝目標主體為從樓頂斜視的城市街道,因此數據集中的場景包含城市道路、建筑物、樹木等,背景非常復雜。數據集圖像中行人目標很小,在圖像中的矩形框大小約為13×8個像素,形態特征較少,用傳統特征提取方法將很難提取到有效特征,適合用深度學習方法進行目標檢測。
數據中只對行人的目標進行了標注,為了能夠提升目標檢測的性能,提高泛化性,對一部分受到遮擋的行人目標也進行了標注,希望最后得到的模型能夠應對一定程度的目標遮擋。由于圖像數量較少,考慮對數據集進行數據增強,YOLOv3在訓練過程中有多尺度訓練的部分,因此數據增強時不需要做尺度縮放,只使用翻轉、加噪、隨機光照改變等方法,數據增強后得到2280張圖像,采集的紅外圖示例如圖7。

圖7 采集的紅外圖像示例Fig.7 Infrared image example collected for experiment
實驗平臺使用Linux 16.04 LTS系統,CPU i7 8700 k,GPU為NVIDIA GTX1080 8 G,16 G內存。模型訓練主要思路是使用已經在大規模數據集上訓練好的模型進行fine-tune,在新數據集上繼續訓練模型。以YOLO原作者在COCO和VOC上訓練好的darknet53模型為基礎模型,隨機選取自建數據集中的1710張圖像作為訓練集,其余的570張圖像為測試集,訓練時初始學習率為0.001,衰減系數為0.0005,對于YOLOv3原網絡和改進后的網絡都進行訓練。
由于本次實驗中的數據集只有一類目標,采用召回率(recall)和準確率(precision)作為模型的評價標準,其中準確率為網絡預測的所有目標中真目標的比例,表征此網絡的分類準確率;召回率為網絡預測成功的真目標數與實際存在的真目標數的比值,表征此網絡的查全率;以目標交并比(IOU,intersection over union)大于0.5為真目標,IOU為預測目標矩形框和目標標簽矩形重疊區域面積占二者并集面積的比值。

式中:tp為網絡預測出的真目標數;fn為未能成功預測出的真目標數;n為預測的總數;n′為標簽目標數。
在訓練好的模型上,用570張圖像的測試集進行驗證。YOLOv3原網絡和改進后網絡的準確率和召回率對比如表1所示。

表1 主要指標對比 Table 1 Comparison of primary specifications
網絡在測試圖像中的檢測效果如圖8所示,可以看到紅外圖像中黯淡模糊的行人目標能夠被檢測出來,并且部分被遮擋的目標也有較好的檢測能力。
從表1可以看到改進后的網絡在兩項主要指標上都優于原網絡,由于SENet的特征權重重標定,增強了重要特征對分類結果的影響,抑制了非重要特征,使網絡的特征描述能力進一步增強,最終令網絡的召回率和準確率都得到提升。算法運行時間方面,在GTX1080顯卡,CUDA9.0運行環境下,570張測試圖片YOLOv3計算了10.77 s,SE-YOLOv3計算了11.15 s,都在50 fps以上,網絡增加的SE block帶來的額外計算時間較少。


圖8 檢測結果示例Fig.8 Detect results of samples
文章研究了當前主流的深度學習目標檢測方法,以YOLOv3網絡為基礎,學習了SENet對特征進行權重重標定的思路,將SE block引入到YOLOv3網絡中,得到了召回率和準確率都更高的新網絡,并且保持了原有的高實時性。對實際收集的復雜紅外圖像進行試驗,新網絡取得了良好的行人小目標檢測效果。