張 童,譚南林,包辰銘
(北京交通大學機械與電子控制工程學院,北京 100044)
隨著智能駕駛和機器人在工業、軍事和科學研究方面的快速發展,目標檢測技術的發展顯得尤為重要。智能駕駛的自動導航和避障受到了越來越多的關注,為了保障無人駕駛和機器人運動的安全性,必須有實時的目標檢測技術。不同環境下的障礙物檢測由于環境的不同、目標形態的多變性、光照不同的外部條件變化等,檢測起來難度較高。
現有紅外行人檢測一般有兩種方法,一種是基于人工提取特征進行特征學習并分類的方法[1],一種是基于深度學習提取特征的方法[2]。基于人工提取特征檢測的方式,是在給定的一張圖像上選取固定大小的區域,利用選取的區域人工設計提取特征(比如HOG[3]、SIFT[4]),對于提取的特征進行學習并用分類器進行分類(比如SVM[3])。此類方需通過滑動窗口實現,時間復雜度較高,且魯棒性不強,很難保障紅外行人檢測的實時性。基于深度學習的方法是利用深度卷積網絡[5]從圖像中提取特征從而進行目標檢測的方法,其特征一般要強于人工提取的特征,可分為one-stage和two-stage兩大類。先提出來的two-stage通過產生潛在候選區域,根據訓練的分類器來進行分類,代表性的網絡為R-CNN[6]、SPPNet[7]、Fast R-CNN[8]和Faster R-CNN[9]等。One-stage的方法是直接通過神經網絡預測出行人的位置,代表性網絡有SSD[10]和YOLO[11]。隨著YOLO[11-13]的提出和不斷改進,YOLOv2[12]和YOLOv3[13]增強了模型的魯棒性和準確率及檢測速度,且準確率上已經超過了SSD。
綜合考慮上述問題,本文提出了一種新型紅外行人檢測方法,可以應用于嵌入式設備。新方法的檢測網絡結構以YOLOv3模型為基礎,對其模型參數進行優化,并結合MobileNet[14]網絡將原始網絡層進行壓縮、簡化,學習MobileNet網絡的深度可分離卷積(Depth-wise Separable Convolutions)的思想壓縮網絡模型參數,同時利用YOLOv3的框架思路來提升網絡的檢測能力。
YOLO(You Look Only Once)是由Redmon等人在2015年首先提出來的[11],該模型不需要生成建議區域,直接對圖像進行卷積操作,是一個End-to-End的網絡。該模型利用整張圖作為整個神經網絡的Input,直接在輸出層利用回歸的思想計算出Bounding Box(邊界框)的位置及其類別,隨后通過非極大值抑制操作(NMS)去除多余的預測邊界框,最終得到預測結果。Redmon等人于2016年提出了改進版YOLOv2[12],2018年提出 YOLOv3[13],對YOLO系列進行了革命性的改造,作者設計出高效的Darknet-53網絡,使用了大量的1×1、3×3的卷積核,圖像的大小縮減為1/32,即YOLOv3要求輸入圖片是32的倍數。
YOLOv3目標檢測模型采用自主設計的Darknet-53網絡模型提取特征,但是該網絡模型有53層深度,且在卷積運算過程中參數眾多,這導致在網絡運行前向傳播的過程中,特征提取模型參數文件大,耗費時間長,無法應用于嵌入式平臺。
在紅外行人檢測中,檢測目標單一(行人),紅外圖像的色彩豐富度較低。考慮到YOLOv3的Darknet-53網絡模型是針對COCO和VOC多種類目標檢測而設計,將其應用于紅外圖像的行人檢測時,可以通過減少部分網絡層數簡化網絡來提升紅外行人檢測速度。
現有神經網絡優化方法多采用兩種方式來取得較小且有效的網絡。一種是壓縮預訓練模型;另一種是直接設計一個小型有效的網絡模型進行訓練。代表性的研究有:Christian Szegedy提出Inception網絡[15],使用多尺寸卷積核去觀察輸入數據,并加入1×1的卷積核對數據進行降維處理;Bottleneck對Inception進行了改進[16],先用逐點卷積來降維,再進行常規卷積,最后逐點卷積來升維,該方法大大減小了計算量。Howard A G在Bottleneck的基礎上提出了深度可分離卷積(Depth-Wise Separable Conv)[14],將標準卷積分解成深度卷積和逐點卷積,大幅度降低了模型的參數量和計算量,運算分解圖如圖1所示。
圖1中,a為標準的卷積核,為Dk×Dk×M的標準卷積矩陣,b是Dk×Dk×1 的深度卷積矩陣,c為1×1×M的逐點卷積矩陣。
兩種不同方式的計算量如下:
標準卷積計算量為:
Gs=Dk×Dk×M×N×DF×DF
(1)
深度可分離卷積計算量為 :
Gds=Dk×Dk×M×DF×DF+M×N×DF×DF
(2)
將深度可分離卷積和標準卷積對比:

(3)
當選取的Dk=3時,計算量大概為標準卷積的1/9,計算示意圖如圖2所示。圖2中,a為標準卷積,b為深度可分離卷積,在深度卷積和逐點卷積之后都跟有一個BN和ReLU運算,標準卷積和深度可分離卷積運算之后的特征圖尺寸和維度都相同。

圖1 深度可分離卷積運算

圖2 Dk=3時標準卷積和DW卷積計算對比圖
基于上述內容和紅外圖像的特點,我們結合改進后的深度卷積結構對YOLOv3模型主要進行了以下改進:
①采用MobileNet網絡替換Darknet-53網絡模型減少網絡的計算參數和模型大小。針對Darknet-53網絡模型較大,層數教深,不適合移植至嵌入式設備的問題,將其改進為Andrew G.Howard在深度可分離卷積基礎上提出應用于嵌入式設備的MobileNet[11]網絡,并將其原本的MobileNet-224網絡修改為MobileNet-320以獲得更好的準確率。
②將YOLOv3的輔助預測網絡部分的傳統卷積修改為深度可分離卷積。YOLOv3網絡模型輔助預測層有較多3×3傳統卷積,利用深度可分離卷積將傳統3×3卷積優化為深度卷積和逐點卷積以獲得更小更快的模型。
③在進行預測時,在CVC-09和CVC-14兩個數據集上重新在三個尺度使用K-means方法聚類出9個Bounding box,平均 IOU準確率達到87.23 %。
改進后的YOLOv3網絡結構如圖3所示。從圖3中可見,基礎網絡采用改進并去除最后全連接層的MobileNet-320網絡,輔助預測的網絡層使用經典的YOLOv3結構,在MobileNet-320中提取出三個不同尺度的特征圖的進行多尺度特征融合進行預測。
模型的原始圖片輸入尺寸是320×320,在網絡前向傳播中,提取出三個通道的特征圖輸入到預測網絡,其特征圖尺寸為40×40×256、20×20×512和10×10×1024,圖3所示的網絡結構中,通過跳躍連接的兩個特征圖具有相同的尺度,兩處的特征圖的跳躍連接分別是20×20大小的尺度連接和40×40大小的尺度連接。在模型預測時,每一個Grid cell預測3個Bounding box,因為改進的紅外行人檢測模型采用的多尺度特征預測,一共在三個尺度進行預測,分別是10、20和40,所以Grid cell共有(10×10+20×20+40×40)×3個預測框,每個預測框有四個坐標參數(x,y,w,h)、一個置信度(obj_mask)和一個類別概率(class),相對于YOLOv3來說,該模型只預測行人一個目標,每一Grid cell對應的特征維數為3×(4+1+1)=18。

圖3 本文提出的紅外行人檢測網絡結構示意圖
在預測邊框的時候,總的損失函數Lloss是四個損失函數相加,四個損失函數分別是預測行人框的中心點坐標誤差Lxy、預測框的寬和高損失Lwh、預測行人的置信度損失Lconfi和預測行人的類別概率損失Lclass。
Lloss=Lxy+Lwh+Lconfi+Lclass
(4)
其中:
Lxy=∑[obj_mask×box_loss_scale×CEL(xygt,xypr)]
(5)
Lwh=∑[obj_mask×box_loss_scale×0.5×
(whgt-whpr)2]
(6)
Lconfi=∑[obj_mask×CEL(obj_mask,confi)
+(1-obj_mask)×CEL(obj_mask,confi)×
ignore_mask]
(7)
Lclass=∑[obj_mask×CEL(classgt,classpr)]
(8)
式中,obj_mask為預測的行人置信度;box_loss_scale為預測的行人框;CEL 代表二值交叉熵損失;xygt為行人框坐標的真實值;xypr為預測行人框的中心坐標;whgt為行人框的寬高的真實值;whpr為行人框的寬高;confi為行人的實際置信度;ignore_mask為IOU低于0.5但真實存在的標識;classgt為行人真實類別概率;classspr為預測的行人概率。
為了測試本文提出的實時紅外行人檢測網絡結構的性能,我們首先選擇了CVC的紅外行人數據集進行紅外行人檢測實驗,實驗中使用到了三個數據集,分別是VOC 2007、CVC-09和CVC-14。本文將CVC-09和CVC-14數據集進行混合,將訓練集、驗證集和測試集按照7∶2∶1的比例進行重新劃分整個數據集作為本文模型的數據集。圖4中展示了CVC-09(如圖4(a)、(b)所示)和CVC-14(如圖4(c)、(d)所示)混合之后的紅外行人示例圖片。

圖4 數據集CVC-09和數據集CVC-14的示例圖片
在檢測本文提出的模型時,因為是應用于目標檢測的模型檢測,所以使用兩個參數來評價模型的優劣,召回率(Recall)和平均準確率(mAP)作為紅外行人檢測的評價指標。
召回率、平均準確率計算公式如下:
(9)
(10)
(11)
通過實驗對本文提出的網絡模型進行紅外行人檢測模型的訓練和測試,將本文提出的模型和其他主流網絡模型進行對比:YOLOv3和YOLOv3-Tiny。YOLOv3是YOLO系列最新的目標檢測算法,也是現階段主流算法之一,而YOLOv3-Tiny是YOLO系列的作者提出的一個小型且快速的檢測網絡。在下述的模型訓練和檢測都是在NVIDIA GTX1080顯卡Ubuntu16.04同一平臺下進行,實驗采用的是上文介紹的CVC紅外行人數據集進行檢測。
實驗共分為兩輪,首先使用VOC2007數據集中的person目標類別粗調進行第一輪訓練作為預訓練模型。在預訓練模型的基礎上,使用混合好的CVC-09和CVC-14的圖片集進行訓練及驗證。分別采用YOLOv3、YOLOv3-Tiny和本文提出的行人檢測模型來進行訓練與測試,得到了如表1所示的結果。圖5展示的是在測試集的實驗中,使用YOLOv3(圖5(a)~(d))進行紅外行人檢測和使用本文模型進行紅外行人檢測的對比圖(圖5(e)~(f))。

表1 使用CVC-09數據集進行紅外行人檢測的實驗結果
從模型的測試結果可以看出,本文所提出的模型,在檢測準確率和召回率上比YOLO-Tiny好很多,但是和YOLOv3相比的話,準確率和召回率有一些差距。主要原因是在網絡的深度上進行了網絡模型的壓縮,基礎網絡由原來的53層網絡變成了28層的網絡,壓縮了網絡的深度和參數造成部分精度損失。




圖5 模型CVC測試集效果圖
現如今主流的Two-stage和One-stage目標檢測算法測試基于臺式機GPU,其功耗較大,難以做到嵌入式設備。在深度學習算法嵌入式設備移植中,本文所選取的是性能較好的NVIDIA Jetson TX2嵌入式GPU計算平臺來移植本文所提出的模型。
在本次的移植實驗中,針對本文提出的模型的正向傳播的檢測速度進行了對比實驗,將網絡模型部署在NVIDIA Jetson TX2嵌入式平臺上,選取CVC測試集中的400張紅外圖像,網絡模型中的輸入尺寸320×320,使用上述參數對網絡模型進行檢測速度的測試,并使用HT35S遠紅外相機進行實時性驗證,和現有的模型進行了對比實驗,實驗的過程和設備如圖6所示。圖6(a)采用YOLOv3檢測,圖6(b)采用YOLOv3-Tiny檢測,圖6(c)~(e)采及本文算法檢測,實驗結果如表2所示。

表2 紅外行人檢測速度在嵌入式設備TX2結果對比
從實驗結果可以看出,在臺式機的GPU(GTX 1080)上能夠達到實時行人檢測的算法如YOLOv3,在性能較好的嵌入式平臺(Jetson TX2)上的檢測速度僅有3FPS左右,而YOLOv3-Tiny雖然能夠達到實時性的標準,但紅外圖像中行人檢測的準確率和召回率卻很低,難以實際應用于無人駕駛或機器人中。本文所提出的行人檢測算法,準確率較高,實時性達到了11幀,比較適合應用于嵌入式系統如無人駕駛或機器人中進行紅外行人檢測。

圖6 嵌入式平臺紅外行人檢測
本文基于YOLOv3提出了一種適用于嵌入式設備的實時紅外行人檢測方法,利用深度可分離卷積操作簡化分解普通卷積操作,不僅簡化了整個深度神經網絡模型的大小,還加快了運算的速度,使得其更適合移植至嵌入式設備。根據實驗數據可以看出在嵌入式平臺基本實現了實時紅外行人檢測。通過文章中的實驗可以看出,深度可分離卷積和減少網絡層數會影響紅外行人檢測的準確率和召回率,說明深度神經網絡模型速度和精度是不可兼得的,提升速度是在損失一部分的準確率的條件下實現的。