王玉龍 李景俊 翁茂楠 黃輝
摘? 要:深度學習在自動駕駛開發(fā)中得到廣泛應用,而在低算力嵌入式平臺上部署高算力需求的車位識別網絡及復雜的路徑規(guī)劃算法成為行業(yè)挑戰(zhàn),因此本文首先設計了輕量化車位識別網絡結構,對不同場景下的車位關鍵點進行檢測,其次基于深度搜索設計了快速泊車路徑規(guī)劃算法,然后基于OpenVX的框架將模型和算法部署在多核異構平臺上,最終在實車平臺上進行自動泊車功能驗證。試驗結果表明車位檢出率大于98%,泊入成功率大于96%,泊車系統(tǒng)運行時間小于40ms,滿足實時性要求。
關鍵詞:車位識別;深度學習;自動泊車;路徑規(guī)劃
中圖分類號:U463.3? ? ? ?文獻標識碼:A? ? ? 文章編號:1005-2550(2023)02-0002-06
Lightweight Recognition Network for Parking Space and Smooth Parking Path Planning Algorithm Design
WANG Yu-long1,2, LI Jing-jun1, WENG Mao-nan1, HUANG Hui1
(1. Auto Engineering Research Institute of Guangzhou Automobile Group, Guangzhou 510641, China; 2. State Key Laboratory of Advanced Design and Manufacturing for Vehicle Body, Changsha 410082, China)
Abstract: Deep learning is widely used in the development of autonomous driving, however the deployment of parking space recognition network and complex path planning algorithm with high computing power requirements on low computational embedded platform has become an industry challenge. Therefore, this paper first designs a lightweight parking space recognition network structure to detect the key points of parking space in different scenarios, then designs a fast parking path planning algorithm based on deep-search algorithm, and then deploys the model and algorithm on a multi-core heterogeneous platform based on the OpenVX framework, and finally performs automatic parking function verification on the real vehicle platform. The test results show that the detection rate of parking space is more than 98%, and the parking success rate is more than 96%, and the parking system running time is less than 40ms, which meets the real-time requirements.
Key? Words: Parking Space Recognition; Deep Learning; Automatic Parking; Path Planning
王玉龍
畢業(yè)于湖南大學,博士學歷,現(xiàn)就職于廣州汽車集團股份有限公司汽車工程研究院,任主任研究員,研究方向為人工智能與自動駕駛。目前發(fā)表論文10余篇,專利20余篇,承擔國家以及省部級課題5項,入選中國科學技術協(xié)會 “青年人才托舉工程”。
基于深度學習的計算機視覺和數(shù)字圖像處理是計算機應用領域的重要研究分支,特別近年來,計算機視覺在算法結構及應用上取得了重大的發(fā)展,在軍事、醫(yī)學、多媒體、汽車等領域都具有廣泛的應用[1-3],而自動泊車系統(tǒng)也是其中一個應用方向。駕駛員在泊車的過程中,往往會受到汽車盲區(qū)的影響,進而造成操作失誤而與其他車輛、行人或障礙物發(fā)生碰撞等不良后果。自動泊車系統(tǒng)是為了讓駕駛員從復雜的泊車操作解放出來的一種駕駛輔助裝置,但是自動泊車系統(tǒng)面臨著許多挑戰(zhàn)性問題:1)深度學習模型一般較大,算力需求高,而量產中采用的嵌入式平臺算力較低,無法滿足算力需求[3];2)泊車路徑規(guī)劃算法采用的搜索算法計算量大[4],無法滿足實時性要求;3)在嵌入式平臺上如何高效部署高算力需求的感知模型和路徑規(guī)劃算法以及其他模塊[5]。本文通過對深度學習模型算法進行算法優(yōu)化以及模型壓縮和剪枝,快速對不同場景下的車位進行識別,基于深度搜索算法進行快速的泊車路徑搜索,根據(jù)所規(guī)劃的泊車路徑,自動操控汽車控制器件,如剎車踏板、油門踏板、方向盤、換擋器等,將車輛泊入所指定的車位。本文以TI TDA4為開發(fā)平臺,基于多核異構的應用框架,通過流水線方式進行自動泊車算法和模型部署,提高系統(tǒng)運行效率。
1? ? OpenVX介紹
OpenVX(Open Visual X)是Khronos組織建立機器視覺處理的基本層標準,是一個面向開發(fā)的,用于跨平臺計算機視覺應用加速的標準[5]。OpenVX為常用的視覺函數(shù)以及其函數(shù)集合提供抽象接口來提高視覺應用程序的性能,盡可能地減少程序運行時間。該標準在基于嵌入式的實時性應用中起到了重要的作用,例如基于嵌入式平臺的面部識別、肢體動作跟蹤、場景重建、視覺檢測、自動泊車輔助等。
OpenVX包含了五個組件: 上下文、內核、參數(shù)、節(jié)點以及圖[6]。 上下文是作用域,所有數(shù)據(jù)對象和所有框架對接都存在于上下文中,上下文保存了所有對象的引用計數(shù),并且在解構過程中進行垃圾收集以釋放丟失的引用;內核封裝了各種視覺函數(shù)接口,可以通過注冊回調函數(shù)或者直接調用視覺函數(shù)的接口;參數(shù)是傳遞給函數(shù)的輸入和輸出;節(jié)點是運算節(jié)點,多個節(jié)點組成一個圖以完成某個功能,其中節(jié)點僅從某個圖創(chuàng)建并與單個圖關聯(lián);圖是以一組有向(僅單向)非循環(huán)方式連接的節(jié)點,節(jié)點之間通過數(shù)據(jù)依賴連接在一起。OpenVX的運行是基于節(jié)點來運行的,所有的節(jié)點會被鏈接到圖中,最后由圖統(tǒng)一運行。
基于OpenVX構建應用實例,首先需要創(chuàng)建圖,作為上下文索引,其次通過創(chuàng)建不同的節(jié)點,負責不同的功能,從采集數(shù)據(jù)、圖像預處理、模型推理、后處理、顯示結果等,默認情況下,在圖中依次創(chuàng)建的節(jié)點,就是鏈接的順序。在檢驗創(chuàng)建的節(jié)點正常后,通過運行圖,被鏈接進來的節(jié)點都會被執(zhí)行一次。因為節(jié)點是相對獨立的,所以在多核執(zhí)行效率上,能充分發(fā)揮并發(fā)的作用,最大化芯片的使用效率。
2? ? 深度學習的模型設計與部署
2.1? ?基于SSD車位檢測模型設計
SSD(Single Shot MultiBox Detector)是基于前饋卷積神經網絡,產生固定大小的邊界框集合和邊界框中對象類別的置信度,然后通過非極大抑制來產生最終檢測結果。本文采用VGG16網絡作為基礎網絡,用于特征提取,然后再向基礎網絡中添加輔助結構,產生特定的特征用于檢測[7]。本文采用基于深度學習的目標檢測算法SSD,對車位的關鍵點進行檢測,通過采集車位數(shù)據(jù)和標注車位信息,在此基礎上訓練深度學習模型,基于OpenVX的框架將優(yōu)化后的模型部署在多核異構處理器上。在模型訓練階段,利用收集到的圖像數(shù)據(jù)與標簽文件,制作訓練與測試SSD模型的LMDB(輕量級內存映射型數(shù)據(jù)庫)數(shù)據(jù)格式文件,以此作為模型的輸入。模型總體損失由定位損失和分類損失函數(shù)的加權求和決定,SSD的網絡結構如圖1所示[7]。
SSD算法中使用了多個尺度下的特征圖,選取的卷積層分別是:Conv4_3,Conv7,Conv8_2,Conv9_2,Conv10_2以及Pool11層的輸出特征圖,對于輸入圖片為300×300的圖像,特征圖尺度分別是:38×38×512、19×19×1024、10×10×512、5×5×256、3×3×256、1×1×256,然后在這些特征圖上生成不同尺寸大小的預測框,數(shù)目分別是4、6、6、6、4、4,進行檢測和分類生成多個候選框,可知每個特征圖對應的候選框數(shù)目是5776、2166、600、15036、4,共8732個box,最后將不同尺度下的候選框結合起來,通過非極大值抑制算法選出最后的預測框。本文考慮部署到嵌入式平臺的算力限制,以及識別準確率的要求,選擇模型輸入圖像尺寸為1008×560的圖像,預處理階段進行數(shù)據(jù)增強,并設置訓練步數(shù)20萬步,學習率為0.00004進行模型訓練。
2.2? ?多任務輕量化視覺感知模型設計
該多任務輕量化視覺感知模型是基于深度學習的卷積神經網絡模型結構用于實現(xiàn)對攝像頭視野范圍內的車位檢測和可行駛區(qū)域識別。模型的整體結構可以分為共享層、車位檢測分支層、可行駛區(qū)域識別分支層等3個子模塊組成。模型的輸入為尺度為1008×560的3通道RGB圖像;模型有兩個輸出,一個用于輸出車位檢測推理結果,另一個用于輸出可行駛區(qū)域識別的推理結果。
(1)共享層結構設計
兩個推理任務共用前20層,該前20層卷積層由2個10層的分支并聯(lián)構成,前一個分支中的卷積核均采用3×3的卷積核,后一個分支中的卷積均采用空洞尺度為5的3×3的卷積核,兩個分支給后續(xù)的推理帶來了不同的感受野,能夠提取出更加豐富的特征,每個卷積層后均使用修正線性單元激活函數(shù)Relu,在每個分支第2、4、6、8層卷積后使用下采樣層,最后將兩個分支的推理結果進行拼接。
(2)車位檢測分支結構設計
車位檢測分支層由4層卷積層構成,每層卷積層均采用3×3的卷積核,且每個卷積層后均使用修正線性單元激活函數(shù)Relu,最終輸出的車位識別模型推理結果的尺度為40×30×6,可表示為:Output1=40×30×(cre1,x1,y1,cre2,x2,y2)。輸出結果將原始圖像分為30行40列的等大小矩形塊,原始圖像中第i行j列的矩形塊對應的預測結果為車位識別模型推理結果的第i行j列的6位輸出:(cre1,x1,y1,cre2,x2,y2),其中cre1、cre2分別表示該矩形塊中含有車位角中心點、空車位中心點的概率,x1、y1、x2、y2分別表示就當前塊而言歸一化后的車位角中心點橫坐標、車位角中心點縱坐標、空車位中心點橫坐標、空車位中心點縱坐標。
2.3? ?模型和運行效率優(yōu)化
2.3.1 模型優(yōu)化
在設計多任務輕量化視覺感知模型早期,為了兼顧效率和精度問題,增加了一個分支,增加了空洞卷積,并且考慮到TI TIDL的量化精度下降問題,在每個Convolution后都添加BatchNorm,最后一層的Convolution不需要添加BatchNorm。通過對多任務輕量化視覺感知模型的試驗,利用裁剪優(yōu)化的方式,可將模型減小至8.4M,但是模型的精度損失在4個百分點左右。另外通過增加一個分支,增加空洞卷積,雖然模型大小增大至26M,模型的精度損失能控制在3個百分點以內。
2.3.2 運行效率優(yōu)化
設計OpenVX應用場景,會首先創(chuàng)建圖,一個場景中可以包含多個圖,然后在圖中調用節(jié)點。一般情況下,圖都是以非流水線模式運行。以下通過流水線處理流程提升運行效率。非流水線處理流程如圖2(a)所示,從圖中可以看出,假設每個節(jié)點的處理時間都是33毫秒,則每一幀處理完成需要99毫秒,整個系統(tǒng)的圖像吞吐量就比較低。
通過優(yōu)化為流水線處理流程,每一幀處理的時間雖然不變,但是流水線處理模式除了開始的兩幀,其他時刻系統(tǒng)都在同時處理三幀,整個系統(tǒng)吞吐量是按順序處理的三倍。因此基于此模式設計OpenVX的圖可以極大提高多核的執(zhí)行效率?;诹魉€技術,可以將OpenVX設計為三個階段,如圖2(b)所示,包括流水線流入階段、流水線處理階段和流水線流出階段。按照OpenVX流程創(chuàng)建節(jié)點和圖,設置自動調用模式,檢查圖的參數(shù),調用圖的隊列管理接口來管理圖參數(shù)的入隊和出隊。如此循環(huán),通過管理節(jié)點和圖的參數(shù)入隊和出隊來實現(xiàn)數(shù)據(jù)流的流轉。基于流水線處理流程,每個節(jié)點創(chuàng)建都是獨立的,節(jié)點的參數(shù)通過拷貝的形式存在多個備份,因此節(jié)點之間參數(shù)也是隔離的,保證了數(shù)據(jù)的安全性和完整性。
2.4? ?多核異構架構部署流程
本文是基于多核異構處理器TDA4探討模型部署和嵌入式自動泊車系統(tǒng)。設計一個高效的數(shù)據(jù)流程是部署嵌入式自動泊車系統(tǒng)的關鍵。如圖3所示,通過R5F核獲取攝像頭數(shù)據(jù),然后由另一個R5F核做硬件縮放,C66X做圖像預處理
(將YUV轉BGR),C7X做深度學習算法推理,通過另外一個R5F后處理部分操作,將結果送入到A72核做路徑規(guī)劃,最后對車輛進行相應的控制。這個過程涉及到多個核心,可以做到硬件的流水線并行運行。
3? ? 基于深度搜索的泊車路徑規(guī)劃
本文是通過深度學習算法識別車位、障礙物以及可行駛區(qū)域[8],通過環(huán)境重建和自定位,構建低維地圖,在該地圖下基于深度搜索算法進行路徑規(guī)劃并根據(jù)規(guī)劃結果控制車輛。路徑規(guī)劃基于深度搜索算法[9-10],采用多段曲線組合的方式達到完整的路徑,單段曲線的表達式是 Q=(θ, L)。其中θ表示車的前輪轉角,L表示基于該轉角的行車距離,以車輛后軸中心記作車輛坐標。單段曲線直接使用控制量來描述可以直接作為控制輸出,因此不需要路徑跟隨環(huán)節(jié),規(guī)劃的結果即是控制量。
單段路徑曲線采用將行車動作離散化后的90種動作曲線,分別對應9種前輪角度θ和10種行程距離L的組合,前輪轉向角為該車的前輪的左右轉極限角度平均等分,如θ=[-30,-24,-15,-6,0,6,15,24,30];行程選擇有L=[-5,-3,-2,-1,-0.5,0.5,1,2,3,5],10種選擇,單位m,負值表示倒車,正值為前進。一次行車軌跡的選擇有9×10=90種選擇,如Q=(θ(15), L(2)),表示該段軌跡曲線為前輪左轉15度,向前走2米。其中這里面的動作數(shù)量及具體數(shù)值都可以調整。如圖4所示,車輛在某個狀態(tài)下可執(zhí)行的動作離散為90種曲線。
路徑搜索使用深度搜索算法[9],遞歸執(zhí)行。車輛在狀態(tài)S0下,嘗試執(zhí)行一種動作曲線,并判斷執(zhí)行該動作后的狀態(tài)S10是否滿足目標狀態(tài),而每個動作執(zhí)行后的狀態(tài)Sn都可以作為當前狀態(tài)去重復執(zhí)行該策略[9],遞歸執(zhí)行直到到達目標。
車輛狀態(tài)可以描述成如圖5的搜索樹:第一層搜索開始,車輛處于初始位置S0,當嘗試執(zhí)行動作Q0(θ=0,L=0.5)后(轉角0,向前直走0.5米),車狀態(tài)改變?yōu)镾10,判斷當前狀態(tài)是否達到目標狀態(tài),未達到則改變動作為Q1(θ=0,L=1)做同樣的判斷,直到所有動作嘗試完畢,仍為達到目標說明該狀態(tài)S0下無法通過一段固定動作曲線達到目標;進入下一層搜索,首先以S10作為當前狀態(tài),同樣執(zhí)行以上步驟,對所有動作做嘗試判斷該狀態(tài)下能否通過一個動作達到目的狀態(tài)。重復以上步驟,即是基于深度搜索的路徑規(guī)劃。
4? ? 試驗驗證
本文基于多核異構處理器TDA4部署神經網絡模型,在軟件架構上,本文利用軟件中間件OpenVX抽象不同的核心,對上層提供模塊層次的功能,并且通過OpenVX管理內存指針,實現(xiàn)多核之間數(shù)據(jù)交換。設計流水線場景中,首先通過創(chuàng)建圖,定義圖運行模式,設置為自動調用模式,校驗圖的完整性,同時創(chuàng)建多個節(jié)點,如圖像采集節(jié)點、顯示節(jié)點、預處理節(jié)點、后處理節(jié)點、圖像信號處理節(jié)點、鏡頭矯正節(jié)點、圖像縮放節(jié)點、路徑規(guī)劃節(jié)點等。根據(jù)節(jié)點的特點,對節(jié)點運行的核進行劃分,如預處理節(jié)點和后處理節(jié)點運行在DSP C66核上,神經網絡節(jié)點運行在C71核上,圖像采集節(jié)點運行在R5核上。 通過入隊和出隊的形式來管理節(jié)點上數(shù)據(jù)流的進出。
嵌入式部署精度損失檢測指標如表1所示。其中acc是車位角中心點和空車位識別結果中識別正確且其它區(qū)域無誤識別的概率(32個像素等間隔劃分區(qū)域,默認同一區(qū)域內只有一個目標點)。precise是車位角中心點和空車位識別結果中正確結果的比例(點的偏差小于16個像素點被當做同一識別點)。在嵌入式TDA4平臺下,可達到25fps的幀率,滿足實時性要求。
利用在多核異構嵌入式平臺神經網絡模型,結合深度搜索算法,完成嵌入式自動泊車系統(tǒng)搭建。測試場景包括垂直車位、平行車位、斜列車位以及窄車位泊車,如圖6所示。測試過程中,以0.5秒為周期動態(tài)規(guī)劃路徑,單次路徑規(guī)劃用時小于40ms,滿足實時性要求,保證泊車過程的流暢性。實測垂直車位、平行車位以及側方位均可以自適應并較好泊車,測試結果如表2和表3所示,車位檢出率98%以上,泊入成功率96%以上,優(yōu)于行業(yè)內的量產產品。
5? ? 結論
本文基于多核異構嵌入式平臺提出了輕量化的深度學習卷積神經網絡模型結構,并基于該模型和深度搜索算法設計了自動泊車系統(tǒng)。該輕量級神經網絡模型結構可以高效地部署在多核異構處理器上,在魯棒性、精度損失方面都表現(xiàn)良好。同時,通過深度搜索算法自動尋找多段軌跡曲線的最優(yōu)組合,實現(xiàn)任意姿態(tài)泊車,可適應不同場景與車位,可以實現(xiàn)動態(tài)路徑規(guī)劃,降低了對其他泊車環(huán)節(jié)的精度依賴(感知和定位的精度等)。
參考文獻:
[1]Gupta A,Anpalagan A,Guan L,et al. Deep Learning for Object Detection and Scene Perception in Self-Driving Cars: Survey,Challenges,and Open Issues[J]. Array,2021,10(10):100057.
[2]張新鈺,高洪波,趙建輝,等. 基于深度學習的自動駕駛技術綜述[J]. 清華大學學報(自然科學版), 2018,058(004):438-444.
[3]李升波,關陽,侯廉,等. 深度神經網絡的關鍵技術及其在自動駕駛領域的應用[J]. 汽車安全與節(jié)能學報,2019,10(2):27.
[4]崔高健,陸柏霖,賀紅春,等. 基于逆向Hybrid A*的自動泊車路徑規(guī)劃[J]. 長春工業(yè)大學學報,2022(004):043.
[5]張政馗,龐為光,謝文靜,呂鳴松,等. 面向實時應用的深度學習研究綜述[J]. 軟件學報,2020(9):24.
[6]Giduthuri R,Pulli K. OpenVX: a framework for accelerating computer vision[C]. SIGGRAPH ASIA 2016 Courses ACM, 2016, 1-50.
[7]Berg A C,F(xiàn)u C Y,Szegedy C,et al. SSD: Single Shot MultiBox Detector,10.1007/978-3-319-46448- 0_2[P]. 2015.
[8]黎海濤,張昊,王馬成,等. 基于深度學習的智能停車車位檢測[J]. 中國電子科學研究院學報,2021,16(12):1264-1269.
[9]費珂,秦小麟,遲賀宇,等. 面向動態(tài)路網的最優(yōu)路徑GCN深度搜索方法[J]. 計算機科學與探索,2023,17(1):116-126.
[10]劉慶宇.代價樹深度優(yōu)先搜索及優(yōu)化[J]. 遼寧工業(yè)大學學報(自然科學版),2021,(041-005):322-324.
專家推薦語
張凡武
東風汽車公司技術中心
智能軟件中心總師? 高級工程師
深度學習目前在自動駕駛開發(fā)中得到廣泛應用。本文基于多核異構嵌入式平臺提出了輕量化的深度學習卷積神經網絡模型結構,可以高效地部署在多核異構處理器上,并基于該模型和深度搜索算法設計了自動泊車系統(tǒng)。通過深度搜索算法自動尋找多段軌跡曲線的最優(yōu)組合,實現(xiàn)動態(tài)路徑規(guī)劃,可適應不同場景與車位,降低了對其他泊車環(huán)節(jié)的精度依賴,在實車平臺上實現(xiàn)了任意姿態(tài)泊車功能的驗證,在魯棒性、精度損失方面都表現(xiàn)良好,也滿足實時性要求。
該輕量級神經網絡模型結構較好的解決了在低算力嵌入式平臺上部署高算力需求的車位識別網絡及復雜的路徑規(guī)劃算法這一行業(yè)挑戰(zhàn),系統(tǒng)方案、算法模型設計與部署合理,試驗驗證較好,結論正確。本論文選題有較強的應用價值,車位識別網絡與流暢泊車路徑規(guī)劃設計相關模型、方法可供同行學習參考。