景 亮 王 瑞 劉 慧 沈 躍
(江蘇大學電氣信息工程學院, 鎮(zhèn)江 212013)
我國是果業(yè)大國,果園機器人能降低勞動強度,顯著提高對果樹噴藥、果實采摘和樹枝修剪等作業(yè)效率,是果園智能化的重要發(fā)展方向。無人駕駛的農(nóng)業(yè)機械會對果農(nóng)和機械操作人員造成安全威脅[1]。在美國、韓國等農(nóng)機化程度較高的國家,每年都會發(fā)生多起農(nóng)機事故,造成人員傷亡和經(jīng)濟損失,即便是有人駕駛農(nóng)機仍不能避免事故發(fā)生。因此,果園機器人在作業(yè)或行進過程中,必須實時檢測周圍行人,以確保安全[1]。
行人檢測相當于目標檢測的子任務,通過改進目標檢測算法可以實現(xiàn)對某一特定目標的檢測。目前,基于大數(shù)據(jù)集和卷積神經(jīng)網(wǎng)絡(luò)的目標檢測算法已經(jīng)取得了很多成果。在目標識別領(lǐng)域,深度卷積神經(jīng)網(wǎng)絡(luò)的檢測算法的準確率大大超過了基于HOG(Histogram of oriented gradient)和SIFT(Scale-invariant feature transform)的目標檢測算法[2]。基于卷積神經(jīng)網(wǎng)絡(luò)目標檢測算法的特點,不需要手動設(shè)計特定特征提取器,深層的卷積神經(jīng)網(wǎng)絡(luò)可通過大量訓練自動學習圖像的特征,從而得到可靠的檢測結(jié)果。典型的目標檢測算法有基于區(qū)域生成的卷積網(wǎng)絡(luò)結(jié)構(gòu),如R-CNN[3]、Fast R-CNN[4]和Faster R-CNN[5];另一類是把目標位置的檢測視作回歸問題,直接利用CNN(Convolutional neural networks)網(wǎng)絡(luò)結(jié)構(gòu)對整個圖像進行處理,同時預測出目標的類別和位置,如YOLO[6-7](You only look once)和SSD[8](Single shot multibox detector)等。
通過改進目標檢測算法實現(xiàn)行人檢測已經(jīng)取得了大量研究成果。文獻[9]通過修改基礎(chǔ)網(wǎng)絡(luò)、調(diào)整特征層的縮放因子等策略改進了SSD。文獻[10]基于YOLOv3融入標簽平滑,增加多尺度檢測增強其魯棒性和泛化能力?;谏疃葘W習的行人檢測算法具有較好的檢測性能,被廣泛應用于各種環(huán)境。文獻[11]針對霧天交通環(huán)境,通過去霧技術(shù)處理數(shù)據(jù),訓練出適用于霧天環(huán)境下的行人檢測模型。文獻[12]通過改進候選區(qū)網(wǎng)絡(luò)結(jié)構(gòu)、特征融合等策略改進Fast R-CNN,將其應用到煤礦井下的行人檢測。
目前,大多數(shù)關(guān)于行人檢測的研究都是基于自然光場景,其圖像品質(zhì)相對較高。如VOC(Visual object classes)數(shù)據(jù)集[13]、微軟的COCO(Common objects in context)數(shù)據(jù)集[14]等都是基于自然場景。在果園環(huán)境中,影響行人檢測的因素包括不斷變化的光照強度、信息復雜的行人所處背景,以及行人姿態(tài)、外形和服飾的多樣性和遮擋性等。為促進農(nóng)業(yè)環(huán)境中行人檢測的研究,卡耐基梅隆大學國家機器人工程中心使用2個不同的車輛試驗臺捕獲不同農(nóng)業(yè)環(huán)境中的行人,制作了相應的行人檢測數(shù)據(jù)集[15],并對其進行初步測試。文獻[16]提出一種卷積神經(jīng)網(wǎng)絡(luò)對包括行人的農(nóng)田障礙物進行識別。文獻[17]通過修改基礎(chǔ)網(wǎng)絡(luò)、改進輔助網(wǎng)絡(luò)層結(jié)構(gòu)改進SSD算法,將其應用于果園行人檢測,并借助果園行人檢測數(shù)據(jù)集驗證了其準確性和實時性,該研究僅對行人障礙物進行檢測,沒有對其進行定位。本文改進YOLOv3算法,并結(jié)合雙目相機對行人、障礙物進行檢測和定位。
本文提出的結(jié)合改進YOLOv3目標檢測算法和雙目相機檢測果園環(huán)境中行人障礙物方法原理框圖如圖1所示。雙目相機從2個不同位置獲取2幅高分辨率RGB圖像,通過視差原理計算出深度信息。將左邊攝像頭的RGB圖像作為YOLOv3目標檢測算法的輸入,網(wǎng)絡(luò)模型輸出場景中的目標識別結(jié)果。根據(jù)深度信息對行人障礙物進行定位。本文使用卷積神經(jīng)網(wǎng)絡(luò)、結(jié)合雙目相機進行農(nóng)業(yè)車輛自動作業(yè)過程中的行人障礙物檢測與定位。

圖1 行人檢測方法原理框圖Fig.1 Framework of pedestrian detection method
YOLOv3是一種結(jié)合了HE提出的Res-Net和YOLOv2中提出的Darknet19[6]的新網(wǎng)絡(luò),帶有53個卷積層的Darknet53,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

圖2 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Network structure of YOLOv3
YOLOv3采用特征金字塔網(wǎng)絡(luò)[18]思想,將第1個預測層前的特征圖進行上采樣處理。并將上采樣的特征圖與網(wǎng)絡(luò)中之前相同大小的特征圖進行特征融合。然后在第2個預測層前添加卷積層來處理融合后的特征圖。第3個預測層也是類似的架構(gòu)。這種結(jié)構(gòu)可以在預測中獲得更細膩的圖像特征,但是連接相對粗糙,感受視野小、缺乏豐富的語義信息。
為解決上述YOLOv3所存在的問題,在YOLOv3中引入了樹形特征融合模塊TFA(Tree-structured feature aggregation module)[19],可以在復雜場景中捕獲層次上下文信息并表示多尺度對象,擴大感受野范圍。TFA模塊以主干網(wǎng)提取的特征圖作為輸入,遵循擴展疊加規(guī)則,有效地對多尺度特征進行提取。TFA模塊和其擴展規(guī)則如圖3所示。

圖3 樹形特征融合模塊及其擴展規(guī)則Fig.3 Tree-structured feature aggregation module and expansion rule
在每個展開步驟中,輸入被復制到2個分支。一個分支保留此時的圖像特征,而另一個分支探索更大范圍內(nèi)的空間依賴關(guān)系。同時,通過級聯(lián)將當前步驟的輸出特性與之前的特性進行疊加。該展開式和疊加規(guī)則可表示為
on=fn(on-1)
(1)
Hn(x)=g(Hn-1(x),on)
(2)
式中x——TFA模塊的輸入
on——第n步操作的輸出
fn——第n步卷積操作
Hn——執(zhí)行n步的TFA模塊的結(jié)果
g——特征融合操作
使用了3個不同的卷積核在TFA模塊中捕獲多尺度特征,然后進行批處理標準化和加入ReLU層。最后融合所有分支的特性。
在試驗中,本文使用了3個擴展步驟的TFA模塊,第1個擴展塊使用1×1的卷積核,第2、3個擴展塊分別使用3×3和5×5的卷積核,不同的卷積運算可以獲得輸入圖像的不同接收域信息。1×1的卷積核只有1個參數(shù),可對特征圖進行縮放,主要功能是實現(xiàn)跨通道的信息交互、整合和改變通道數(shù)。3×3和5×5的卷積核在后面的擴展步驟中獲得不同接收域信息,為大范圍內(nèi)的小對象提供語義信息。3個擴展步驟形成樹形層次結(jié)構(gòu),后續(xù)的步驟中可以重新探索從前面的步驟中學習到的特性,這優(yōu)于現(xiàn)有的具有多個獨立分支的并行結(jié)構(gòu)。
如圖4所示,改進的網(wǎng)絡(luò)結(jié)構(gòu)在YOLOv3的基礎(chǔ)上分別于第2和第3個預測層之前引入TFA模塊,通過該模塊提取對象更多的語義特征。然后將其輸出的高階特征圖和低階特征圖進行特征融合,該結(jié)構(gòu)中的多尺度卷積核提供了不同的接收域和更多有意義的語義特征,有利于復雜環(huán)境下對象的檢測。

圖4 目標檢測網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Object detection network structure
雙目立體視覺測距原理[20-21]是依據(jù)人眼視覺系統(tǒng)建立的,通過左右相機觀察到的圖像差異來判斷物體的距離,如圖5所示。相機被看作針孔相機,水平放置,2個相機的光圈中心都在X軸上。兩者之間的距離稱為雙目相機的基線(Baseline,記作b)。其中,OL、OR為左、右光圈中心,方框為成像平面,f為焦距。

圖5 雙目相機測距原理圖Fig.5 Schematic of distance measurement of binocular camera
考慮一個空間點P,它在左眼相機和右眼相機各成一像,記作PL、PR。由于相機基線的存在,這2個成像位置不同。理想情況下,由于左右相機只在X軸上有位置偏差,因此P點的像也只在X軸(對應圖像的u軸)上有差異。uR和uL分別為成像平面的右側(cè)坐標和左側(cè)坐標。按圖中坐標定義,uR應該是負數(shù),所以圖中標示為-uR。
如圖5b所示,根據(jù)△PPLPR和△POLOR的相似關(guān)系,有
(3)

(4)
其中
d=uL-uR
(5)
式中d——左右圖的橫坐標之差,稱為視差
z——所需要的3D空間的目標距離
通過式(4)、(5),在已知基線和焦距的情況下,獲得視差d后,計算目標點的Z坐標。
用ZED相機配套的工具SDK,結(jié)合OpenCV庫和API獲取目標區(qū)域的像素點位置信息。當雙目相機獲取到圖像后通過目標檢測算法得到行人在圖像中的位置。同時可以獲得該像素與相機的距離信息,從而使用歐幾里德距離公式計算行人相對于相機的距離。
在城市環(huán)境中檢測行人的工作已經(jīng)做得相當多。在這個領(lǐng)域已經(jīng)有很多很好的數(shù)據(jù)集,促進了該領(lǐng)域的研究發(fā)展。農(nóng)業(yè)環(huán)境中的行人識別和城市環(huán)境之間存在一些差異。針對這些差異,卡耐基梅隆大學國家機器人工程中心的PEZZEMENTI等[15]制作的農(nóng)業(yè)環(huán)境中行人檢測數(shù)據(jù)集,包括蘋果園和橙園環(huán)境中的已標注圖像,以促進在農(nóng)業(yè)環(huán)境下自動化設(shè)備的應用與發(fā)展。數(shù)據(jù)集分為訓練集、驗證集和測試集,不同類型數(shù)據(jù)集圖像數(shù)量如表1所示。其中包含行人的圖像分為靜止狀態(tài)和移動狀態(tài);按照行人目標所占像素區(qū)域面積分為小目標、中等目標、大目標;按照行人的姿勢分為正常姿勢、非正常姿勢,其中正常姿勢是指正常站立姿勢,非正常姿勢包括躺、坐、蹲等姿勢。

表1 不同子集中標記為正(P,包含一個人)和負(N,不包含人)的圖像數(shù)量Tab.1 Counts of labeled images in each subset for positive (P, containing a person) and negative (N, person-free) images
在32 GB內(nèi)存、NVIDIA GTX1080TI型GPU、AMD 銳龍5-2600X CPU的硬件平臺上對改進的YOLOv3算法進行了訓練。
為了提高模型的檢測精度,適應Darknet53框架所需的輸入,將輸入圖像調(diào)整為608像素×608像素??紤]到硬件平臺的內(nèi)存限制,本試驗將批處理規(guī)模設(shè)置為64。
沖量、初始學習率、權(quán)值衰減系數(shù)等參數(shù)是YOLOv3算法中的原始參數(shù),分別設(shè)置為:0.9、0.001、0.000 5對模型進行訓練。為了更好地分析,網(wǎng)絡(luò)訓練迭代了70 000次。
本文利用訓練后的網(wǎng)絡(luò)模型對測試圖像進行了一系列試驗,使用數(shù)據(jù)集中的測試集驗證了算法的性能。
對于二分類問題,樣本可以分為4類:模型預測為正的正樣本(True positive, TP),其數(shù)量為TP;模型預測為負的負樣本(True negative, TN),其數(shù)量為TN;模型預測為正的負樣本(False positive, FP),其數(shù)量為FP;模型預測為負的正樣本(False negative, FN),其數(shù)量為FN。網(wǎng)絡(luò)性能的評價指標選取準確率(Precision,P)、召回率(Recall,R)和調(diào)和均值F1。
用果園的測試集分別對改進前后的YOLOv3目標檢測模型進行測試,試驗結(jié)果如表2所示。通過在YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)中引入TFA特征融合模塊提高了網(wǎng)絡(luò)提取圖像特征的能力和檢測精度。改進后的算法準確率和召回率分別為95.34%、91.52%,較原網(wǎng)絡(luò)有所提升。其檢測速度有所下降,但仍能達到30.26 f/ms的檢測速度,滿足在農(nóng)業(yè)環(huán)境中對實時性的要求。

表2 YOLOv3改進前后的測試結(jié)果比較Tab.2 Comparison of YOLOv3 detection results before and after improvement
行人在不同情況下的檢測結(jié)果如表3所示。由表3可知,行人在運動狀態(tài)下對檢測結(jié)果有一定的影響,檢測效果隨行人與相機距離的縮短而逐漸增強,該網(wǎng)絡(luò)對于小目標的檢測性能較弱。非正常姿態(tài)下行人的檢測準確率比正常姿態(tài)下檢測準確率稍低。由于改進后的網(wǎng)絡(luò)加入了TFA模塊,使用不同尺度卷積將圖像特征進行融合,更有利于提取細小特征,小目標和非正常狀態(tài)下的檢測性能分別提升了1.20、0.96個百分點;對其他狀態(tài)下的檢測性能提升表現(xiàn)不佳。改進的YOLOv3網(wǎng)絡(luò)對不同情況下行人的檢測結(jié)果如圖6所示。

表3 不同情況下的行人檢測結(jié)果Tab.3 Detection results of various status pedestrian %
為了驗證該算法在移動平臺上對于果園環(huán)境中的行人檢測可行性與定位精度,將目標檢測算法部署到移動硬件平臺上,平臺處于靜止狀態(tài),對園林環(huán)境中的不同狀態(tài)行人和不同距離進行了測試試驗。
試驗硬件平臺:NVIDIA Jetson agx Xavier硬件平臺,搭載有Volta Tensor Core GPU、8核ARM64 CPU以及NVDLA深度學習加速器等,并結(jié)合OpenCV3.0和API函數(shù)庫在Linux系統(tǒng)中實現(xiàn)行人、障礙物的檢測與定位。
在該試驗平臺上本算法檢測速度可以達到30.26 f/ms,可以實時對行人進行檢測與定位。并進行多次試驗,對行人的檢測精度進行測量。行人檢測與定位試驗如圖7所示。

圖7 改進YOLOv3模型室外模擬果園環(huán)境的檢測結(jié)果Fig.7 Detection results of improved YOLOv3 model insimulated agricultural environment
為了測試該方法的定位精度,每隔1 m進行1次行人的距離測量,采用人工方法進行行人與相機的深度距離方向(Z方向)與水平距離方向(X方向)測量,將3次測量的均值作為實測數(shù)據(jù)。以該數(shù)據(jù)作為參考,計算試驗數(shù)據(jù)的相對誤差。
ZED相機的深度感知距離最遠可達到30 m。由于農(nóng)機障礙物檢測系統(tǒng)獲取前方20 m的障礙物信息足夠滿足農(nóng)機進行避障規(guī)劃,故未測試大于20 m的深度距離。試驗結(jié)果如表4所示,在深度方向20 m以內(nèi),本方法具有較好的定位能力,平均相對誤差僅為1.65%,最大相對誤差為3.80%。

表4 深度距離方向的試驗距離與實測距離對比Tab.4 Comparison between experimental distance and measured distance in depth direction
(1)在YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)中引入樹形特征融合模塊,模塊中使用不同尺寸的卷積核增強其對多層次目標的特征提取能力,提高了其檢測性能。基于卡耐基梅隆大學國家機器人工程中心開放的用于農(nóng)業(yè)環(huán)境中行人檢測的數(shù)據(jù)集對模型進行訓練和測試。結(jié)果表明,該模型具有較高的準確率和檢測速度,準確率和召回率分別達到95.34%、91.52%,比原模型分別提高了0.48、1.33個百分點,檢測速度可達到30.26 f/ms。
(2)通過目標檢測算法獲得圖像中的目標像素信息,使用雙目相機的像素距離信息計算其相對于相機的三維坐標。試驗表明,本方法可以檢測到行人、障礙物深度距離方向的平均相對誤差為1.65%,最大相對誤差為3.80%。說明該方法可以對行人和障礙物進行較準確的定位,為無人駕駛農(nóng)機避障提供可靠的定位信息。