田宇



摘? 要:根據目前常見目標識別算法檢測較為復雜、識別時間較長并容易出現錯檢漏檢等方面的不足,利用目前機器視覺技術,提出一種適用智能移動小車系統的目標識別算法YOLOv3(一種深度學習目標檢測方法),并搭建智能移動小車的目標識別仿真系統。其目的是研究目標識別算法在ROS(機器人操作系統)中結合智能小車運動控制功能進行正確實現,改善目標檢測算法的漏檢率、錯誤率等。分析目標識別算法在ROS系統中的精確度,使用數據集進行檢測實驗。實驗結果表明,運用YOLOv3深度學習目標識別算法在提高識別目標速度的同時有較高的檢測精度,當目標丟失在視野中時利用ROS系統控制移動機器人重新使目標快速識別,降低了識別目標的時間,提高了移動機器人運動識別的效率。
關鍵詞:ROS系統;深度學習;YOLOv3識別算法;運動控制
中圖分類號:TP391.4? ? ?文獻標識碼:A
Research on Target Recognition of Intelligent Mobile
Car based on Robot Operating System
TIAN Yu
(School of Mechanical Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
893570276@qq.com
Abstract: Currently, common target recognition algorithms have shortcomings of complex detection, long recognition time and being prone to error detection and missed detection. In order to solve these problems, this paper proposes a target recognition algorithm YOLOv3 (A deep learning target detection method) that is suitable for intelligent mobile car system by using the current machine vision technology. Meanwhile, target recognition simulation system of the intelligent mobile car is built in order to study the correct implementation of target recognition algorithm in ROS (Robot Operating System) combined with intelligent car motion control function, thus reducing miss detection rate and error rate of target detection algorithm. Accuracy of target recognition algorithm in ROS system is analyzed and data set is used for detection experiment. Experimental results show that the proposed YOLOv3 deep learning target recognition algorithm can improve target recognition speed and detection accuracy. When a target is lost in the field of vision, ROS system is used to control the mobile robot to recognize the target quickly again, which reduces target recognition time and improves the efficiency of mobile robot motion recognition.
Keywords: ROS system; deep learning; YOLOv3 recognition algorithm; motion control
1? ?引言(Introduction)
隨著人工智能和機器人技術的發展,機器視覺成為機器和計算機領域新興的應用[1],而基于深度學習的視覺識別也成為目標識別中的主流,特別是利用移動式、腿足式機器人進行動態識別成為當前的研究重點,但腿足式機器人研究要結合復雜步態進行,較為困難,故現對移動式智能機器人小車進行研究。在持續識別檢測目標的過程中,機器人與目標需要進行實時交互,所以需要構建實時準確的機器人識別系統。而ROS能夠提高機器人的功能開發效率,受到機器人科研人員和開發人員的青睞,在國內機器人研究中,利用ROS對地圖建設、路徑計劃、導航和模擬、運動控制和定位等進行了研究。使用ROS進行移動機器人的交互在檢測跟蹤方面具有重要的研究意義,將基于深度學習的目標識別算法和ROS系統進行有效的結合,形成高效的實時仿真環境是值得研究的熱門課題。
2? ROS平臺簡介(A brief introduction of ROS platform)
機器人操作系統(ROS)是一個基于機器人應用的開源系統框架,它包含大量工具軟件、庫代碼和約定協議。使用ROS平臺是為了提高機器人軟件開發中的軟件復用率,為機器人開發者提供底層驅動和控制、節點間的通信等功能,同時還包括獲取、編譯、封裝運行程序所使用的工具和API(操作系統的應用程序接口)[2]。它的五個特點為:(1)多語言的支撐;(2)框架簡單,高集成度;(3)功能包、工具包種類多樣;(4)點對點的通信;(5)免費且開源。
ROS的節點控制:節點是機器人實現應用的載體,各節點實現不同的目的,它們互相通過節點控制器進行連接通信。節點控制器通過管理如目標識別節點、傳感器控制節點、鍵盤控制節點、運動控制節點等實現整個系統的實際應用,如圖1所示。
3? 基于深度學習的目標識別(Target recognition based on deep learning)
3.1? ?目標識別算法對比
比較流行的深度學習方法主要分為One-stage(SSD、YOLO系列)和Two-stage(R-CNN系列)。Two-stage包括:(1)R-CNN算法:①給出一張圖片;②從圖片中隨機生成1,000多個方框;③對搜索到的每一個方框進行特征提取;④使用分類器對搜索到的方框進行分類;⑤通過回歸的方法定義新的目標方框。但此方法有很明顯的不確定性,它的特征提取有很大的冗余和重疊。(2)Fast R-CNN算法:在R-CNN的基礎上進行深度研究,但選擇性搜索仍然比較慢,計算量還是很大。(3)Faster R-CNN算法:在Fast R-CNN的基礎上再進行改進[3]。此時該方法把識別檢測分為四個步驟:候選框選擇、提取特征、提取后分類、Bounding Box(預測框)預測回歸,但其缺陷是還需要花費不少的時間來訓練。
VOC2007數據集上給出Faster R-CNN和YOLOv3的檢測模型,Faster R-CNN和YOLOv3在mPA(平均精度)和FPS(每秒所能達到的幀數)上的評估結果如表1所示。
結果表明,YOLO方法解決了CNN(卷積神經網絡)系列算法速度慢的問題,而且能保證平均精度在一定高度的范圍內。它主要使用了回歸的思想,通過對一張圖片的整體進行研究,在一張圖片的多個位置上回歸出它的目標方框以及反映出目標的類別。由于在簡單環境內需要檢測的目標很少,因此在評估結果和保證實時方面,我們使用YOLOv3結合ROS進行此系統的目標識別實現。
3.2? ?YOLOv3算法網絡框架
YOLO算法將所需檢測的圖片進行的柵格化[4](這是一種非常具有創新性的想法),然后將圖片中一個目標的預測位置與目標中心位置所在最小單元格的Bounding Box進行相交。該算法大大減少了模型在圖片中搜索的冗余和復雜度,將位置識別和類型檢測封裝到一個CNN網絡中進行預測,判斷圖片中幾種目標的所屬類型和位置信息。CNN網絡是一種深層次的網絡結構[5],CNN網絡結構從輸入層到輸出層中間包含兩個隱藏層,隱藏層里包含卷積層、池化層、全連接層,如圖2所示。
YOLOv3的主干特征提取網絡的部分叫作Darknet-53[6]。YOLOv3輸入一個圖片,主干特征提取網絡就會對輸入的圖片不斷地進行特征提取,從下到上為一系列卷積的過程。其中底層三個方向使用殘差網絡,Darknet-53中的殘差卷積就是首先進行一次的步長為2的卷積,然后保留該卷積層,再進行一次的卷積和一次的卷積,并把這個結果加上Layer作為輸出的結果,在輸出的三個方向上再進行殘差網絡(Residual)處理。YOLOv3尺度輸出網絡架構如圖3(a)所示,可視化模型預測對網絡的三個方向上的Box進行質心預測架構如圖3(b)所示。
(a)YOLOv3尺度輸出網絡架構
(b)YOLOv3可視化網絡模型預測架構
殘差網絡最初是用在ResNet上,把殘差網絡分作一個個Block,每一個Block可以有輸入也可以有輸出,殘差網絡塊對輸入進行兩部分的處理結構如圖4所示。
3.3? ?YOLOv3算法的實現
YOLO的方法并非直接預測實際框架的寬度和高度,而是將預測的寬度和高度分為Anchor Box(Faster R-CNN中提出的預測錨框,后來演變為預測Bounding Box)的寬度和高度來連接。經過多次迭代訓練,每個Bounding Box都會知道它是在預測什么樣的Box。Bounding Box預測用式(1)和式(2)求得預測框的寬和高:
(1)
(2)
其中,和為Anchor Box的寬和高,和為Bounding Box直接預測出的寬和高,和為轉換后預測的實際寬和高,也就是最終預測中輸出的寬和高。置信度如式(3)所示:
(3)
其中,表示第i 個最小單元格的第j 個Bounding Box的置信度。的求解如下:
當Bounding Box認為當前邊框內有目標時,要檢測的所有類型中每種類型的概率為對象條件類別概率(Conditional Class Probabilities),YOLOv3的對象條件類別概率中對背景的預測通過置信度來分類識別,所以它的輸出是在置信度表示邊框有目標時的前提下,而它的條件概率為,所以置信度評測由給出。
若一張圖片被分為個單元格,并且有個Bounding Box,根據圖3(b)預測的三個方向的Box,即每個Bounding Box內有5 個位置參數含有1 個置信度和個類別概率,那么得到最終的輸出維數如式(4)所示:
(4)
根據YOLOv3算法進行直觀檢測,該算法的檢測在圖中能精確快速地識別。在單目標識別中有較精確的效果,如圖5(a)所示;在多目標識別中存在極少數漏檢情況,但識別精度仍然保持一定的高度,如圖5(b)所示,而且有較快的識別速度。故將在該算法下研究ROS智能移動小車識別系統實驗,為移動小車的智能應用提供基礎,搭載YOLO識別功能包與ROS進行通信,達到準確高效的識別效果。
4 目標識別移動小車實驗系統架構搭建(Construction of experiment system architecture for target recognition mobile car)
此目標識別系統的功能包架構如圖6所示。
robot_gazebo為小車三維仿真環境及其Gazebo(可視化仿真環境)世界的建模功能包;Motion_control為移動機器人小車運動控制功能包;target_recognition為封裝的YOLOv3目標識別功能包,三者相互通信,形成一個以移動機器人小車為仿真實驗平臺的目標識別系統。
4.1? ?搭建仿真智能小車環境
該模型采用XACRO,是優化后的URDF模型,是一種精簡化、可復用、模塊化的描述形式。模型文件的后綴名由.urdf變為.xacro,而且在模型標簽中需要加入XACRO的聲明,使模型與ROS進行連接:
<?xml version="1.0"?>
搭載簡要移動機器人小車模型和其他外部環境需要定義各種參數,例如定義車身顏色、慣性矩陣、傳動系統的關節連接,等等[7]。此處利用mrobot_gazebo模型小車,如圖7所示。
此環境搭建好后可以加入其他外部models搭建整體的world環境,為后續識別更多目標提供模型。此環境封裝為robot_gazebo功能包。此環境加載攝像頭插件camera.xacro,便于搭載視覺系統。
4.2? ?運動控制平臺搭建
移動小車模型中已經加入了libgazebo_ros_diff_drive.so插件,可以使用差速控制器實現機器人運動,由于和控制運動有關的話題是/cmd_vel,故在終端輸入roslaunch robot_control以便執行鍵盤運動控制節點,同時執行rostopic echo/cmd_vel來查詢小車運動信息,此時控制鍵盤即可控制仿真小車的速度、方向等。小車的運動控制界面如圖8所示。
由于小車為兩驅輪式驅動,以直角坐標系XOY為基礎,小車運動學方程[8]如式(5)所示:
(5)
左右兩輪角速度如式(6)和式(7)所示:
(6)
(7)
在t時刻姿態位置變化如式(8)所示,姿態位置隨時間變化如式(9)和式(10)所示:
(8)
(9)
(10)
其中,為移動小車質心線速度,為小車轉動角速度,為兩驅動輪的距離,為小車轉彎的角度,和分別為小車左右驅動輪的線速度,為小車某時刻回轉半徑。啟動rostopic相關話題查詢如圖9所示的移動小車運動信息顯示界面。
了解到小車運動方位和姿態的位置信息,將此環境封裝為Motion_contorl功能包。搭建移動小車仿真平臺后進行目標識別模塊的連接和通信,運動識別整體流程框架如圖10所示。首先初始化移動小車,隨后訂閱小車運動的/cmd_vel節點來獲得小車的速度、角度、方向等信息,若小車視野內存在要識別的目標則小車位置不發生改變,只獲取識別到的信息;若小車視野內目標位置偏移或者不存在目標,則調整小車速度、方向等進行小車的運動控制,直至識別到目標重新出現在視野范圍內。
4.3? ?目標識別在ROS中的實現
將YOLO算法與ROS進行通信,需要建立移動小車仿真環境、運動控制和目標識別間的節點通信[9],使用數據集進行實驗。將目標識別封裝為target_recognition功能包,通過Gazebo節點進行三類節點的控制通信,利用/cmd_vel進行運動控制節點連接,利用camera/image_raw進行ROS中目標識別算法節點連接,利用/joint_states進行移動小車仿真環境節點連接,三者構成基于ROS移動小車的目標識別系統[10]。目標識別小車系統節點通信如圖11所示。
通過虛擬機的Ubuntu系統中ROS各個節點控制,完成仿真系統的研究,以YOLOv3和ROS結合為主要識別算法進行實驗,與R-CNN系列算法進行比對,得出實驗結果。雖然在虛擬機下實現識別有一定的不確定性,但是在簡單識別目標的前提下有很好的效果,在錯檢、漏檢和速度方面有較大改善。在ROS中的識別實驗效果如圖12所示。
5? ?結論(Conclusion)
本文以虛擬機Ubuntu 18.04系統的ROS平臺,創建移動小車XACRO模型,封裝運動控制、鍵盤驅動功能包,以YOLOv3為識別算法,分析算法的優點,搭建相機插件,進行仿真移動小車目標識別實驗。該深度學習算法在ROS中錯誤識別、遺漏識別的情況很少出現,表現出較好的精度和速度。后續將在高效的GPU平臺上針對復雜環境,對檢測實時性開展進一步的研究。
參考文獻(References)
[1] 高娟娟,渠中豪,宋亞青.機器視覺技術研究和應用現狀及發展趨勢[J].中國傳媒科技,2020(07):21-22.
[2] 詹潤哲,姜飛.基于ROS與深度學習的移動機器人目標識別系統[J].電子測試,2018(15):70-71,64.
[3] 曹之君,張良.基于Faster-RCNN的快速目標檢測算法[J].航天控制,2020,38(04):49-55.
[4] REDMON J, FARHADI A. YOLOv3: An incremental improvement[J]. IEEE Conference on Computer Vision and Pattern Recognition, 2018(04):89-95.
[5] 王琦.卷積核相關性與CNN網絡結構優化的關系研究[D].蘭州:蘭州大學,2019.
[6] 王輝,張帆,劉曉鳳,等.基于DarkNet-53和YOLOv3的水果圖像識別[J].東北師大學報(自然科學版),2020,52(04):65-70.
[7] 張玉林,陳勇林.基于ROS平臺的移動機器人運動分析與仿真[J].機器人技術與應用,2018,185(05):37-40.
[8] 許松清,吳海彬,楊興裕.兩輪驅動移動機器人的運動學研究[J].電子機械工程,2005,21(06):31-34.
[9] 張亞斌.基于ROS的輪式移動機器人行人目標視覺感知與跟隨系統研究[D].徐州:中國礦業大學(江蘇),2019.
[10] 賈浩東.基于ROS平臺的機器人目標識別系統的設計[J].電子測試,2018(02):49-50,59.
作者簡介:
田? ?宇(1994-),男,碩士生.研究領域:機器視覺.