化永星,程偉國,黃閩羚
(南京交通職業(yè)技術學院,江蘇南京,211188)
隨著科技的發(fā)展,人工智能車輛已應用到各個行業(yè),而提升智能車自動駕駛的安全性是一個急需解決的問題[1]。對環(huán)境的實時感知是自動駕駛的先決條件,目前大多數(shù)自動駕駛車輛采用毫米波雷達進行距離檢測并結合攝像頭進行物體識別的多傳感器融合方案[2]。隨著視覺感知技術的提升,基于深度相機的目標檢測技術在一些場合可以代替?zhèn)鹘y(tǒng)毫米波雷達與機器視覺結合的方案[3],隨著人工智能算法的發(fā)展,視覺感知技術日益成熟,因此本文提出了一種基于深度相機的智能車輔助決策系統(tǒng),基于深度學習對識別與檢測并計算實時距離,并根據(jù)檢測物體的位置結合車輛自身模型進行輔助決策,防止發(fā)生危險。
本文提出的輔助決策系統(tǒng)通過深度相機實現(xiàn)對周圍環(huán)境感知,并結合原移動平臺的參數(shù)指標及安全距離進行輔助決策,判斷行進路線的障礙是否會造成危險,是否需要做出反應。視覺輔助決策系統(tǒng)總體框架如圖1 所示,其中硬件包括微處理器,深度相機。通過深度相機進行圖像采集并傳輸微處理器,在Ubuntu 18.04 環(huán)境中,基于PyTorch 框架下采用Yolov5 深度學習算法實現(xiàn)對智能車目標區(qū)域的實時檢測,并基于雙目相機對深度信息提取,并對檢測到的物體進行定位。最后將檢測的目標位置結合車輛的參數(shù)判斷繼續(xù)行駛是否會發(fā)生危險,并通過CAN 通訊方式,將物體位置信息與判斷結果傳輸至車輛自動駕駛工控機,繼而控制車輛制動。
圖1 整體框架圖
本系統(tǒng)的硬件主要包括采用英偉達公司Jetson Xavier Nx 核心板的開發(fā)套件,如圖2所示,Jetson Xavier Nx 核心板配備了6 核Carmel ARM64 微處理器,搭配英偉達Volta架構GPU,集成384個CUDA 核心、配置了21TOPS 的加速計算能力,能夠同時處理多個傳感器的數(shù)據(jù),開發(fā)板上配有UART、SPI、IIC及多個GPIO 接口,可通過多種方式與外部設備通訊。
圖2 Jetson Xavier NX 開發(fā)套件
本系統(tǒng)圖像采集設備選用Stereolabs公司生產(chǎn)的ZED 雙目相機,如圖3 所示,ZED 深度相機能夠高分辨率傳輸圖像,并且其深度范圍0.3~25m 遠大于普通相機,能夠滿足在保證移動平臺有足夠的時間在完成制動距離的前提下將圖像數(shù)據(jù)實時輸出。
圖3 ZED 雙目相機
視覺輔助決策系統(tǒng)的軟件實現(xiàn)部分流程如下:首先從深度相機中獲取目標的深度數(shù)據(jù),即使用雙目相機進行數(shù)據(jù)采集。相機采集到的圖像包含了左右兩個視角的圖像,因此可以使用雙目視覺進行障礙物檢測和距離測量。對于雙目相機采集的圖像,需要進行去畸變、立體匹配和像素對齊等工作。首先,會對圖像進行去畸變處理以消除圖像中的畸變影響;然后通過立體匹配算法,將左右視角圖像上的像素一一對應,然后進行像素對齊操作使得左右像素點在同一水平線上。在預處理之后,使用Yolov5 目標檢測算法對圖像進行物體檢測。Yolov5 使用卷積神經(jīng)網(wǎng)絡對圖像進行處理,通過在圖像中找到物體的邊界框,從而得到物體的位置信息。通過立體匹配計算出左右視角中對應像素之間的距離,這項任務的關鍵是找到相對于左視圖中的像素位置,對應的右視圖像素位置,從而獲取目標的中心坐標、寬度和高度。然后使用相機內參和深度數(shù)據(jù)將目標中心坐標轉換為世界坐標系中的坐標。使用目標寬度和高度,以及深度數(shù)據(jù)和相機內參,計算出目標在世界坐標系中的尺寸。最后利用障礙位置信息結合車身結構數(shù)據(jù)和設置的安全區(qū)間對下一步運動決策進行提示。
自2015 年等人提出yolo 算法以來,yolo 系列算法以實時高效在深度學習物體檢測得到了廣泛的應用[4-5],其中Yolov5 算法能夠很好的兼顧實時性與準確性,本文選用Yolov5s 作為檢測算法,與之前的yolo 系列算法比具有更小的模型尺寸和更快的速度。其檢測流程的結構主要包含以下幾個部分:(1)數(shù)據(jù)預處理:在進行模型推斷或訓練之前,需要對輸入數(shù)據(jù)進行預處理,采用Mosaic 數(shù)據(jù)增強方法圖像進行數(shù)據(jù)增強操作,不僅使圖片能豐富檢測目標的背景,而且能夠提高小目標的檢測效果。(2)Backbone:骨干網(wǎng)路部分主要采用的是Focus 結構,用于處理輸入的圖片。(3)Neck:為了更好地提取融合特征,在Backbone和輸出層插入采用FPN+PAN 結構的Neck 部分。(4)Predicetion:作為目標檢測的輸出層,Yolov5 采用GIOU_Loss 作為損失函數(shù),其主體是3 個Detect 檢測器。
本次研究的Yolov5s 目標檢測算法是基于Python 和PyTorch 框架實現(xiàn)的。在實現(xiàn)過程中,需要先下載Yolov5的代碼倉庫,然后根據(jù)實際需要進行相關配置和修改。代碼文件如下:
model.py:定義了YOLOv5的模型結構,包括主干網(wǎng)絡、FPN、head、neck 等模塊。
detect.py:實現(xiàn)了目標檢測的主要流程,包括讀取圖像、預處理、前向推理、NMS 等。
utils 目錄:包含了一些輔助函數(shù),如非極大值抑制、數(shù)據(jù)增強、數(shù)據(jù)加載等。
在使用時,直接調用detect.py 中的detect 函數(shù)進行目標檢測,該函數(shù)會返回目標框的預測結果。對于結果的后續(xù)處理,使用utils 中提供的函數(shù)進行NMS 操作、計算精度等。
雙目立體視覺基于視差原理實現(xiàn)[6],由相似三角形進行三維信息的獲取,即兩個雙目相機的圖像坐標系平面與被測物體間形成一個三角形,依據(jù)左右兩個攝像機間的位置關系,即基線距離以及相機的焦距信息便可以通過相似三角形原理實現(xiàn)公共視場范圍內物體特征點的三維坐標的獲取,具體原理如圖4 中所示。
圖4 雙目測距原理
如圖4 所示,將雙目相機圖像變換統(tǒng)一到同一坐標系,然后通過視差計算即可得到空間坐標位置。此時定義左側右側相機坐標系分別為Ol?Xl Yl和Or?Xr Yr,相機焦距為f,并且有Yl=Yr,則根據(jù)三角形相似關系有:
繼而目標點的坐標即可獲得:
本研究選用的ZED2 相機的雙目測距需要使用OpenCV庫進行圖像處理和計算,同時安裝了ZED SDK 并使用其提供的Python API 接口。ZED2 相機的雙目測距代碼實現(xiàn)主要分為以下幾個步驟:
(1)初始化相機并設置參數(shù),如相機分辨率、幀率、曝光等。
(2)讀取相機圖像并轉換為灰度圖像,提取圖像中的特征點。
(3)計算左右圖像中的對應點,并使用三角測量法計算距離。
(4)可視化結果并釋放相機資源。
此外,雙目測距的精度受到多種因素的影響,包括基線距離、相機分辨率、環(huán)境光照等,因此在使用前進行實際測試和調整參數(shù)以獲得最優(yōu)的距離估計效果。
基于上文中計算機視覺技術對環(huán)境的感知,通過收集到的環(huán)境感知結果即被檢測物體的目標位置及障礙物尺寸,通過結合車輛自身的參數(shù)及設置的安全閾值對車輛當前運動是否存在潛在的危險進行自主判斷,并將結果輸出,如圖5所示。
圖5 危險預警判斷
本次研究智能車輛的長寬高參數(shù)為2.6m×1.1m×1.7m本文通過對比檢測目標位置的歐氏距離與設定閾值范圍來判斷是否有物體靠近車輛造成危險,從而對車輛是否進行下一步動作進行判斷。如公式3 所示,當Dr=1時表示前方存在危險,需要進行相應的避障操作。
其中:λ是設置的閾值范圍,可根據(jù)當前車速、制動距離等條件進行相應設置;ρ是檢測到的物體與車輛外輪廓之間的歐幾里得度量(也稱歐氏距離),表示在三維空間中二者的實際距離,其中定義如公式4 所示。
其中:W是車寬,Wl是車輛運動過程存在安全隱患的寬度范圍,它是根據(jù)車身寬度及留出相應的安全距離相加得到。當檢測到物體在車輛正前方時即y 方向的坐標距離小于Wl,輸出車輛與檢測物體間的距離為z 方向的距離,當檢測到物體在車輛運動輻射范圍外,其輸出的距離是其與車輛最外側輪廓的距離。
本次實驗所用智能車輔助系統(tǒng)應用平臺如圖6 所示,其中移動平臺為自主研發(fā)的移動機器人,移動平臺的核心控制元件包括自動駕駛工控機和整車控制器(VCU),通過VCU 控制器與電池控制系統(tǒng)(BCU)、車輛電機驅動(MCU)、電子駐車控制系統(tǒng)(EPB)、電控液壓制動系統(tǒng)(EHB)及電子轉向系統(tǒng)(EPS)進行通訊,對移動平臺進行運動控制。整車硬件平臺結構如圖4 所示,輔助決策系統(tǒng)將決策信號發(fā)送到自動駕駛工控機,通過自動駕駛工控機向整車控制器發(fā)送信號控制車輛運動。
圖6 視覺輔助駕駛系統(tǒng)實驗驗證
雙目相機放置于車輛前部正上方,將采集的圖像信號傳輸至Jetson Xavier NX 開發(fā)套件,通過CAN 通訊方式將本文所提出的輔助駕駛系統(tǒng)的信息傳輸至移動平臺智能駕駛工控機部分,其中系統(tǒng)輸出的輔助決策信息包括物體類別、坐標位置、與車之間的距離以及是否需要進行主動控制進行實時輸出,并通過智能駕駛工控機向運動控制器(VCU)輸入相應制動或減速的車輛運動信號,車輛控制器根據(jù)上述信息對運動運動狀態(tài)進行調整。
本文共對人、椅子、汽車進行物體檢測測試,在車輛行駛前進方向設置不同位置的障礙,車輛由遠及近駛向被檢測物體方向,設置安全距離為5 米。實驗驗證場景如圖7 所示,移動平臺由遠及近靠近目標檢測物體,距離較遠時檢測結果如圖7(a)所示,可以看到能夠檢測出訓練過的物體人和椅子,并將坐標位置輸出,此時兩個物體距離分別為6.85 米和4.91 米,此時輸出Dr=0;當距離靠近時,如圖7(b)所示,此時檢測到人在車輛行駛方向的正前方,且距離4.24 米小于設置的閾值范圍,此時Dr=1,由于椅子在小車前進方向的影響的輪廓外,所以Dr=0,而此時收到輔助決策系統(tǒng)輸出的信號即可進行相應操作控制車輛運動狀態(tài)。綜上可以得出結論本文所提出的方法能夠實現(xiàn)當在車輛即將發(fā),危險前進行提示。
圖7 實驗驗證場景
本文進行了基于深度相機的視覺輔助決策系統(tǒng)的研究,通過Yolov5 深度學習算法及雙目測距原理實現(xiàn)智能車輛的環(huán)境感知,獲取運動過程中行進路線上的障礙及障礙的相應位置,并根據(jù)車輛參數(shù)的安全距離及障礙坐標位置對下一步動作的實施提供參考信息。最后通過設置實驗對所提出的方法進行驗證,結果表明本文所提出的方法能夠有效應用在智能車輛自動駕駛領域。