劉洋,冀杰,趙立軍,2,馮偉,賀慶,王小康
1. 西南大學 工程技術學院,重慶 400715;2. 重慶文理學院 智能制造工程學院,重慶 永川 402160; 3. 重慶市農業(yè)科學院 農業(yè)機械研究所,重慶 404100
近年來,隨著我國農業(yè)技術水平的不斷提高,農業(yè)管理的智能化水平得到了快速發(fā)展.其中,樹干檢測是農業(yè)智能化管理中的重要內容之一,能夠為智能農機、果園機器人進行果樹噴霧[1]、果樹施肥[2]、果實采摘、樹木定位[3,4]、樹干直徑測量[5]、病蟲害檢測[6]、自主導航[7]等工作提供前期環(huán)境信息.因此,可靠的樹干檢測方法是推進農業(yè)智能化管理的關鍵技術.
目前,樹干檢測使用的傳感器主要為相機和激光雷達.相機的圖像數據具有紋理豐富、分辨率高且色彩多樣等特點; 相比圖像信息,激光雷達獲得的點云數據探測距離遠且具有空間信息.國內外學者針對兩者的檢測特點開展了大量研究.Zhao等[8]通過對相機圖像數據集進行數據增強以及K均值聚類等操作,結合YOLOv3-SPP模型進行樹木識別,達到了93.7%的召回率; 劉慧等[9]采用RGB-D相機進行樹干檢測,通過融合深度信息與紋理特征,提高了檢測速度與識別精度,但該算法受光照影響較大,仍需進一步改進.激光雷達通過發(fā)射脈沖激光并探測目標的散射光特性,從而精準獲取物體的三維深度信息,且受光線變化影響較小.張瑩瑩等[10]設計了一種基于二維激光雷達的樹干檢測算法,提出了自適應DBSCAN算法,在無干擾情況下平均誤檢為0.13棵; 牛潤新等[11]同樣基于二維激光雷達并進行二次直線擬合等操作去除了地面與雜草的干擾,平均樹干檢測精度為95.5%.然而,二維激光雷達獲取信息仍然較少,在農業(yè)上的使用受到許多限制.因此,劉偉洪等[12]采用三維激光雷達進行果園果樹的檢測與定位,通過傳統歐式聚類進行果樹檢測,但該方法在檢測精度上存在問題,在復雜場景下無法區(qū)別果樹與其他聚類結果.
雖然相機與激光雷達均可獨立進行樹干檢測,但都存在一定的局限性,對于一些復雜農業(yè)場景,單一傳感器依然難以滿足實際工作需求.對此,國內外學者嘗試將相機與激光雷達獲取的數據進行融合,以期實現更加可靠的樹干檢測.目前,在農業(yè)領域應用的相機與激光雷達融合檢測算法,主要針對二維激光雷達和單目相機.在這些算法中,相機主要起檢測作用,二維激光雷達用于返回寬度、距離等信息,進一步可對激光雷達信息進行簡單聚類,然后與相機信息進行融合和檢測[13-18].這些方法的缺陷在于,二維激光雷達獲取信息較少,檢測精度不夠,系統無法直接獲得樹干的三維信息,從而導致雷達點云難以進行精確聚類,使得檢測結果準確性過于依賴相機.當相機受到較大光照影響時,會顯著影響檢測精度.孫科等[19]將三維激光雷達與相機進行融合,通過聯合激光雷達與相機的檢測結果進行檢測與定位,彌補了二維激光雷達點云信息較少的缺陷,但使用的DBSCAN聚類算法對距離較為敏感,無法對較遠物體準確地聚類.
綜上所述,為提高樹干檢測的準確率和可靠性并獲得更多三維信息,本文提出一種基于相機與三維激光雷達融合的樹干檢測方法,基于深度圖對激光雷達采集到的三維點云進行聚類處理,同時采用深度學習算法YOLOv3對相機獲取的圖像進行準確識別,并基于交并比方法(Intersection over Union,IoU)對2種信息進行融合,最終輸出穩(wěn)定可靠的樹干檢測結果.
圖1 硬件系統框架
本研究以自主研發(fā)的智能無人除草機器人作為測試平臺,整體結構及傳感器布置如圖1所示.使用的相機為STEREOLABS公司生產的ZED2雙目相機,采樣頻率為60 Hz,分辨率為1 280×720,該采樣頻率和分辨率能夠同時滿足圖像處理速度和圖像信息豐富性的要求.激光雷達采用Velodyne公司生產的16線激光雷達VLP-16,采樣頻率為5~20 Hz,具有±15°的垂直視場以及360°的水平視場.運算平臺選用NVIDIA Jetson AGX Xavier,用于相機與激光雷達的實時數據處理和融合檢測.考慮到三維激光雷達獲取數據與安裝高度有關,將其安裝于移動除草機器人頂部,相機位于其下方偏后并保持水平.
軟件系統以運行在Ubuntu 18.04環(huán)境下的機器人操作系統(Robot Operating System,ROS)作為基礎,采用C++作為編程語言.VLP-16激光雷達用于采集作業(yè)環(huán)境的360°點云數據,而ZED2雙目相機用于采集前方圖像信息,將上述信息發(fā)送到NVIDIA Jetson AGX Xavier模塊進行數據處理: 1) 使用深度圖點云處理方法對激光雷達點云信息進行數據處理,實現地面去除以及點云聚類,并投影到圖像上獲得點云二維檢測框; 2) 使用訓練好的YOLOv3模型對圖像信息進行識別,獲得圖像檢測框、類別信息以及置信度; 3) 基于IoU對2種檢測框進行信息融合并完成樹干檢測.
基于激光雷達與相機的樹干檢測系統的總體框架如圖2所示.
圖2 軟件系統框架
不同傳感器采集到的數據在時間和空間上存在一定差異性,而信息融合需要確保所檢測到的物體處于同一時空下.因此,需要對相機與激光雷達進行時間標定與空間標定.2個傳感器的安裝位置及坐標系如圖3所示,OCXCYCZC為相機坐標系,OLXLYLZL為激光雷達坐標系.
圖3 激光雷達與相機安裝示意圖
圖4 各傳感器坐標系關系
不同傳感器的數據采樣頻率不一致,其中,ZED2相機的采樣頻率為60 Hz,而VLP-16激光雷達的采樣頻率為5~20 Hz.為了確保各傳感器采集的信息位于同一時刻,需要進行時間同步.由于2種傳感器工作時有同步的時間戳,本研究將使用時間最近鄰匹配方法,以采樣頻率較低的激光雷達為基礎,采集到點云數據之后,讀取對應的時間戳信息,找到時間戳間隔最小的圖像數據進行匹配,實現激光雷達與相機信息在時間上的統一.
由于不同傳感器的安裝位置不同,為了確保檢測的物體處于同一坐標系下,還需要進行空間配準.激光雷達與相機的坐標系之間存在如圖4所示的關系.其中,OLXLYLZL為激光雷達坐標系,OCXCYCZC為相機坐標系,xOfy為圖像坐標系,uOpv為像素坐標系.
由激光雷達坐標系OLXLYLZL轉換到像素坐標系uOpv的過程可表示為:
(1)
(2)
式中:ZC代表物體在相機坐標系下的Z軸坐標;K代表相機內部參數矩陣,矩陣的各項參數在相機設計生產時確定;R3×3、T3×1分別表示激光雷達坐標系到相機坐標系的旋轉與平移變換矩陣.只要求得公式(1)中R3×3、T3×1詳細參數,即可獲得激光雷達到相機的投影矩陣(R|T),從而將激光雷達點云投影到圖像中,實現后續(xù)的信息融合.通過激光雷達和相機聯合標定實驗,得到標定參數如表1所示,標定結果如圖5所示.從圖片右側可以看出激光雷達點云能夠準確地投影到對應圖像中,與圖像中的物體實現空間上的對齊.
表1 傳感器參數
圖5 激光雷達與相機標定結果
激光雷達通過檢測周圍物體反射回來的光脈沖或調制信號,獲得自身與物體之間的距離[20].運算平臺對激光雷達輸入的原始激光點云進行數據處理,通過點云聚類方法,從周圍復雜的點云環(huán)境中提取出樹干點云,并用于后續(xù)信息融合.激光雷達點云的聚類流程如圖6所示.
圖6 激光雷達點云聚類流程圖
激光雷達原始點云數據量大,直接對其進行數據處理會占用計算單元的較大算力并增加計算時間,不利于后續(xù)點云聚類.本文采用深度圖的方式將三維點云數據換算為距離數據并進行保存.具體流程為:
1) 根據激光雷達數據采集范圍設置二維圖大小,圖像縱向坐標為激光雷達線數,橫向坐標為激光雷達單線掃描點數.
2) 遍歷點云數據,計算各激光點到激光雷達的距離.
3) 將得到的距離信息按點云掃描排列順序填入圖像,得到如圖7所示的數據結構.
圖7 VLP-16激光雷達深度圖示意圖
使用深度圖進行點云處理主要有2個優(yōu)點: 1) 可以直接利用鄰域關系處理二維圖像,簡化聚類中的搜索問題.2) 降低了待處理三維點云的維度,使整體計算速度增快.
圖8 激光雷達相鄰線束地面激光點
在點云聚類中,地面點云會影響聚類精度,增大運算量,故需要先去除地面點云數據.對此,本文采用基于角度閾值的方法去除地面點云.由于深度圖的排列順序與激光雷達掃描順序相同,則深度圖中的一列數據,可以用來表示激光雷達在某個方向上所采集的所有縱向點.
假設激光雷達縱向相鄰的兩條掃描線打在地面上的點分別為A點與B點,其坐標分別為A(x0,y0,z0),B(x1,y1,z1),如圖8所示.
則A點與B點的垂直高度差hz可表示為:
hz=|z0-z1|
(3)
同理,A點與B點的水平距離差dAB可表示為:
(4)
根據A、B兩點水平距離差dAB和垂直高度差hz,計算A、B兩點連線的夾角θ:
θ=arctan (hz/dAB)
(5)
如果激光雷達完全水平安裝且地面平坦,理論上角度θ應為0°,考慮到實際安裝中的工藝誤差以及運動中的振動等因素,設置地面角度閾值10°,即當|θ|<10°時,認為A點與B點屬于地面點.對整個深度圖進行遍歷后,即可完全分割出地面點云,最終結果如圖9所示.
圖9 地面點云去除前后對比
在激光雷達的點云聚類中,本文選擇由Bogoslavskyi等提出的一種基于深度圖的聚類算法[21],主要根據相鄰點之間的角度關系來判斷是否屬于同一類.相比傳統的歐式聚類算法與DBSCAN算法,該算法能夠更加有效地覆蓋周圍點,并且對深度信息更加敏感,而樹干在豎直方向上近似于垂直地面,具有明顯的角度特征與深度特征,故該算法對樹干具有良好的聚類效果.
該算法的聚類原理如圖10所示.圖中A點與B點為任意兩相鄰點,O點為激光雷達坐標原點,連接OA、OB與AB,設OA為較長邊,過B點作OA垂線,垂足為C點,β為OA與AB夾角.其中,α為激光雷達水平分辨率或垂直分辨率對應角度.由此可以得出β的表達式為:
(6)
圖10 基于深度圖的點云聚類
設置β角的一個閾值為θ,當β>θ時,認為A點與B點相對平坦,存在同一深度; 當β<θ時,認為A點與B點之間的深度過大,可以認為兩者不屬于同一類.同時,采用廣度優(yōu)先搜索(Breadth First Search,BFS)作為該算法的搜索方式.廣度優(yōu)先搜索是圖搜索中的一種,根據起始點逐層展開深度圖中的相鄰節(jié)點,直到找到終點為止.基于這種搜索方式可以盡可能地遍歷起始點周圍所有滿足條件的點,實現更加準確的點云聚類.
具體算法流程如下:
1) 遍歷當前激光雷達點云對應的深度圖,選擇未被標記的一點,視為起始點.
2) 利用廣度優(yōu)先搜索對深度圖中該點的上、下、左、右4個點進行搜索,選擇未被標記的點,根據公式(6)進行角度計算,判斷其周圍點是否與其具有類似深度,如果具有類似深度則打上同一標記,返回該點并存儲; 如果深度差距過大則略過該點不進行存儲.
3) 對存儲的點繼續(xù)進行廣度優(yōu)先搜索,重復2)中的步驟,直到存儲的點遍歷完畢.
4) 繼續(xù)尋找下一個類,重復步驟1),2),3),直到深度圖中所有點均已被標記.
5) 對擁有同一標記的點的集合進行判斷,如果其總點數或縱向點數大于設定的最小閾值,則滿足聚類條件并將這些點視為同一類,否則將其視為噪聲點.
由于樹干具有近似垂直于地面的特點,因此,該算法不僅能夠區(qū)分不同深度的點云,而且能夠對樹干進行準確聚類.但是,對于墻體、雜草、樹葉等與樹干類似的物體,也存在一定的誤識別,如圖11所示.故本文采用一種自適應閾值的方法,對聚類算法進行了優(yōu)化,減少了其他物體對于聚類結果的影響.
圖11 傳統深度圖點云聚類結果
對于水平方向的激光雷達點云,由于激光雷達的水平分辨率較小,2個相鄰點到激光雷達的直線距離可以看作近似相等.那么,理想情況下2個相鄰點之間的距離s、激光雷達水平分辨率α、點到激光雷達的直線距離d之間滿足關系:
s=dtanα
(7)
對于直徑為D的樹干,其水平方向上的點云數量N,理論上應該為:
N=D/s
(8)
取樹干直徑最大、最小值分別為Dmax和Dmin,理論上接收的聚類點的最大和最小數量應為Nmax=Dmax/s和Nmin=Dmin/s.而在實際使用時,考慮到樹干橫截面為圓形,則水平方向上的聚類點數量Nleng存在一定變化,根據實際情況設置Nleng應滿足:
(Nmin-3) (9) 設置該條件為橫向點云的判斷閾值,根據距離遠近可自適應調節(jié)閾值大小,保證在不同距離下都能對點云進行限制.同理,也可以在縱向上對點云的數量進行限制.如圖12所示,以本研究采用的VLP-16激光雷達為例,其線束分布為水平線上方8條線束,下方8條線束,相鄰線束間隔為2°,縱向上形成±15°的測量范圍. 圖12 激光雷達線束分布 若已知激光雷達的安裝高度為h,則可以計算激光雷達最下方線束打到地面的水平距離為d0: (10) 同理,得到水平線下方所有線束打到地面的水平距離di.根據樹干與激光雷達的距離d,比較判斷di與d的大小,能夠確定水平線下方激光雷達打在樹干上的縱向總點數N1.設樹干的高度為H,樹干最高點到激光雷達中心點連線與水平線夾角為γ,則建立關于γ的公式為: (11) 水平線上方第一條線束與水平線夾角為1°,相鄰雷達線束間隔為2°,統計水平線上方各激光雷達線束與水平線之間的夾角,將這些夾角與計算得到的γ角進行比較,能夠確定水平線上方激光雷達打在樹干上的縱向總點數N2.那么,理論上高度為H的樹干在縱向上的總點數Nline應為: Nline=N1+N2 (12) 取樹干高度的最大、最小值分別為Hmax、Hmin,則可以限制樹干縱向上的總點數Nline應在對應的Nmax、Nmin之間.通過檢測樹干到激光雷達的距離,便可以在縱向上對樹干進行聚類點數的限制. 增加橫向和縱向上的自適應閾值,可以限制點云的聚類,從而去除許多與樹干擁有類似特征,但在橫、縱向上差異明顯的物體.圖13為2種聚類方法的對比,相比圖(a),圖(b)中的大面積墻體、樹葉、雜草等大部分無關數據都已去除.另外,完成聚類后,可以根據邊緣點云對應的三維坐標計算出三維框,再結合空間標定得到的投影矩陣,即可獲得樹干點云到圖像的二維框,如圖14所示. 圖13 聚類算法改進前后對比 圖14 樹干的三維框圖與二維投影圖 本文采用YOLOv3算法對相機圖像中的樹干信息進行檢測.YOLOv3[22]是目前應用較為廣泛的目標檢測算法之一,與其他YOLO算法相比較,其網絡結構(Darknet-53)得到了改進,在尺度預測和多標簽分類方面效果更加明顯.在該網絡結構下,通過對輸入的圖像進行特征提取以及訓練,可以在短時間內實現對目標的精確識別.同時,Darknet-53引入了殘差網絡結構[23],可以控制梯度傳播,這種結構的引入可以顯著提高訓練精度,使訓練的權重更加可靠. 本研究的圖像檢測部分采用公開的KITTI圖像數據集,從中挑選1 000張帶有樹木的圖像制作數據集,并用于YOLOv3的網絡訓練.其中,訓練集800張,測試集200張.其中實驗系統平臺采用Ubuntu 18.04,深度學習框架為PyTorch 1.2.0,CPU為八核ARM64 v8.2,GPU為NVIDIA Volta,內存為32GB LPDDR4x.通過圖15(a)中的損失變化曲線可以看出神經網絡模型對于數據的學習情況.由于類別較少,曲線在訓練開始后不久趨于平穩(wěn),經過多次訓練后收斂.經過測試后,其平均幀率約為31,對于20 m以內樹干檢測的平均精度為93.3%.由于該算法較為成熟且應用廣泛,本文不再詳細闡述該算法.在本地實驗場景下,利用YOLOv3檢測樹干的結果圖如圖15(b)所示. 圖15 基于YOLOv3的樹干檢測 利用前兩節(jié)提出的方法對激光雷達和相機數據進行處理,分別獲得了樹干的點云聚類結果和圖像檢測結果.點云聚類結果主要包含樹干的三維信息以及位置信息,而圖像檢測結果主要包含樹干的類別信息以及置信度.對2種傳感器的數據進行時間與空間同步后,可以得到點云三維框在圖像上投影的二維檢測框.然而,線束較少的激光雷達能提供的數據特征信息較少,在識別過程中,單獨使用激光雷達仍有可能將部分類似樹干的對象進行聚類并產生多余的檢測框.另外,相機雖然缺少深度方面的信息,但獲得的紋理信息更加豐富,能更準確地對樹干進行識別.因此,為了克服單一傳感器的不足和缺陷,本文通過計算2種檢測框的IoU實現2種傳感器的信息融合,進而準確識別樹干并獲取其三維信息. IoU表示2種檢測框的交集與并集的比值,是目標檢測中的常用概念,反映了2種檢測框的重疊關系,如圖16所示.本文采用該方法量化激光雷達聚類框與相機檢測框的重疊程度.設定一個重疊閾值,當2種框的IoU大于該閾值時認為融合檢測為同一物體,將相機檢測到的類別信息、置信度與激光雷達獲得的三維信息、位置信息相融合,輸出準確、豐富的檢測信息. 基于IoU的激光雷達和相機融合算法流程如下: 1) 從當前幀提取激光雷達點云聚類結果,通過時間同步找到匹配的圖像檢測結果. 2) 從圖像二維檢測框集合中選取1個檢測框,并與所有點云二維框進行IoU計算,當大于設定閾值時,認為相互匹配,融合兩者信息并輸出; 否則認為不匹配. 3) 遍歷完所有點云二維檢測框后,選取下一個圖像二維檢測框并重復2)中的步驟.直到當前幀所有圖像二維檢測框計算完畢.具體流程如圖17所示.圖18為2種檢測框基于IoU融合的結果圖,其中紅色框為YOLOv3檢測框,藍色框為激光雷達聚類框,通過IoU融合后輸出綠色的融合框. 圖16 IoU計算圖 圖17 基于IoU的融合算法流程圖 圖18 IoU融合圖 為驗證融合算法的穩(wěn)定性和可靠性,在某市農業(yè)機械研究所進行實驗,實驗場景中樹高為2~5 m,間距約為1~2 m,場景中樹木枝葉茂密,樹干高度、粗細存在一定差異.實驗中設置移動除草機器人的平均速度為0.8 m/s,在該場景下不同地點采集數據,進行了多組實驗來評估和對比算法性能. 本文選取了實驗過程中的3個場景進行分析比較,其中藍色框代表激光雷達聚類后投影的二維框,紅色框代表YOLOv3對樹干的檢測框,綠色框代表2種框融合后的檢測框.具體檢測結果如圖19-圖22所示. 從圖19可以看出,激光雷達的點云聚類結果中已經消除了墻體、雜草等影響因素,不會產生多余的聚類框.在進行激光雷達聚類結果與相機檢測結果融合時,可以有效降低計算量,減少異??驅θ诤系挠绊懖⑻岣邷蚀_度. 圖19 激光雷達聚類結果 圖20為激光雷達的聚類結果在圖像上投影形成的二維框,該二維框表征了激光雷達聚類結果在圖像中的位置.在去除了左側墻體、右側雜草等多余點云聚類二維框后,可以得到更加精簡的樹干聚類二維框. 從圖21可以看出,YOLOv3算法能夠實時、準確地檢測到圖像范圍內的大部分樹干,滿足算法的實時性和準確性要求.但是,由于部分樹干形狀復雜且有些樹枝存在較明顯的分叉,檢測時會出現對同一棵樹干進行重復檢測的現象,出現了多個檢測框.該問題需要在信息融合時借助激光雷達二維框消除該現象. 圖22中的綠色框代表了融合檢測結果,紅色字體表示該框對應的類別以及在圖像坐標系上的位置信息.借助融合檢測算法,能夠有效檢測出樹干部分并返回其位置坐標,消除了激光雷達與相機可能存在的誤檢,提高了檢測的準確性,同時實現了對樹干的檢測與位置的估計. 圖20 激光雷達投影結果 圖21 YOLOv3檢測結果 圖22 融合檢測結果 選擇實驗中比較有代表性的10個關鍵位置,對比融合算法檢測出的坐標位置與實際測量得到的坐標位置,得到激光雷達坐標系下樹干x方向與y方向的誤差并進行分析,如表2所示. 表2 樹干坐標誤差分析 由表2可計算x方向上的平均誤差ex為: (13) 同理,可以得出y方向上的平均誤差ey為: (14) 由表中數據以及x,y方向上的平均誤差可知,融合檢測的精度會隨著距離的增加逐漸下降,但平均誤差控制在0.08 m左右.對本實驗而言,提出的融合算法能夠滿足無人割草機對樹木位置的定位要求.通過計算正確目標數與總目標數的比值,得到該算法的準確率并用于定量分析目標檢測結果,得到表3所示的準確率統計結果. 表3 目標檢測準確率 由表3可知,激光雷達聚類檢測算法的準確率相對較低,這是由于存在一些與樹干相似的物體,例如細長的墻體等,造成激光雷達的誤判.另外,盡管YOLOv3算法的目標檢測結果與融合檢測結果的準確率大致相同,但該算法難以獲取準確的樹干位置.而基于兩者的融合檢測算法,不僅能夠盡可能去除干擾信息,保持較高準確率,同時還能返回樹干的三維信息與準確位置估計,獲得更豐富的檢測信息. 1) 在傳統基于深度圖的點云聚類算法上,提出了橫向與縱向的自適應閾值,提高了樹干點云聚類的準確度,在實際使用中能夠滿足樹干檢測的實時性與準確性要求. 2) 激光雷達與相機融合算法增加了目標檢測的空間信息,能夠同時輸出檢測目標的類別與三維空間信息.在除草機器人實驗中,樹干定位橫向平均位置誤差為0.075 m,縱向平均誤差為0.078 m,融合檢測準確率為93.1%,該算法可用于樹干檢測與位置估計. 3) 改進的激光雷達檢測算法能夠消除大面積墻體等物體對結果的影響,但對某些細長柱體的檢測仍存在一定的不足.在后續(xù)的研究中,將繼續(xù)優(yōu)化激光雷達聚類算法并改進圖像處理算法,進一步提高果園樹干檢測的精度和可靠性.4 基于圖像的樹干檢測
5 激光雷達與相機融合算法
6 實驗驗證
6.1 實驗檢測結果
6.2 算法準確性分析
7 結論