張良 李鑫 趙曉敏 蔣瑞洋 張國(guó)棟
(合肥工業(yè)大學(xué),合肥 230009)
主題詞:目標(biāo)檢測(cè) 紅外圖像 開源推理加速庫(kù) 注意力機(jī)制 Jetson TX2平臺(tái)
當(dāng)前,無(wú)人駕駛技術(shù)發(fā)展迅猛,保障行人的安全是無(wú)人駕駛領(lǐng)域的重要研究?jī)?nèi)容。目前,針對(duì)可見光圖像的深度學(xué)習(xí)目標(biāo)檢測(cè)算法已取得豐碩的成果[1-3],但是可見光技術(shù)依賴于良好的光照條件,在夜晚、昏暗隧道或光照過(guò)強(qiáng)等場(chǎng)景下,可見光技術(shù)應(yīng)用效果較差,甚至不能應(yīng)用。紅外行人檢測(cè)技術(shù)基于物體自身熱輻射和反射成像原理,受光照條件影響小,可以全天候工作,因此在無(wú)人駕駛領(lǐng)域具有重要的研究和應(yīng)用價(jià)值[4]。
近年來(lái),隨著行人檢測(cè)技術(shù)的日趨成熟和計(jì)算機(jī)硬件的快速發(fā)展,實(shí)時(shí)行人檢測(cè)的應(yīng)用場(chǎng)景逐漸增加,將行人檢測(cè)模型部署在移動(dòng)終端已經(jīng)成為一大趨勢(shì)。但由于行人檢測(cè)任務(wù)的復(fù)雜性,行人檢測(cè)模型往往有很多參數(shù),計(jì)算量大,對(duì)于內(nèi)存、存儲(chǔ)容量和計(jì)算能力均有限的嵌入式設(shè)備來(lái)說(shuō),很難滿足行人檢測(cè)的實(shí)時(shí)性要求。因此,平衡行人檢測(cè)模型的檢測(cè)速度和準(zhǔn)確性,并將其高效地部署到嵌入式設(shè)備中,是當(dāng)前的熱門研究方向[5-6]。文獻(xiàn)[7]將改進(jìn)的YOLOv3 模型應(yīng)用于嵌入式平臺(tái),然后進(jìn)行紅外人體檢測(cè),平均準(zhǔn)確率相較于YOLOv3模型提高3.26%,檢測(cè)速度達(dá)到16幀/s;文獻(xiàn)[8]對(duì)YOLOv4模型進(jìn)行剪枝以降低模型復(fù)雜度,并部署于嵌入式平臺(tái),達(dá)到了75.60%的紅外行人識(shí)別準(zhǔn)確率?,F(xiàn)有研究雖實(shí)現(xiàn)了神經(jīng)網(wǎng)絡(luò)在嵌入式平臺(tái)上的部署,但總體而言,其模型參數(shù)量依然較為龐大,識(shí)別速度和準(zhǔn)確率仍有待提高。
本文提出2 種基于嵌入式平臺(tái)的車前紅外行人檢測(cè)方法,旨在達(dá)到檢測(cè)速度和平均準(zhǔn)確率的良好平衡:使用推理加速庫(kù)TensorRT 優(yōu)化輕量化網(wǎng)絡(luò)YOLOv4-tiny[9],提高推理速度;以YOLOv4-tiny 模型作為算法的基本框架,結(jié)合空間金字塔池化(Spatial Pyramid Pooling,SPP)模塊、卷積塊注意模塊(Convolutional Block Attention Module,CBAM)和3 個(gè)檢測(cè)層(3 Layer,3L),提升其平均準(zhǔn)確率。最后均部署于Jetson TX2嵌入式平臺(tái),驗(yàn)證所提出方法的有效性。
本文提出2 種車前紅外行人檢測(cè)方法:一是利用TensorRT推理加速原理,對(duì)YOLOv4-tiny網(wǎng)絡(luò)模型進(jìn)行推理加速,然后進(jìn)行行人檢測(cè);二是使用YOLOv4-tiny+3L+SPP+CBAM(本文稱為YOLOv4-tiny-I)網(wǎng)絡(luò)模型檢測(cè)行人。
YOLOv4-tiny 是YOLOv4作者[10]在其開源程序中提供的YOLOv4 的簡(jiǎn)化版本,降低了模型對(duì)硬件的要求,適合部署于移動(dòng)端或嵌入式端,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。其骨干網(wǎng)絡(luò)(CSPDarkNet53_Tiny)包含CBL(Conv+BN+LeakyRelu)模塊和跨階段殘差結(jié)構(gòu)(Cross Stage Partial,CSP)模塊,CBL模塊的構(gòu)成為卷積層(Conv)、批歸一化處理層(Batch Normalization,BN)、激活層(采用LeakyRelu 激活函數(shù));CSP 模塊的構(gòu)成為4 個(gè)CBL 層和1 個(gè)最大池化(Maxpool)層。骨干網(wǎng)絡(luò)用來(lái)進(jìn)行特征提取,特征提取網(wǎng)絡(luò)末端使用2個(gè)特征層進(jìn)行分類與位置回歸預(yù)測(cè);利用特征金字塔思想[11]對(duì)相鄰尺度的特征圖通過(guò)串聯(lián)操作進(jìn)行特征融合,輸出2 個(gè)檢測(cè)頭(Yolo Head)。
圖1 YOLOv4-tiny網(wǎng)絡(luò)結(jié)構(gòu)
TensorRT是英偉達(dá)(NVIDIA)公司提出的用于推理的加速計(jì)算庫(kù),其憑借對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的重構(gòu)、操作的合并和網(wǎng)絡(luò)量化等優(yōu)化方法實(shí)現(xiàn)高效的推理過(guò)程,其優(yōu)化推理引擎只有前向傳播。TensorRT 能將所支持的深度學(xué)習(xí)網(wǎng)絡(luò)模型進(jìn)行解析,并將解析后的網(wǎng)絡(luò)模型結(jié)構(gòu)與TensorRT自身結(jié)構(gòu)進(jìn)行一一映射[12],之后便可將深度學(xué)習(xí)網(wǎng)絡(luò)模型轉(zhuǎn)移到TensorRT引擎中,以加速模型部署。
深度學(xué)習(xí)網(wǎng)絡(luò)往往層數(shù)較多,在模型部署推理時(shí),GPU 需啟動(dòng)不同的CUDA 核心對(duì)每個(gè)層進(jìn)行運(yùn)算,CUDA 核心雖有很強(qiáng)的計(jì)算能力,但數(shù)據(jù)的讀寫和CUDA 核心的啟動(dòng)極為耗時(shí),導(dǎo)致大量GPU 資源浪費(fèi)。TensorRT 通過(guò)對(duì)層間的縱向合并(將卷積Conv、偏置Bias 和激活函數(shù)ReLU 合并成CBR 層)、橫向合并來(lái)減少模型層數(shù),以便占用更少的CUDA 核心來(lái)完成相同的運(yùn)算[13]。TensorRT合并具體操作如圖2所示。
圖2 TensorRT合并策略
YOLOv4-tiny 使用了13×13 和26×26 這2 種不同尺度的特征圖來(lái)預(yù)測(cè)檢測(cè)結(jié)果。由于行人形態(tài)姿勢(shì)不固定、行人所處環(huán)境復(fù)雜多變,會(huì)存在目標(biāo)被部分遮擋和目標(biāo)較小的情況,此時(shí)僅使用2 種尺度特征圖進(jìn)行目標(biāo)檢測(cè)易產(chǎn)生對(duì)遮擋目標(biāo)和較小目標(biāo)的識(shí)別率較低的情況。為了更好地檢測(cè)行人,本文所提出的網(wǎng)絡(luò)模型YOLOv4-tiny-I 使用19×19、38×38 和76×76 這3 種尺度特征圖來(lái)預(yù)測(cè)檢測(cè)結(jié)果,使用3種尺度不僅可提升檢測(cè)范圍,還能提供更豐富的淺層特征信息,進(jìn)而能更好地將低層的特征和高層的特征融合起來(lái)進(jìn)行多尺度圖像預(yù)測(cè)。YOLOv4-tiny-I網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 YOLOv4-tiny-I網(wǎng)絡(luò)結(jié)構(gòu)
He 等[14]為了解決在一般卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中輸入網(wǎng)絡(luò)的圖片大小必須固定的問(wèn)題,提出了空間金字塔池化思想,該思想使用多級(jí)大小空間窗口對(duì)輸入特征層進(jìn)行多尺度池化并融合,從而能夠?qū)σ匀我獯笮≥斎氲膱D像產(chǎn)生相同尺度的輸出。借鑒He 等人提出的思想,本文使用如圖3中所示的空間金字塔池化SPP模塊,通過(guò)大小分別為5×5、9×9 和13×13 的池化窗口對(duì)特征圖進(jìn)行池化,將多尺度特征進(jìn)行融合,從而豐富語(yǔ)義信息。由于特征圖在深層網(wǎng)絡(luò)中空間信息較少,而SPP模塊可以提取物體不同范圍的全局特征和局部特征,將這些特征信息融合后便可以豐富深層特征圖上的空間信息。骨干網(wǎng)絡(luò)之后是特征圖空間信息較少的位置,在此處增加SPP模塊能夠使特征圖空間信息增多,有助于提高不同尺度紅外行人的識(shí)別和定位能力。故YOLOv4-tiny-I模型在骨干網(wǎng)絡(luò)后增加SPP模塊。
CBAM由Woo等[15]于2018年提出,該模塊由通道注意力模塊(Channel Attention Module,CAM)和空間注意力模塊(Spatial Attention Module,SAM)構(gòu)成,如圖4 所示。CBAM通過(guò)學(xué)習(xí)的方式,在目標(biāo)檢測(cè)網(wǎng)絡(luò)的特征通道維度及特征空間維度計(jì)算原始特征圖的注意力權(quán)重圖,然后將注意力權(quán)重圖賦予原始特征圖,從而使網(wǎng)絡(luò)重點(diǎn)關(guān)注目標(biāo)區(qū)域。在實(shí)際紅外行人檢測(cè)識(shí)別過(guò)程中,行人背景包含大量混淆信息,現(xiàn)有的網(wǎng)絡(luò)往往無(wú)法將其剔除,導(dǎo)致訓(xùn)練后得到的權(quán)重信息中摻雜大量的混淆信息,影響檢測(cè)性能。因此,模型YOLOv4-tiny-I 在增添SPP模塊的基礎(chǔ)上,引入CBAM模塊來(lái)關(guān)注重點(diǎn)特征并抑制非必要特征。CBAM 的CAM 模塊對(duì)通道進(jìn)行重新加權(quán)、SAM針對(duì)特征圖上每個(gè)像素進(jìn)行加權(quán),高階特征引導(dǎo)低階特征進(jìn)行通道注意力獲取,低階特征反向指導(dǎo)高階特征進(jìn)行空間注意力篩選,從而使得網(wǎng)絡(luò)特征圖中有目標(biāo)物體的區(qū)域權(quán)重提高,進(jìn)而提高網(wǎng)絡(luò)檢測(cè)精度。YOLOv4-tiny-I 模型在3 個(gè)檢測(cè)頭之前引入CBAM 模塊,可以避免背景像素對(duì)檢測(cè)頭的干擾,同時(shí)能夠使網(wǎng)絡(luò)具備對(duì)不同級(jí)別特征圖進(jìn)行信息整合的能力。
圖4 CBAM注意力模塊
為了評(píng)估本文提出的2種紅外行人檢測(cè)方法,設(shè)計(jì)了相關(guān)試驗(yàn)進(jìn)行驗(yàn)證。
在本文所有試驗(yàn)中,網(wǎng)絡(luò)模型均在Google Colab 云服務(wù)器進(jìn)行訓(xùn)練,訓(xùn)練好的模型均部署于NVIDIA 的嵌入式開發(fā)板Jetson TX2 上進(jìn)行測(cè)試,TX2 設(shè)備如圖5 所示。試驗(yàn)基于Darknet框架進(jìn)行。平臺(tái)的相關(guān)參數(shù)如表1所示。
表1 平臺(tái)參數(shù)
圖5 Jetson TX2設(shè)備
訓(xùn)練網(wǎng)絡(luò)模型時(shí),采用的訓(xùn)練超參數(shù)均保持一致。輸入批量大小Batch 設(shè)置為64,初始化學(xué)習(xí)率為0.001,梯度下降動(dòng)量參數(shù)設(shè)置為0.9,權(quán)重衰減正則項(xiàng)系數(shù)設(shè)置為0.000 5。
試驗(yàn)采用菲力爾(FLIR)公司于2018年7月發(fā)布的公開紅外數(shù)據(jù)集[16]。該數(shù)據(jù)集采集地點(diǎn)為美國(guó)加利福尼亞州圣巴巴拉市的街道和公路上,時(shí)間為11 月至次年5 月期間的日間(60%)和夜間(40%),采用紅外熱像儀進(jìn)行采集,紅外分辨率為640×512。FLIR數(shù)據(jù)集文件包含3個(gè)文件夾train、val、video,類別包含人、汽車、自行車、狗和其他,對(duì)train、val 文件夾進(jìn)行處理篩選出包含行人類別的圖片共7 044 張,將其按照5∶1 的比例劃分為訓(xùn)練集和測(cè)試集。劃分后的部分FLIR 數(shù)據(jù)集如圖6所示。
圖6 FLIR紅外數(shù)據(jù)集
使用K-means++聚類算法得到各模型的先驗(yàn)框尺寸:YOLOv4-tiny 模型的為(11,19)、(14,32)、(19,51)、(29,74)、(46,122)、(78,196);YOLOv4-tiny-I 模型的為(11,23)、(13,37)、(15,50)、(17,65)、(21,82)、(22,48)、(28,80)、(36,120)、(61,201)。
在車輛前方紅外行人的檢測(cè)中,需要考慮網(wǎng)絡(luò)的檢測(cè)準(zhǔn)確率與實(shí)時(shí)性。本文選取平均準(zhǔn)確率(mean Average Precision,mAP)和幀率作為紅外行人檢測(cè)的評(píng)價(jià)指標(biāo)。mAP 與準(zhǔn)確率(Precision)P、召回率(Recall)R有關(guān),相關(guān)計(jì)算公式為:
式中,T為被正確劃分到正樣本的數(shù)量;F為被錯(cuò)誤劃分到正樣本的數(shù)量;N為被錯(cuò)誤劃分到負(fù)樣本的數(shù)量;M為類別總數(shù),本文僅檢測(cè)行人,故取M=1;A(k)為第k類的平均準(zhǔn)確率。
YOLOv4-tiny 模型在檢測(cè)時(shí)會(huì)將輸入圖片進(jìn)行尺寸標(biāo)準(zhǔn)化,輸入尺寸設(shè)置越大,平均準(zhǔn)確率越高,但檢測(cè)速度會(huì)下降。為了選擇合適的圖片輸入尺寸,設(shè)置了對(duì)比試驗(yàn),如表2 所示。以輸入尺寸608×608 為基準(zhǔn),輸入尺寸高于該基準(zhǔn)時(shí)幀率下降較多,對(duì)檢測(cè)實(shí)時(shí)性不利;輸入尺寸低于該基準(zhǔn)時(shí)平均準(zhǔn)確率較低,對(duì)精準(zhǔn)檢測(cè)不利。綜合檢測(cè)精度和速度,當(dāng)輸入尺寸設(shè)置為608×608時(shí),網(wǎng)絡(luò)檢測(cè)精度較高且檢測(cè)速度也較快。因此選定圖像輸入尺寸為608×608。
表2 圖片輸入尺寸對(duì)檢測(cè)性能的影響
為了測(cè)試與YOLOv4-tiny 網(wǎng)絡(luò)結(jié)合的每個(gè)模塊對(duì)紅外行人檢測(cè)的影響,設(shè)置了對(duì)比試驗(yàn),并將原始FLIR數(shù)據(jù)集video文件夾下的圖片轉(zhuǎn)成視頻文件用于評(píng)估網(wǎng)絡(luò)模型。試驗(yàn)結(jié)果如表3所示。由表3可以看出:
表3 嵌入式模型部署對(duì)比結(jié)果
a.相較于原始網(wǎng)絡(luò)YOLOv4-tiny,模型YOLOv4-tiny+TensorRT 的準(zhǔn)確率降低了0.54%,這是由于TensorRT 在推理加速時(shí)采用了半精度加速推理策略對(duì)網(wǎng)絡(luò)權(quán)重進(jìn)行量化所導(dǎo)致的[17],但模型YOLOv4-tiny+TensorRT 的推理速度提升了86.43%,達(dá)到26.1 幀/s,做到了實(shí)時(shí)檢測(cè);
b.模型YOLOv4-tiny+3L增加了1個(gè)YOLO 層,該YOLO 層結(jié)構(gòu)不復(fù)雜,故幀率相較于YOLOv4-tiny 僅下降1.43%,平均準(zhǔn)確率相較于YOLOv4-tiny 增加4.35%,說(shuō)明增加1個(gè)YOLO層能夠有效改善模型檢測(cè)性能;
c.在增加1 個(gè)YOLO 層的基礎(chǔ)上再增加SPP 模塊,幀率小幅下降,平均準(zhǔn)確率相較于YOLOv4-tiny+3L增加3.48%,說(shuō)明SPP 模塊有效地豐富了深層特征圖上的空間信息,提升了網(wǎng)絡(luò)檢測(cè)準(zhǔn)確率;
d.本文所提出的YOLOv4-tiny-I模型在YOLOv4-tiny+3L+SPP 模型的基礎(chǔ)上又增加了3 個(gè)CBAM 模塊,所以幀率下降稍多,達(dá)到10.8 幀/s,但也能滿足車前紅外行人檢測(cè)的需要,平均準(zhǔn)確率增幅明顯,相較于YOLOv4-tiny+3L+SPP 增加了7.62%,達(dá)到了83.61%,說(shuō)明CBAM 模塊能夠?qū)⑻卣鲌D中有目標(biāo)物體的區(qū)域權(quán)重提高,進(jìn)而提高網(wǎng)絡(luò)檢測(cè)精度。
根據(jù)試驗(yàn)結(jié)果,本文選取YOLOv4-tiny+TensorRT和YOLOv4-tiny-I 作為車前紅外行人檢測(cè)的2 種方法。為直觀展現(xiàn)模型檢測(cè)效果,選取部分圖像進(jìn)行對(duì)比,如圖7 所示。從圖7a 和圖7b 中可以看出:YOLOv4-tiny+TensorRT和YOLOv4-tiny對(duì)行人識(shí)別效果基本一致,側(cè)面驗(yàn)證了TensorRT 在加速模型檢測(cè)時(shí)模型準(zhǔn)確率僅降低0.54%的試驗(yàn)結(jié)果的正確性;在場(chǎng)景1中,騎行者所在區(qū)域和周圍背景區(qū)域相似,可以發(fā)現(xiàn)YOLOv4-tiny算法在該騎行者的定位上有些偏差(騎行者的腳沒有完全在目標(biāo)檢測(cè)框內(nèi)),而YOLOv4-tiny-I 算法中該騎行者完全在目標(biāo)檢測(cè)框內(nèi);在場(chǎng)景2 中,有被遮擋的行人且行人目標(biāo)較小,通過(guò)比較能夠發(fā)現(xiàn),YOLOv4-tiny 未能識(shí)別到右側(cè)被遮擋的行人,而YOLOv4-tiny-I能成功識(shí)別出被遮擋的行人,驗(yàn)證了在模型YOLOv4-tiny-I中使用的3個(gè)YOLO層的有效性;場(chǎng)景3為正常情況下的行人,可以發(fā)現(xiàn)3個(gè)模型對(duì)其均有很好的識(shí)別效果。
圖7 3種模型的檢測(cè)效果對(duì)比
本文提出2 種基于嵌入式平臺(tái)的車前紅外行人檢測(cè)方法,YOLOv4-tiny+TensorRT 和YOLOv4-tiny+3L+SPP+CBAM:通過(guò)TensorRT 推理加速YOLOv4-tiny模型來(lái)提升檢測(cè)速度;通過(guò)修改YOLOv4-tiny模型結(jié)構(gòu)來(lái)提升檢測(cè)精度。第2種方法使用3個(gè)YOLO層進(jìn)行多尺度圖像預(yù)測(cè),同時(shí)引入SPP 模塊來(lái)加強(qiáng)多尺度特征融合,進(jìn)一步豐富了深層特征圖的表達(dá)能力,并引入CBAM模塊來(lái)關(guān)注重點(diǎn)特征,同時(shí)抑制非必要特征。試驗(yàn)結(jié)果表明:相較于原始網(wǎng)絡(luò)YOLOv4-tiny,所提出的第1種方法平均準(zhǔn)確率降低0.54%,推理速度提升86.43%(達(dá)到26.1 幀/s);第2 種方法平均準(zhǔn)確率提升16.21%,推理速度降低22.86%(達(dá)到10.8幀/s)。2種方法均能滿足車前紅外行人檢測(cè)的需要。在實(shí)際應(yīng)用中,若對(duì)檢測(cè)速度要求高,可選用第1種方法,若對(duì)檢測(cè)精度要求高,可選用第2種方法。