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