








摘 要:為了方便交通部門改善交通擁堵問題,使用旭日X3嵌入式開發板作為硬件平臺,通過YOLOv8深度學習網絡識別道路上通行的車輛及其車輛類型。使用開放神經網絡交換(Open Neural Network Exchange, ONNX)格式可視化編輯工具去掉了模型的輸出頭,將網絡中的激活函數由SiLU函數更換為ReLU函數,將模型輸出由80個檢測類別更改為4個檢測類別,在Small版本中,使用非極大值抑制算法(Non-Maximum Suppression, NMS)將最合適的檢測框篩選出來,然后用SORT(Simple Online and Realtime Tracking)多目標追蹤算法和匹配算法將獨立幀檢測到的車輛關聯起來,實現車輛自動計數。在服務器上配置好YOLOv8的訓練環境,訓練3個周期,測試模型的mAP指標為0.635,推理速度提升至20 fps左右,目標檢測系統的計數精度達到98%,可以準確獲取到路口的交通流數據,幫助改善交通擁堵問題。
關鍵詞:YOLOv8深度學習網絡;NMS算法;SORT多目標追蹤算法
中圖分類號:TP311.1 文獻標志碼:A
0 引言(Introduction)
隨著城市化進程的加快,城市交通問題日益嚴峻。精確掌握交通車流量信息是開展城市交通管理的基礎,獲得準確且及時的車流量數據可以幫助交通管理部門科學調配交通資源[1]。目前,城市道路已廣泛布置監控攝像頭,利用攝像頭視頻和圖像處理算法自動監測和統計車流量。使用這種方法采集的數據精度較高,并且能夠實現全天候、全自動的監測。然而,圖像處理算法計算量巨大,在邊緣設備上實現實時車流量統計一直面臨困難。本文設計利用“地平線”推出的旭日X3嵌入式開發板部署YOLOv8深度學習網絡模型,實現了實時監測和統計交通車流量,對推動該領域的發展具有重要的意義。
1 系統整體設計方案(System overall design scheme)
本設計使用旭日X3嵌入式開發板作為核心硬件平臺,Linux作為操作系統。采用攝像頭模塊采集道路車流視頻數據,通過4G無線模塊和遠程服務器實現通信。本設計使用YOLOv8目標檢測器和多目標追蹤算法SORT構建高精度的實時跟蹤系統,該系統可以獲取道路上行駛車輛的視頻,并從視頻中識別其中的車輛及其車輛類型,對識別到的車輛進行計數,然后將識別到的車輛信息通過4G通信模塊實時上傳到服務器。系統構成模塊框圖如圖1所示。
2 系統硬件設計(System hardware design)
本文設計的硬件系統由旭日X3嵌入式開發板、ATKM750C4G無線通信模塊、攝像頭和5V開關電源組成。相機使用移動設備和嵌入式系統的攝像頭串行接口協議MIPI CSI總線和開發板進行通信。
ATK-M750C 4G無線通信模塊使用串口與主機進行通信,在安裝Linux操作系統的主機中,串口設備會被抽象為/dev/ttyS*設備文件。這種方式只需要對串口設備文件進行文件讀寫操作,就能實現對串口設備收發數據。在系統中,首先設置ATK-750模塊和服務器通信的IP地址和端口號,其次將模塊設置為TCP(Transmission Control Protocol)穿透模式。連接開發板后,將開發板串口3的波特率設置為與模塊的波特率一致,然后打開系統文件路徑/dev/ttyS3的設備文件,發送數據時通過write系統調用就可以將數據傳送到ATK-M750模塊。系統配置了一個具有公網IP(Internet Protocol)的服務器,用于接收系統發送的數據,并在服務器上運行了一個服務程序,該程序使用TCP協議通信,打開了本機的7788端口用于接收4G模塊發送的數據。一旦和4G模塊建立TCP連接,就循環接收4G模塊發送的計數信息,然后把信息保存在本地文件中。系統的硬件電路原理圖如圖2所示。
3 目標識別系統設計(Design of target recognition system)
3.1 YOLOv8深度學習網絡模型微調
YOLOv8官方發布的模型在COCO2017數據集上做了300輪預訓練,可以識別日常生活中80種常見物體的類別,但本系統主要識別的對象是車輛類別,不需要具備識別其他物體的能力,因此需要對YOLOv8深度學習網絡模型進行微調。
UA-DETRAC數據集包含在中國北京市和天津市兩個城市的24個不同的地點使用Cannon EOS 550D相機拍攝的10 h的道路交通視頻,約有14萬幀圖像數據,手動注釋了8 250輛車輛,總共有121萬個標記的對象邊界框,本研究要在該數據集上訓練YOLOv8深度學習網絡模型對車輛位置和車輛類別的檢測能力,因此需要對模型做兩項微調,一是需要將網絡中的激活函數由SiLU 函數更換為ReLU 函數,然后將UADETRAC的數據標注轉換成符合YOLOv8規定的格式。二是將模型輸出由80個檢測類別更改為4個檢測類別。在服務器上配置YOLOv8的訓練環境,訓練3個周期的模型,模型的mAP指標達到0.6以上,計算速度快,精確度高。
3.2 YOLOv8深度學習網絡模型在地平線旭日X3上部署
將訓練好的深度學習網絡模型部署到終端的流程通常包括導出ONNX模型、模型量化、模型推理3個步驟。ONNX(Open Neural Network Exchange)是一種表示神經網絡模型的開放格式,模型部署工作中的第一步通常是將不同的神經網絡框架訓練好的模型轉換成ONNX通用的表達形式[2]。在本文的設計中,調用YOLOv8提供的模型導出腳本,可以將訓練得到的PyTorch格式的模型轉換為ONNX模型。模型直接導出的ONNX模型數據都是使用單精度浮點數進行計算,運算速度慢,因此需要把單精度浮點數轉換為8位的整數進行計算,該過程稱為模型量化[3]。在旭日X3嵌入式開發板上,還需要將ONNX模型轉換為“地平線”產品專用的模型,用于調用專有計算單元BPU加速計算。在“地平線”的AI工具鏈中,這一步轉換過程和模型量化是同時進行的。
3.3 提升模型推理速度
未經過任何修改的YOLOv8官方模型,其Small版本經量化后,在旭日X3嵌入式開發板上部署之后,模型的推理速度僅為每秒3~4幀,遠遠沒有達到實時檢測的效果,所以必須對其推理性能進行優化,提高其推理速度。
在本文的設計中,對模型一共做了3處修改。首先通過觀察模型發現,其檢測頭涉及大量的廣播運算,并導致了大量的量化/反量化操作,造成無謂的計算資源損耗,為了解決此問題,系統使用ONNX-Modify工具去掉模型的輸出頭。
其次將模型中所有激活函數更換為ReLU 函數[4]。YOLOv8深度學習網絡模型中原始的激活函數為SiLU函數,SiLU函數的表達式為SiLU(x)=x/(1+e-x ),網絡訓練過程中,SiLU函數因為導數連續,收斂速度比ReLU函數更快,在同樣數量的訓練周期,模型的性能通常也會比使用ReLU的版本好。但是,在模型部署中可以以犧牲一部分模型準確度為代價來提高模型的推理速度。
再次將模型的輸入圖像分辨率從640×640修改為512×512。YOLOv8深度學習網絡模型中的主要運算為卷積運算,其計算復雜度與圖像的長寬之積成正比,所以降低圖像的分辨率能夠非常有效地降低模型的推理時間。
3.4 非極大值抑制算法設計
YOLOv8深度學習網絡模型使用anchor box的方式進行目標檢測,對同一個目標會有多個anchor box進行預測,那么這么多個預測結果可能會重疊,在Small版本中,輸入圖像的分辨率為512×512時,YOLOv8深度學習網絡模型將會輸出約20 000個預測框。為了將最合適的檢測框篩選出來,可以使用NMS算法[5]。
NMS算法的主要步驟如下:
第一步是將置信度過低的框過濾掉。通過選取不同的過濾閾值,可以過濾幾十到幾百個框。第二步將輸出框按置信度從高到低排序,從置信度最高的框開始,后邊每一個框都和該框計算其交并比(IoU)值。IoU值越大,表示兩個框的重合度越高,將大于IoU閾值的框標記為棄用;若IoU值小于閾值,認為該框和第一個框不是同一個物體,則保留該框。再循環以上步驟,從保留下來的置信度第二高的框開始,重復第二步,直到所有框都計算完畢。循環步驟結束后仍然保留下的框,就是經過NMS算法之后的輸出框。
4 計數算法設計(Counting algorithm design)
4.1SORT多目標追蹤算法設計
YOLOv8是一種單幀目標檢測算法,它會獨立地檢測每一幀圖像,但是檢測并提取車輛圖像后,相鄰兩幀圖像中屬于同一車輛的檢測框還不具備聯系。要想實現系統對檢測到的車輛進行自動計數,就要設計一種方法能夠將獨立幀中檢測到的物體關聯起來,此時可以采用SORT多目標追蹤算法[6]。
SORT多目標追蹤算法是基于Kalman濾波和匈牙利算法進行跟蹤[7]。SORT多目標追蹤算法的流程如下:首先對每一幀圖像使用目標檢測算法(如YOLO)生成目標候選框,其次計算各個框與現有追蹤框(初始化幀設為檢測框)的IoU值。得到當前幀檢測目標和追蹤目標的IoU矩陣,使用線性分配算法將當前幀中的檢測框和追蹤框關聯起來。未匹配到的追蹤框將被標記為失效,匹配到的檢測框將被添加到追蹤列表中。最后使用Kalman濾波更新匹配上的追蹤框的狀態。SORT多目標追蹤算法工作流程如圖3所示。
當獲得當前幀的目標檢測結果后,就可以開始進入目標追蹤階段。SORT多目標追蹤算法首先預測追蹤列表中所有追蹤框在當前幀的位置,其次計算預測框和當前幀的檢測框的IoU值,獲取IoU矩陣。將IoU矩陣取負值,或使用1減去矩陣中的所有元素,得到的新的矩陣將作為cos t 矩陣輸入線性匹配算法。線性匹配算法會給出匹配結果。得到匹配結果后,對于匹配到的追蹤框,使用其對應的檢測框更新追蹤框的位置;對于未匹配到的追蹤框,根據算法配置參數決定是否將其從追蹤列表中移除;對于未匹配到的檢測框,將其添加到追蹤列表中。該算法的核心操作是卡爾曼濾波算法和線性匹配算法。
4.2 卡爾曼濾波算法設計
卡爾曼濾波是一種利用線性系統的狀態方程,結合系統的觀測值,對系統狀態做出最優估計的算法。卡爾曼濾波假設系統是帶噪聲的線性系統,并假設系統的過程噪聲和觀測噪聲都服從高斯分布,因此系統的狀態方程可以寫成公式(1)[8]:
4.3 線性匹配算法設計
線性匹配算法用于確定追蹤框和當前幀的檢測框的對應關系,可以計算所有追蹤框和檢測框的IoU值[這一步的計算復雜度為O(m×n),假設有m 個追蹤框和n 個檢測框],然后把兩個框之間的IoU值當作其關聯權重,從而把該問題轉化為最小權值匹配問題,即在二分圖中求出一組點對的匹配,使得這組點對的權值和最小。
在本文設計的系統中,首先根據追蹤框得到當前幀的預測框,其次計算預測框和當前幀檢測框的IoU值,得到IoU值的矩陣,調用scipy(Python中一個用于科學計算的庫)中的linear_sum_assignment函數求解匹配結果。
4.4 計數算法設計
當系統追蹤到一個新的目標時,給該目標賦一個ID用于標識該目標,賦值ID的方法如下:對于第1個目標,對其賦值ID為1;以后每追蹤到一個新的目標,就把上一個目標的ID值加1作為新目標的ID。通過這樣的ID賦值方法,可以實現對車輛的計數。對于多種車型,對每一種車型都建立一個追蹤器,從而實現對車輛的分類追蹤。為了提升計數的準確度,對系統的算法做了如下改動。
(1)為了應對檢測器檢測質量差和經常出現未檢測出物體類型的情況,系統延長了將追蹤物體移出追蹤列表的判定時間,從丟失2幀就將其移出改為丟失15幀再移出。此項改動提升了追蹤的穩定性。
(2)對于遠處的車輛,其在圖像中對應一個很小的目標,檢測器給出的檢測結果準確度較差,可能導致系統出現檢測不穩定、類別分類錯誤等問題。通過忽略檢測器給出的檢測框面積小于一定閾值的目標,可以提升追蹤的穩定性,從而提升計數精度。
5 系統調試(System debugging)
5.1 目標檢測系統調試
目標檢測系統主要關注檢測精度和檢測速度兩個參數,當對YOLOv8深度學習網絡模型進行3輪微調訓練之后,測試模型的mAP指標為0.635。經微調后的模型針對小型轎車、卡車、公交車及其他車輛的測試結果如表1所示。
直接使用ONNX模型在CPU上推理,獲得的推理速度約為3.5 fps,經幾次改進,推理速度提升為20 fps左右。最終經過量化的模型在旭日X3嵌入式開發板上的運行結果如圖4所示。微調后的YOLOv8深度學習網絡模型在數據集上表現良好,具有較高的檢測精度,可以在實際場景中應用。
5.2 計數系統調試
計數系統的核心是計數精度,在測試場景下統計系統的計數精度,結果為98%。其中,計數結果可視化圖如圖5所示,系統實物圖如圖6所示。
5.3 系統運行結果
系統接收到的數據格式為時間戳、小型轎車的計數量、卡車的計數量、公交車的計數量和其他車輛的計數量,系統運行結果圖如圖7所示。
6 結論(Conclusion)
本文設計的系統使用旭日X3作為硬件平臺,結合高清攝像頭捕獲圖像的信息,在服務器上部署了YOLOv8深度學習網絡模型,詳細介紹了該模型如何進行微調,以適應具體的應用場景。使用NMS算法和SORT多目標追蹤算法對模型輸出進行篩選和目標追蹤,并對模型進行微調訓練之后,目標檢測系統在識別速度和識別精度上均達到系統設計要求,可以準確獲取到路口的交通流數據。最后將本地的檢測信息通過4G無線通信模塊實時傳輸到服務器,實現數據實時上報。
參考文獻(References)
[1] 曹長玉. 基于深度學習的車流監測與預測算法研究[D].廈門:集美大學,2020.
[2] 賀凱,田聰,顧斌. TensorFlow與ONNX模型轉換研究與實現[D]. 西安:西安電子科技大學,2022. [3] 過銘濤. 基于改進YOLOv3的目標檢測模型研究與應用[D].南京:南京郵電大學,2022.
[4] 劉磊. 基于YOLO網絡的智能交通車流量統計研究[D].西安:西安科技大學,2019.
[5] DING J J,ZHANG J H,ZHAN Z Q,et al. A precision efficient method for collapsed building detection in post-earthquake UAV images based on the improved NMS algorithm and faster R-CNN[J]. Remote sensing,2022,14(3):663.
[6] 李廣. 基于視頻圖像的車流量的檢測研究[D]. 鞍山:遼寧科技大學,2022.
[7] KAVITHA N,CHANDRAPPA D N. Performance analysis towards GUI-based vehicle detection and tracking using YOLOv3 and SORT algorithm[J]. International journal of intelligent systems technologies and applications,2022,20 (5):436-451.
[8] 劉劍,龔志恒,林璐瑤,等. 基于局部圖塊目標匹配的交通車流跟蹤與統計[J]. 控制工程,2014,21(3):436-440,445.
作者簡介:
孫志娟(1993-),女,碩士,助教。研究領域:信息技術,電子信息。
李景景(1991-),女,碩士,講師。研究領域:信息技術,電子信息。
馮玉濤(2001-),男,本科,助教。研究領域:信息技術,電子信息。
基金項目:大學生創新創業訓練項目成果“基于深度學習的智能交通車流監測與預測研究”(202312747001)