李慕鍇,張 濤,崔文楠
(1.中國(guó)科學(xué)院 上海技術(shù)物理研究所 上海 200083;2.中國(guó)科學(xué)院大學(xué),北京 100049)
行人檢測(cè)是圖像處理研究中的經(jīng)典課題,其研究成果在視頻監(jiān)控、地區(qū)偵查、人體行為理解、遇難目標(biāo)搜救等領(lǐng)域都有諸多應(yīng)用。隨著近年來(lái)計(jì)算機(jī)視覺(jué)、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等新技術(shù)的突破,可見光圖像中的行人檢測(cè)技術(shù)已經(jīng)逐漸發(fā)展成熟,出現(xiàn)了許多具有高可用性的方法。然而可見光相機(jī)的工作依賴于白天或者其他光照充足的條件,無(wú)法滿足很多夜間場(chǎng)景下的監(jiān)控需求,其工作的可持續(xù)性存在問(wèn)題。紅外相機(jī)基于目標(biāo)對(duì)紅外光的反射和目標(biāo)自身的熱輻射進(jìn)行成像,受光照強(qiáng)度條件的影響很小,可以覆蓋大多數(shù)夜間的場(chǎng)景,在白天也有很好的工作能力,因此紅外相機(jī)能夠更好滿足持續(xù)工作的需求。并且隨著紅外成像系統(tǒng)價(jià)格的逐年降低,紅外相機(jī)越來(lái)越成為各類監(jiān)控系統(tǒng)中的重要組成部分,而紅外圖像中的行人檢測(cè)技術(shù)問(wèn)題也成為計(jì)算機(jī)視覺(jué)研究中的重點(diǎn)課題。
與可見光圖像相比,紅外圖像僅有一個(gè)顏色通道,提供的信息更少,并且紅外圖像往往有分辨率低、物體邊緣模糊、含有噪聲、對(duì)比度較低等問(wèn)題,使得紅外圖像中能夠提取到的特征信息減少。紅外圖像中目標(biāo)往往具有較高的亮度,特征更加明顯。傳統(tǒng)的行人檢測(cè)方法主要是使用人為設(shè)計(jì)的特征提取器,如Haar[1]、histogram of oriented gridients(HOG)[2]、aggregate channel features(ACF)[3]等,來(lái)提取圖像中行人目標(biāo)的特征,然后再通過(guò)滑動(dòng)窗口的方法對(duì)圖像的局部提取特征,最后通過(guò)support vector machine(SVM)[4]、adaboost等分類器來(lái)判斷區(qū)域是否有目標(biāo)。深度學(xué)習(xí)將圖像領(lǐng)域中各個(gè)問(wèn)題的處理精度都提升到了一個(gè)更高的水平,在目標(biāo)檢測(cè)領(lǐng)域,主要分為兩類方法,一類通過(guò)區(qū)域打分來(lái)預(yù)測(cè)目標(biāo)區(qū)域,然后通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)對(duì)區(qū)域進(jìn)行分類,這類方法以R-CNN[5]系列為代表,包括后續(xù)的fast R-CNN[6]、faster R-CNN[7]以及single shot multibox detector(SSD)[8]等;另一類方法通過(guò)回歸得出目標(biāo)區(qū)域再通過(guò)神經(jīng)網(wǎng)絡(luò)分類,這類方法以YOLO[9],YOLO9000[10]和YOLOv3[11]為代表,這一系列的算法都在紅外圖像處理中有很多應(yīng)用。
現(xiàn)有的檢測(cè)算法中,以深度學(xué)習(xí)的目標(biāo)檢測(cè)算法最為優(yōu)秀,不過(guò)SSD、R-CNN系列的網(wǎng)絡(luò)復(fù)雜度過(guò)高,即使使用運(yùn)算速度非常高的GPU也仍然運(yùn)行緩慢,而YOLO系列的方法解決了網(wǎng)絡(luò)復(fù)雜度過(guò)高的問(wèn)題,在主流的GPU上算法的運(yùn)行速度達(dá)到60 fps以上,能夠滿足實(shí)時(shí)性要求。本次研究中就以增強(qiáng)了小目標(biāo)檢測(cè)能力的YOLOv3為主要網(wǎng)絡(luò),通過(guò)對(duì)網(wǎng)絡(luò)進(jìn)行改進(jìn),進(jìn)一步增強(qiáng)了特征描述能力,使其能夠在實(shí)際的紅外小目標(biāo)處理問(wèn)題中得到應(yīng)用。
YOLO目標(biāo)檢測(cè)算法是Redmon等[9]在CVPR2016上提出的一種全新的端到端目標(biāo)檢測(cè)算法。與同期的fast R-CNN,faster R-CNN等算法使用區(qū)域建議網(wǎng)絡(luò)預(yù)測(cè)目標(biāo)可能的位置不同,YOLO直接一次回歸得出所有目標(biāo)的可能位置,雖然定位精度有所降低,但是大幅度地提升了算法的時(shí)間效率,得到了具有高實(shí)時(shí)性的目標(biāo)檢測(cè)方法。經(jīng)過(guò)近幾年的改良,Redmon等[10-11]在YOLO的基礎(chǔ)上又提出了YOLO9000、YOLOv3目標(biāo)檢測(cè)算法,到Y(jié)OLOv3其檢測(cè)精度已經(jīng)超過(guò)faster R-CNN,與精度最高的Retina net基本持平,在保持高精度的同時(shí),YOLOv3的速度比其他算法要高3倍以上,是目前目標(biāo)檢測(cè)領(lǐng)域的最優(yōu)秀的算法之一。
YOLOv3在目標(biāo)位置預(yù)測(cè)方面引入了faster R-CNN中使用錨點(diǎn)框(anchor box)的思想,在每一個(gè)特征圖上預(yù)測(cè)3個(gè)錨點(diǎn)框。對(duì)于一幅輸入圖像,YOLOv3算法將其分成13×13塊,在每一個(gè)小塊上預(yù)測(cè)3個(gè)目標(biāo)的邊界框,并且YOLOv3引入了多尺度融合的方法,對(duì)圖像在3個(gè)尺度上進(jìn)行目標(biāo)邊界框的預(yù)測(cè),從而大幅提升了小目標(biāo)檢測(cè)的精度。目標(biāo)邊界框參數(shù)的計(jì)算如圖1所示[11]。
圖1 YOLOv3邊界框計(jì)算 Fig.1 YOLOv3 bounding box calculation
YOLOv3在目標(biāo)的分類上使用了比之前深度更大的神經(jīng)網(wǎng)絡(luò),其網(wǎng)絡(luò)中大量3×3和1×1的卷積核保證了良好的特征提取,使用多尺度預(yù)測(cè)提升了小目標(biāo)的檢測(cè)精度。在深度學(xué)習(xí)領(lǐng)域,更深的網(wǎng)絡(luò)意味著可以提取更為復(fù)雜的特征,然而隨著網(wǎng)絡(luò)深度加大會(huì)出現(xiàn)訓(xùn)練難度加大,準(zhǔn)確率下降的問(wèn)題,Resnet很好地解決了這個(gè)難題。YOLOv3借鑒Resnet的思想,引入多個(gè)Resnet模塊,設(shè)計(jì)了一個(gè)新的層數(shù)更多并且分類準(zhǔn)確率更高的網(wǎng)絡(luò),由于其包含53個(gè)卷積層,作者將其命名為darknet-53,其結(jié)構(gòu)如圖2[11]。
圖2 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 YOLOv3 network structure
Squeeze-and-Excitation Networks[12]由Momenta公司的Jie Hu等人提出,是一種能夠顯著提高網(wǎng)絡(luò)性能的新型網(wǎng)絡(luò)模型。目前在提升網(wǎng)絡(luò)性能方面已經(jīng)有大量的前人工作,有從統(tǒng)計(jì)角度出發(fā)的方法,例如dropout通過(guò)隨機(jī)減少網(wǎng)絡(luò)間的連接來(lái)減少過(guò)擬合;有從空間維度層面尋找提升的方法,例如Inception結(jié)構(gòu)嵌入多尺度信息,聚合多種不同感受野上的特征來(lái)獲得性能提升。而SENet從前人很少考慮到的特征通道間的關(guān)系出發(fā),提出了一種特征重標(biāo)定策略,這種策略通過(guò)顯示建模特征通道間的相互依賴關(guān)系實(shí)現(xiàn),可以通過(guò)學(xué)習(xí)來(lái)獲取到每個(gè)特征通道的重要程度,然后根據(jù)這個(gè)主要程度來(lái)提升重要特征的權(quán)重并抑制不重要的特征。
SENet中包含兩個(gè)關(guān)鍵操作,壓縮(Squeeze)和激勵(lì)(Excitation),其主要流程如圖3[12],其中Ftr和Fsq為壓縮操作,F(xiàn)ex為激活操作,X為輸入,U為中間變換結(jié)果,H、W、C為網(wǎng)絡(luò)的寬高和層數(shù)。壓縮操作順著空間維度來(lái)對(duì)提取到的特征進(jìn)行壓縮,將每個(gè)二維的特征通道換算為一個(gè)實(shí)數(shù),這個(gè)實(shí)數(shù)在某種程度上會(huì)具有全局感受野,并且輸出的維度和輸入的特征通道數(shù)相匹配,它表征著在特征通道上響應(yīng)的全局分布,而且使得靠近輸入的層也可以獲得全局的感受野。激勵(lì)操作類似于循環(huán)神經(jīng)網(wǎng)絡(luò)中的門的機(jī)制,通過(guò)學(xué)習(xí)參數(shù)w來(lái)為每個(gè)特征通道生成權(quán)重,它可以通過(guò)兩個(gè)全連接層實(shí)現(xiàn),學(xué)習(xí)得到的參數(shù)w即表征了每個(gè)特征通道的重要性。最后的操作是權(quán)重重標(biāo)定(Reweight),它將之前學(xué)習(xí)到的每個(gè)特征通道的權(quán)重歸一化,然后通過(guò)乘法加權(quán)到原來(lái)的特種通道上,即完成了每個(gè)特征通道的重要性的標(biāo)定。SENet可以很方便地插入在Resnet之后,得到一個(gè)SE-Resnet模塊,如圖4[12]所示。經(jīng)過(guò)作者的多番驗(yàn)證,在不同規(guī)模的Resnet上引入SENet后,均能夠大幅提升網(wǎng)絡(luò)的準(zhǔn)確率,并且作者依靠SENet贏得了ImageNet 2017圖像分類任務(wù)的冠軍。
YOLOv3在當(dāng)前各類目標(biāo)檢測(cè)任務(wù)中已經(jīng)取得了非常優(yōu)越的效果,不過(guò)算法仍然有很多改進(jìn)的空間,尤其對(duì)于小目標(biāo)方面。在實(shí)際的紅外行人小目標(biāo)數(shù)據(jù)中,直接使用YOLOv3對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練,最后得到的模型具有良好的召回率,但是準(zhǔn)確率不夠。為了得到一個(gè)具有實(shí)時(shí)性,同時(shí)目標(biāo)檢測(cè)的準(zhǔn)確率和虛警率都良好的算法模型,以YOLOv3為基礎(chǔ)網(wǎng)絡(luò),結(jié)合SENet以提升分類網(wǎng)絡(luò)的準(zhǔn)確率是一個(gè)可行的思路。
根據(jù)SENet的思路,對(duì)網(wǎng)絡(luò)進(jìn)行改進(jìn)一般有幾種方式,一種是直接在卷積層后面直接加SENet模塊,這種方法對(duì)所有網(wǎng)絡(luò)都通用,但是由于現(xiàn)在的網(wǎng)絡(luò)中都含有大量卷積層并且參數(shù)量巨大,這樣添加SENet模塊增加的參數(shù)量大,且需要大量實(shí)驗(yàn)來(lái)確定在哪些卷積層后面加入新模塊。一種是用加入了SENet的模塊替換原有網(wǎng)絡(luò)中的inception或者residual層,這類方法替換位置較為明確,需要反復(fù)實(shí)驗(yàn)的可能性較小,并且作者也積累了一定經(jīng)驗(yàn)。在YOLOv3中含有較多的Residual層,于是對(duì)網(wǎng)絡(luò)的改進(jìn)采取引入SE-Resnet模塊的方法。
SE-Resnet模塊中,用Global average pooling層做壓縮操作,將每個(gè)特征通道變換成一個(gè)實(shí)數(shù)值,使C個(gè)特征圖最后變成一個(gè)1×1×C的實(shí)數(shù)序列。被處理的多個(gè)特征圖可以被解釋為從圖像中提取到的局部特征描述子的集合,每個(gè)特征圖無(wú)法利用到其他特征圖的上下文信息。使用Global average pooling可以使其擁有全局的感受野,從而讓低層網(wǎng)絡(luò)也能利用全局信息。
圖3 SENet工作流程Fig.3 SENet workflow
圖4 SE-Resnet模塊Fig.4 SE-Resnet module
激活操作是SENet中用于捕獲特征通道重要性和依賴性的關(guān)鍵操作,對(duì)于它的實(shí)現(xiàn)原作者使用了兩個(gè)全連接層(full connected layer)結(jié)合ReLU函數(shù)去建模各個(gè)通道之間的相關(guān)性,并且其輸出的權(quán)重?cái)?shù)與輸入的特征數(shù)相同。為了減少參數(shù)并且增強(qiáng)泛化能力,第一個(gè)全連接層將參數(shù)降維r倍,這里r取值為16,然后經(jīng)過(guò)一個(gè)ReLU后再經(jīng)過(guò)一個(gè)全連接層升維到原來(lái)的維數(shù)。第二個(gè)全連接層后使用sigmoid激活函數(shù)作為閾值門限,得到了一個(gè)1×1×C的序列,即每個(gè)特征通道的權(quán)重。最后將權(quán)重直接用乘法疊加到開始的特征通道上,即完成了所有特征通道的權(quán)重重標(biāo)定。
引入SENet的SE-Resnet模塊可以簡(jiǎn)化表示為一個(gè)Residual模塊下添加了一個(gè)SE模塊,如圖5[12]所示。
圖5 SE-Resnet模塊簡(jiǎn)化示意圖 Fig.5 SE-Resnet module simplified diagram
SENet模塊的激活操作的實(shí)現(xiàn)中包含兩個(gè)全連接層,全連接層的參數(shù)量相對(duì)其他類型的網(wǎng)絡(luò)層是最大的,因此添加過(guò)多的SENet模塊將會(huì)導(dǎo)致網(wǎng)絡(luò)參數(shù)規(guī)模增大,影響目標(biāo)檢測(cè)算法的時(shí)間效率。根據(jù)原作者的經(jīng)驗(yàn),添加在網(wǎng)絡(luò)末端的SE模塊對(duì)準(zhǔn)確率的影響較小,所以末端的幾個(gè)Residual塊不做處理。YOLOv3包含23個(gè)Residual塊,從減少模型參數(shù)量?jī)?yōu)化避免增加太多算法運(yùn)行時(shí)間的角度考慮,只對(duì)每組卷積和殘差層的最后一個(gè)殘差層進(jìn)行替換,于是改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 改進(jìn)后網(wǎng)絡(luò)結(jié)構(gòu) Fig.6 Network structure after improvement
實(shí)驗(yàn)使用焦距20 mm,波段8~12 μm的長(zhǎng)波紅外熱像儀在50 m的高度拍攝了570張單場(chǎng)景紅外行人圖像。數(shù)據(jù)拍攝地點(diǎn)在城市中,拍攝目標(biāo)主體為從樓頂斜視的城市街道,因此數(shù)據(jù)集中的場(chǎng)景包含城市道路、建筑物、樹木等,背景非常復(fù)雜。數(shù)據(jù)集圖像中行人目標(biāo)很小,在圖像中的矩形框大小約為13×8個(gè)像素,形態(tài)特征較少,用傳統(tǒng)特征提取方法將很難提取到有效特征,適合用深度學(xué)習(xí)方法進(jìn)行目標(biāo)檢測(cè)。
數(shù)據(jù)中只對(duì)行人的目標(biāo)進(jìn)行了標(biāo)注,為了能夠提升目標(biāo)檢測(cè)的性能,提高泛化性,對(duì)一部分受到遮擋的行人目標(biāo)也進(jìn)行了標(biāo)注,希望最后得到的模型能夠應(yīng)對(duì)一定程度的目標(biāo)遮擋。由于圖像數(shù)量較少,考慮對(duì)數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng),YOLOv3在訓(xùn)練過(guò)程中有多尺度訓(xùn)練的部分,因此數(shù)據(jù)增強(qiáng)時(shí)不需要做尺度縮放,只使用翻轉(zhuǎn)、加噪、隨機(jī)光照改變等方法,數(shù)據(jù)增強(qiáng)后得到2280張圖像,采集的紅外圖示例如圖7。
圖7 采集的紅外圖像示例Fig.7 Infrared image example collected for experiment
實(shí)驗(yàn)平臺(tái)使用Linux 16.04 LTS系統(tǒng),CPU i7 8700 k,GPU為NVIDIA GTX1080 8 G,16 G內(nèi)存。模型訓(xùn)練主要思路是使用已經(jīng)在大規(guī)模數(shù)據(jù)集上訓(xùn)練好的模型進(jìn)行fine-tune,在新數(shù)據(jù)集上繼續(xù)訓(xùn)練模型。以YOLO原作者在COCO和VOC上訓(xùn)練好的darknet53模型為基礎(chǔ)模型,隨機(jī)選取自建數(shù)據(jù)集中的1710張圖像作為訓(xùn)練集,其余的570張圖像為測(cè)試集,訓(xùn)練時(shí)初始學(xué)習(xí)率為0.001,衰減系數(shù)為0.0005,對(duì)于YOLOv3原網(wǎng)絡(luò)和改進(jìn)后的網(wǎng)絡(luò)都進(jìn)行訓(xùn)練。
由于本次實(shí)驗(yàn)中的數(shù)據(jù)集只有一類目標(biāo),采用召回率(recall)和準(zhǔn)確率(precision)作為模型的評(píng)價(jià)標(biāo)準(zhǔn),其中準(zhǔn)確率為網(wǎng)絡(luò)預(yù)測(cè)的所有目標(biāo)中真目標(biāo)的比例,表征此網(wǎng)絡(luò)的分類準(zhǔn)確率;召回率為網(wǎng)絡(luò)預(yù)測(cè)成功的真目標(biāo)數(shù)與實(shí)際存在的真目標(biāo)數(shù)的比值,表征此網(wǎng)絡(luò)的查全率;以目標(biāo)交并比(IOU,intersection over union)大于0.5為真目標(biāo),IOU為預(yù)測(cè)目標(biāo)矩形框和目標(biāo)標(biāo)簽矩形重疊區(qū)域面積占二者并集面積的比值。
式中:tp為網(wǎng)絡(luò)預(yù)測(cè)出的真目標(biāo)數(shù);fn為未能成功預(yù)測(cè)出的真目標(biāo)數(shù);n為預(yù)測(cè)的總數(shù);n′為標(biāo)簽?zāi)繕?biāo)數(shù)。
在訓(xùn)練好的模型上,用570張圖像的測(cè)試集進(jìn)行驗(yàn)證。YOLOv3原網(wǎng)絡(luò)和改進(jìn)后網(wǎng)絡(luò)的準(zhǔn)確率和召回率對(duì)比如表1所示。
表1 主要指標(biāo)對(duì)比 Table 1 Comparison of primary specifications
網(wǎng)絡(luò)在測(cè)試圖像中的檢測(cè)效果如圖8所示,可以看到紅外圖像中黯淡模糊的行人目標(biāo)能夠被檢測(cè)出來(lái),并且部分被遮擋的目標(biāo)也有較好的檢測(cè)能力。
從表1可以看到改進(jìn)后的網(wǎng)絡(luò)在兩項(xiàng)主要指標(biāo)上都優(yōu)于原網(wǎng)絡(luò),由于SENet的特征權(quán)重重標(biāo)定,增強(qiáng)了重要特征對(duì)分類結(jié)果的影響,抑制了非重要特征,使網(wǎng)絡(luò)的特征描述能力進(jìn)一步增強(qiáng),最終令網(wǎng)絡(luò)的召回率和準(zhǔn)確率都得到提升。算法運(yùn)行時(shí)間方面,在GTX1080顯卡,CUDA9.0運(yùn)行環(huán)境下,570張測(cè)試圖片YOLOv3計(jì)算了10.77 s,SE-YOLOv3計(jì)算了11.15 s,都在50 fps以上,網(wǎng)絡(luò)增加的SE block帶來(lái)的額外計(jì)算時(shí)間較少。
圖8 檢測(cè)結(jié)果示例Fig.8 Detect results of samples
文章研究了當(dāng)前主流的深度學(xué)習(xí)目標(biāo)檢測(cè)方法,以YOLOv3網(wǎng)絡(luò)為基礎(chǔ),學(xué)習(xí)了SENet對(duì)特征進(jìn)行權(quán)重重標(biāo)定的思路,將SE block引入到Y(jié)OLOv3網(wǎng)絡(luò)中,得到了召回率和準(zhǔn)確率都更高的新網(wǎng)絡(luò),并且保持了原有的高實(shí)時(shí)性。對(duì)實(shí)際收集的復(fù)雜紅外圖像進(jìn)行試驗(yàn),新網(wǎng)絡(luò)取得了良好的行人小目標(biāo)檢測(cè)效果。