劉佳麗,黃世震,,何恩德
(1.福州大學 物理與信息工程學院,福建 福州350116;2.福州大學 微電子集成電路重點實驗室,福建 福州350002)
交通安全問題已成為當前亟待解決的社會問題之一,尤其在交通環境下很多行人的注意力因集中在智能手機上而不注意周圍是否有車輛威脅自身安全,往往造成悲劇的發生,故如何降低該類交通事故的發生率已成為急需要考慮的問題。
HOG(Histogram of Oriented Gradient)提出被檢測的目標輪廓能夠被光強梯度和邊緣分布描述,SVM(Support Vector Machines)為二分類模型并可進行回歸分析,通過將兩種方法結合,使用HOG方法檢測目標物體的邊緣信息并提取特征SVM方法對目標物體區域進行篩選[1]實現了道路行人的檢測;當今目標檢測算法蓬勃發展,文獻[2]中提出了一種基于改進的YOLOV3檢測算法大大提高了對行人檢測的精度并通過降低算法的復雜性和簡化模型解決了長距離和小體積物體難以檢測到的問題;文獻[3]中提出了一種依據上下文信息和行人高寬比的特點改進的SSD行人檢測方法,通過改進模型的整體框架和縱橫比,生成淺層語義特征信息和深層語義特征信息以檢測目標行人,提高了檢測精度;HOG+SVM方法雖然能成功進行行人檢測,但是對遮擋物體檢測準確率極低以及不能完成對目標車輛的檢測;基于YOLOV3網絡模型檢測的準確率很高,但是檢測速度慢,不能達到實時性檢測的要求;SSD屬于輕量級檢測模型,對于較大目標的檢測可以滿足要求,但對小目標物體(如較遠處的車輛)的檢測精度低且速度慢。
近年來,隨著計算機圖形處理器計算性能的不斷提升和計算機視覺物體檢測新算法的不斷涌現[4],為交通場景中的行人以及車輛檢測提供了技術支持。文獻[5]中提出使用HOG提取目標物體的邊緣與SVM技術對訓練模型進行二分類相結合的方法,該模型使用大量數據測試后得出該方法使檢測速度與檢測精度綜合提升,在行人檢測問題的處理中實現了重大突破。隨著目標檢測算法的快速發展,逐漸將行人車輛的檢測與目標檢測結合。現階段的目標檢測有兩類方法:一類是兩階段的目標檢測模型,代表為R-CNN模型,首先生成可能包含目標物體的候選框,然后再使用卷積操作對候選框中的目標物體進行分類[6];另一類為一階段模型,代表為YOLO系列和SSD系列,利用回歸的處理方式對目標物體進行檢測,即該神經網絡模型對輸入圖像進行一次前向計算,預測出全部目標物體的位置類別以及置信度。文獻[7]中提出了Fast R-CNN神經網絡模型,在R-CNN的基礎上Fast R-CNN引入了與SSPnet相同的池化方法,以區域推薦和特征提取作為模塊設計并以PASCAL VOC作為數據集進行訓練。與HOG+SVM方法對比,平均檢測精度(Mean Average Precision,MAP)由35.1%提升至53.7%;YOLO系 列 模 型 從YOLOV1發 展 到 了YOLOV5。YOLOV1[8]基于GoogleNet的基本架構采用24個卷積操作最后連接兩個全連接層作為模型的檢測頭,使用98個 邊 界 框(bounding boxes,bbox)預測7×7個目標物體。YOLOV1雖然檢測速度較快,但相比于其他目標檢測模型檢測精度并不高。YOLOV2[9]基于darknet網絡框架,將YOLOV1的7×7的卷積結構優化為3×3和1×1的深度可分離卷積結構,使提取特征更加精確同時提高了模型的非線性。為了解決YOLOV1的檢測精度的問題,引入了R-CNN模型的錨框概念并采用定位預測的方法大大提高了網絡性能和精度,缺點在小目標物體的檢測中YOLOV2的檢測精度很低。YOLOV3[10]是基于darknet 53的模型框架并將池化層更改為下采樣層的方法以減少特征的損失。下采樣層分為了三個分支分別預測大、中、小目標物體,檢測精度和速度有了明顯的提升。在本文提出的行人車輛檢測系統中必須滿足兩點要求:(1)檢測精度高并且檢測速度快,滿足實時性檢測的需求;(2)能夠為輕量級的網絡模型部署至開發板。為了解決上述問題:(1)采用單目攝像頭人工采集的數據集進行標注并分析;(2)對目標檢測神經網絡模型進行分析優化訓練并部署至NCNN平臺進行測試,根據評估標準選擇更適用于該系統的網絡模型;(3)將模型移植至開發板對道路車輛以及行人進行實時性的識別,對車輛進行測速并對人行道上的行人進行實時安全警告。
YOLO-fastest模型以darknet為基本框架,是輕量級通用目標檢測算法YOLO的改進版,具有模型小、檢測速度快與易于部署等優點,能夠用PyTorch、TensorFlow、Keras、Caffe等 機 器 學 習 庫 實 現。構 成 該模型的基本結構由“卷積+歸一化+Leaky激活函數”組成。主干網絡部分由74個卷積層構成并且采用隨機丟棄和張量相加對特征圖進行處理。檢測頭包括分類、回歸和檢測。下采樣層分別為16倍下采樣和32倍下采樣,通過調整感受野故對不同尺寸目標物體的識別結果較精確。最終的輸出為感受野較大的10×10×75尺寸預測大目標的物體和感受野較小的20×20×75尺寸預測小目標的物體。
深度可分離卷積是將標準卷積拆解為深度卷積和逐點卷積在計算的過程。傳統的卷積結構在每次的卷積操作都會考慮到所有通道使參數量大大增加,故使用深度可分離卷積操作解決該問題。先對每一通道的區域進行卷積計算,再進行通道間的信息交互,實現了通道內卷積和通道間卷積完全分離[11]。YOLO-fastest網絡引入深度可分離卷積操作減少模型參數量,增加了網絡深度,能更好地對特征進行提取,極大降低了模型參數量以及計算量,從而提高檢測速率[2]。
深度殘差結構為何凱明等人在文獻[11]中提出的基本網絡結構,該網絡全部采用相同大小的卷積核使用卷積步長取代池化,全連接層替換成平均池化層減少了參數量,解決梯度消失問題并加深了網絡結構[12]。在YOLO-fastest模型中由于使用了大量的深度可分離卷積結構使網絡參數減少。故將反殘差結構引入到YOLO-fastest模型中即在深度分離卷積之前添加一層1×1卷積結構,因此解除了深度分離卷積對網絡模型的限制。
為了確保該系統的性能更好、檢測精度更高,故對學校門口人流量密集的地區采集真實交通環境下道路車輛以及行人圖片,并進行人工標注。分別對主流的目標檢測模型YOLOV3、YOLO-fastest、YOLOV4-tiny、MobilenetV3-ssd進行實驗對比與分析評估,完成模型剪枝、微調以及優化。采用標注和分析完成的數據集對以上神經網絡模型進行訓練,將訓練完成的網絡模型轉換為NCNN模型并進行模型量化處理以及部署至NCNN平臺,最后將模型部署至Atlas200 DK開發板進行實時檢測。
2.1.1 數據集采集
目標檢測的結果與數據集的準確性密切相關,若數據集的精度較低或者噪聲干擾較多將造成檢測結果準確率低,并影響系統的整體性能。該實驗采用的數據集為普通單目攝像頭采集白天光線較好的交通場景圖像,標注類別分為三類:行人、機動車、非機動車。其中汽車、卡車、公交車等較大型車輛分類為機動車,摩托、電動車等為非機動車,在人行道以及其兩側的人為行人,并采用labling進行標注并對數據集進行分析。本文共使用了1 500張交通圖片,測試集隨機選擇150張,訓練集為1 350張。
2.1.2 數據集分析
對數據集中每一類別的目標框個數進行分析,其中標簽分別為Vehicle、Non-Motor Vehicle、pedestrian的目標框個數占比如圖1所示。在數據集標注文件中的bbox的格式為(xmin,ymin,xmax,ymax),其中(xmin,ymin)表示目標左上角坐標以及(xmax,ymax)表示右下角坐標。對bbox的高寬比進行可視化分析,結果如圖2所示,高寬比在0.3~0.5范圍內的目標為行人類別,在0.5~1.3范圍內的目標為非機動車類別,在1.3~4.0范圍內的目標為機動車類別。

圖1 目標框個數分析

圖2 bbox高寬比分析
本文旨在通過目標檢測算法識別交通場景的行人以及車輛,從而對斑馬線上的行人進行安全提醒,當車輛的速度高于設定速度閾值時,顯示危險信號以提醒行人注意安全。在完成目標檢測的基礎上,對目標車輛進行定位測速以及安全警告。本文采用文獻[13]中的方案對視頻車輛測速。
(1)通過目標檢測的網絡模型得到目標物體的中心坐標,則兩幀視頻間隔時間內目標車輛行駛的距離為式(1):

其中,xi為t時刻的目標物體的坐標,Δt為兩幀之間的時間間隔,檢測示意圖見圖3。xi(t-Δt)為上一幀目標物體的坐標,檢測示意圖見圖4。

圖3 t-Δt時刻檢測圖

圖4 t時刻檢測圖
(2)通過進行相機標定獲得映射矩陣,將攝像頭捕捉到的車輛兩幀之間行駛的距離轉換為實際距離Ti。相機標定示意圖如圖5所示,映射矩陣見

圖5 相機標定示意圖
式(2)。h為攝像頭距地面的高度,Oc為相機坐標系,OW為真實世界坐標系,φ為道路平面與Zc軸的夾角,θ代ZWOWZc構成的平面與YW軸的夾角。

(3)最終計算實際速度見式(3)。

本文訓練以及實驗環境的詳細設置如下:CUDA版本為10.2,CUDNN版本為9.0,CPU配置為R7-4800H,開發板為Atlas200 DK,軟件環境為Ununtu18.04,顯卡配置為NVIDIAGTX-1650Ti,PyTorch版本為1.6.0。開發板實物圖見圖6。

圖6 Atlas200 DK實物圖
分別對YOLO-fastest、YOLOV4-tiny、YOLOV3、Mobil enetV3-ssd進 行 訓 練。YOLO-fastest在 訓 練 過程中對部分參數進行調整以達到更好的訓練結果。輸入圖片像素為320×320×3,并對其進行圖像增強,飽和度與曝光變化分別設置為1.5和1.5,色調變化范圍為0.1。每次迭代基于飽和度、曝光、色調產生新的訓練圖片。初始學習率設置為0.001,根據訓練進程減小至0.000 1使損失函數更好地收斂,權值衰減設置為0.005以避免過擬合。YOLOV4-tiny、YOLOV3、MobilenetV3-ssd的輸入圖片像素為416×416×3、416×416×3、300×300×3,其他設置與YOLOfastest一致。
將訓練完成的YOLOV4-tiny、YOLOV3、MobilenetV3-ssd,YOLO-fastest神經網絡模型分別部署至開發板上進行實時檢測,以檢測速度、MAP與模型大小作為評估標準。最終選擇的神經網絡模型既要滿足檢測精度的要求又滿足檢測速度的要求,能夠完成對交通場景下的實時性行人車輛檢測并提醒行人危險的到來。從表1中可以觀察到YOLO-fastest的平均檢測精度為96.1%,檢測速度為33 f/s,模型大小為1.2 MB。MobilenetV3-ssd同樣是輕量級神經網絡模型,檢測精度相當,但檢測速度為6 f/s,明顯慢于YOLO-fastest,并且模型大小為10.2 MB,也要大于YOLO-fastest,與YOLOV4-tiny和YOLOV3相比,雖然平均檢測精度相對較低,但也滿足該系統對檢測精度的要求,檢測速度有了很大的提升,模型大小也遠遠小于其他兩種模型,完全達到了對實時性和輕量型的要求。檢測原圖與效果圖對比如圖7、圖8所示。

圖7 待檢測原圖

圖8 YOLO-fastest檢測效果圖

表1 網絡模型性能對比
該實驗提出的智能行人預警系統分析并對比了主流的目標檢測算法,選取了更輕量、檢測速度更快的YOLO-fastest模型并將其部署至NCNN平臺上,最終移植至開發板實現實時性檢測并回饋給行人危險信號,平均精度為96.1%,檢測速度達到33 f/s。
該文雖然做到了實時性的行人檢測,但未充分考慮到天氣的影響,如陰天、雨天、霧天等極端天氣造成檢測的準確率降低的情況,將考慮使用遷移學習的神經網絡模型對該極端情況進行處理,遷移學習可以很好地解決雨天數據集難以采集的問題。