劉靖宇 劉延飛 叢銘智 顧祎陸 何展博
(火箭軍工程大學 陜西省西安市 710025)
近年來,隨著人工智能領域特別是深度學習的飛速發展,基于深度學習的圖像識別與檢測技術也取得相應突破。特別是卷積神經網絡(Convolutional Neural Networks,CNN)[1]的應用,更是使目標檢測方法取得了長足的發展,目前在無人駕駛領域中圖像的目標檢測方法主要分為兩類:一類是將目標檢測分成兩部分進行的二階段檢測,典型代表是R-CNN[2]系列,其檢測準確度較高,但費時較長;另一類是基于回歸的一階端到端檢測,典型代表是SSD、YOLO[3]。此類方法處理速度較快,但其檢測精度較二階段檢測相比有所下降。本文結合兩類方法優點為一體,在嵌入式Arduino 處理器平臺上采用多線程組織+FCN+YOLOv3-Tiny 軟件算法,設計了一款集數據采集、數據模型構建、端到端循跡、目標檢測、無人駕駛策略為一體的系統,能夠同時對道路車道線和多種交通標志做出實時判斷和決策,從而實現智能駕駛[4-6]。
系統的總體功能設計架構如圖1 所示。硬件系統還有主機處理子系統和底盤控制子系統。主機處理模塊由嵌入式計算機、EdgeBoard 深度學習計算卡和道路信息采集攝像頭組成,功能如圖1 中左側端對端循跡模塊和交通標志物檢測模塊實現。底盤控制子系統由Arduino Mega2560 微控制板加電機驅動板組成,外部接有直流電機、編碼器、超聲波和紅外等傳感器,完成圖1 右側對底盤電機的控制。
百度大腦EdgeBoard 深度學習計算卡作為系統的決策與控制中心,是整車架構的核心,負責對采集到的圖片數據進行處理,分別提取車道線圖片數據和交通標志物圖片數據的圖像特征,計算得到車道線識別模型和標志物檢測模型。以兩個深度學習模型為基礎構建小車系統子模塊,即端到端循跡模塊和交通標志物檢測模塊,用來分析實時圖片特征,得到道路曲率類型和交通標志物的類別與位置信息,這些信息傳遞到決策與控制中心后促使控制單元形成諸如小車轉角變化、停車、減速慢行等控制指令,進而通過USB 轉串口模塊將指令發送給Arduino 下位機。底盤控制子系統接收指令后,結算為四個驅動信號,驅動4 個電機差速轉動,實現加減速、轉彎、掉頭等功能,后輪的兩個電機配有AB 相編碼器,可測出電機目前轉速,形成反饋信息以便于對系統施加PID 控制。

圖1:小車總體架構圖

圖2:多線程系統運行過程
如果同時運行圖像的采集、處理以及兩個模型的預測,會使得系統程序單次運行過慢,從而導致自動駕駛小車控制周期延長,使得小車的控制指令出現滯后,影響小車的正常行駛。針對此問題設計小車程序運行的多線程系統架構,使用Python3 中的threading 標準庫[7],充分利用多核計算資源,將實時圖片的采樣保存、端到端循跡模塊的預測和交通標志物檢測模塊的預測設置為3 個并行的線程,線程1 負責圖片的采集、預處理,并對采集到的圖片取樣保存;線程2 利用線程之間資源共享的特性,根據道路曲率信息進行端到端循跡;線程3 遵循同樣原則得到圖像數據,檢測圖中的交通標志物并框選出標志物具體位置。多線程運行過程如圖2 所示。
為了不使小車偏離車道,需要實時獲取道路曲率信息提供給決策與控制中心,以形成控制指令,結合車道線圖像數據信息進行圖像預處理和FCN 算法預測賽道信息。在圖像預處理算法方面,使用逆透視變換算法將車道線的圖像從小車的攝像頭視角變換到俯視視角,在一定程度上可以校正圖像的梯形畸變[8],增強了對環境的適應性。經逆透視變換的圖像仍為彩色圖像,以Mat 類存儲,為BGR 顏色空間,尋找合適的顏色通道閥值將其轉換為HSV 顏色空間,調整顯示效果更方便實現圖像分割,最終通過圖像二值化分割出了車道線的曲率特征[9-10],如圖3 所示。

圖3:原始圖像與預處理操作后的圖像對比

圖4:設計的道路端對端循跡模塊的道路預測FCN 網絡結構

圖5:改進后的YOLOv3-Tiny 網絡結構

圖6:交通標志物檢測模型的檢測結果
每一張經過最終二值化處理的圖片都唯一對應一種道路曲率類型值,將車道線圖片與相應的道路曲率類型值輸入FCN 中進行訓練,得到模型參數,形成端到端循跡模塊,并基于此對攝像頭采集到的圖片進行車道線提取并預測當前道路曲率類型,為后續的決策與控制提供依據,本文設計的FCN 網絡結構如圖4 所示,6 個卷積層的卷積核個數分別為16,32,64,128,32,1。前4 個卷積層后分別添加了步長為2 的池化層,實現四次降采樣,使得卷積層能夠提取到更高級的特征,也意味著圖像的尺寸被降低至原圖的0.125倍,在保證車道線特征不丟失的情況下減少了后續車道線檢測的計算量,使得程序運行的實時性進一步提升。
對交通標志物數據集圖像進行預處理縮放到256×256 尺寸后,送入改進的YOLOv3-Tiny 網絡進行推理,經過2 個不同尺度(8×8,16×16)的輸出通道直接得到包含目標框、目標置信度和框內物體類別在內的特征圖,根據網絡模型輸出的置信度對檢測結果進行非極大值抑制(Non-Maximum Suppression,NMS)[11]和分類識別,得到輸出結果。本文在YOLOv3-Tiny 網絡的不同部分增加了特定的卷積層(如圖5 中虛線框所示)進行改進。
為了使網絡模型預測的物體位置更加準確,改進后的YOLOv3-Tiny 網絡采用維度聚類分析方法優化檢測框的位置與大小,再使用非極大值抑制算法對高度重疊的候選框按照分類器類別得分由高到低的順序進行排序,選擇得分最高的候選框并逐個計算其與其他候選框的IOU 值,設定閥值以去除IOU 值大于閥值且得分較低的檢測框,循環篩選過程直到確定最終的檢測框[12]。算法檢測結果如圖6 所示。
在自動駕駛小車的整體框架下,兩個系統子模塊同時處理圖像信息傳遞給決策與控制單元,形成控制指令,通過底層Arduino 實現PID 閉環控制,使得車體穩定運行,相比于單線程自動駕駛系統具有更快的響應速度和更準確的控制精度。小車體現的在不同道路曲率類型和多種交通標志物條件下進行準確控制的功能,表現了其作為人工智能領域產品的可靠性,能夠完成較為復雜的多任務駕駛需求,具有廣闊的應用前景。