張鳳
摘要:針對實際交通環(huán)境下行人和車輛檢測問題,提出一種基于YOLOv3改進的目標檢測網(wǎng)絡YOLO-CP,對YOLOv3網(wǎng)絡結(jié)構(gòu)進行壓縮剪枝,并進行特征提取的優(yōu)化,使用自主采集標注的交通數(shù)據(jù)集,進行稀疏化訓練。在實際交通場景中,YOLO-CP在GPU下檢測速度達到25幀/秒,車輛檢測準確率達到96.0%,行人檢測準確率達到93.3%,優(yōu)化算法滿足了ADAS對實時性和高精度的要求。
關鍵詞:行人檢測;車輛檢測;YOLOv3;ADAS
中圖分類號:TP391.41;TP18? ? ? 文獻標識碼:A 文章編號:2096-4706(2021)07-0059-04
Research on Vehicle and Pedestrian Detection Algorithm Based on Deep Learning
ZHANG Feng
(Shandong Huayu University of Technology,Dezhou? 253034,China)
Abstract:Aiming at the problem of pedestrian and vehicle detection in actual traffic environment,this paper proposes an improved target detection network YOLO-CP based on YOLOv3,which compresses and prunes the YOLOv3 network structure,optimizes the feature extraction,and uses the independently collected and labeled traffic data set for sparse training. In the actual traffic scene,the detection speed of YOLO-CP under the GPU reaches 25 frames/s,the vehicle detection accuracy rate reaches 96.0%,and the pedestrian detection accuracy rate reaches 93.3%.The optimization algorithm meets the real-time and high-precision requirements of ADAS.
Keywords:pedestrian detection;vehicle detection;YOLOv3;ADAS
收稿日期:2021-03-22
基金項目:2020年山東華宇工學院科技計劃項目(2020KJ16)
0? 引? 言
近年來,隨著交通車輛數(shù)量的高速增長,尤其是共享單車的興起,人們出行方式發(fā)生巨大改變,使得交通安全面臨的挑戰(zhàn)越來越大。ADAS(高級駕駛輔助系統(tǒng))和自動駕駛技術(shù)逐漸成為國內(nèi)外研究者的關注熱點,行人和車輛防碰撞預警系統(tǒng)是ADAS的關鍵技術(shù)之一,該系統(tǒng)要求能夠?qū)崟r準確地檢測出前方的車輛,并及時向駕駛員發(fā)出警告,以采取有效措施,避免交通事故的發(fā)生。
目前,基于單目視覺的檢測方法仍是實現(xiàn)前方行人和車輛檢測的主要手段,與超聲波、激光、雷達等技術(shù)相比,視覺檢測更符合人眼捕捉信息的習慣,而且實施成本更低。車輛輔助駕駛系統(tǒng)的檢測目標包括車輛、行人、交通標志等,其中行人和車輛是道路交通環(huán)境的主要參與者。行人不是剛性物體,姿勢和外觀是可變的,背景環(huán)境也是復雜的,增加了識別和檢測的難度。尤其是車載行人和車輛實時檢測系統(tǒng)是輔助駕駛系統(tǒng)的重要組成部分,一個體積小、功耗低、準確、實時的檢測系統(tǒng)可以有效地保護行人和車輛。
基于機器學習的目標檢測方法需要手工設計特征,提取到的特征好壞對系統(tǒng)性能有著直接的影響,盡管機器學習的方法不斷優(yōu)化,檢測的效果有所改善,但實際交通場景復雜多變,當受外界環(huán)境如光照的變化、陰影、背景、遮擋等影響時,對單目視覺檢測算法的影響比較大,不能有效的保證具有一定的檢測準確率。
R-CNN[1]作為利用深度學習進行目標檢測的先行者,提出選擇性搜索等經(jīng)典算法,提升了目標檢測的準確率,而后相繼出現(xiàn)Fast R-CNN[2]、Faster R-CNN[3]、YOLO[4]、YOLO 9000[5]、SSD[6]、YOLOv3[7]目標檢測網(wǎng)絡的優(yōu)化。新型網(wǎng)絡結(jié)構(gòu)的提出(如AlexNet、VGG、ResNet[8]等)使得識別性能不斷提高的同時,網(wǎng)絡模型的參數(shù)和大小也不斷增大,對存儲資源和計算資源的需求也越來越高,需要對網(wǎng)絡模型做壓縮剪枝處理,才能用于嵌入式設備。隨著嵌入式端性能的不斷優(yōu)化提高,將CNNs應用于ADAS關鍵環(huán)節(jié)之一的行人和車輛檢測,有利于進一步推動自動駕駛汽車技術(shù)的發(fā)展。
1? 網(wǎng)絡結(jié)構(gòu)設計
本文提出的檢測系統(tǒng)所用的網(wǎng)絡與YOLOv3(You Only Look Once v3)具有相似的結(jié)構(gòu),YOLOv3已被證明是一種先進的通用目標檢測深度學習方案,YOLOv3網(wǎng)絡結(jié)構(gòu)則是在Darknet-19[9]網(wǎng)絡的基礎上結(jié)合殘差網(wǎng)絡ResNet組成,網(wǎng)絡使用連續(xù)的3×3和1×1卷積層,并使用batch normalization[10]來提高穩(wěn)定性,加速收斂。本文提出的檢測系統(tǒng)使用獨立的邏輯回歸做二分類,采用金字塔網(wǎng)絡結(jié)構(gòu)FPN[11]進行多尺度預測,F(xiàn)PN結(jié)構(gòu)如圖1所示。
YOLOv3預測3種不同尺度的框,每種尺度預測3個box,最后預測得到一個3-d tensor,包含bounding box信息,目標信息以及類別的預測信息。針對檢測系統(tǒng)的特點,使用k-means聚類來確定邊界框的先驗,選擇9個聚類和3個尺度,然后在整個尺度上均勻分割聚類,產(chǎn)生anchor box的長寬分別是Pw和Ph,網(wǎng)絡預測四個值:tx、ty、tw、th。如果某個單元距離圖像的左上角距離為(cx,cy),則該單元內(nèi)的bounding box的位置和形狀參數(shù)如圖2所示,bx、by、bw、和bh就是預測得到的bounding box的中心坐標和大小。輸出的特征圖的大小是N×N×[3×(4+1+C)],其中C是類別數(shù)。
在使用k-means聚類自動選擇最佳初始框的時候,如果使用標準的k均值與歐氏距離,較大的box會產(chǎn)生比較小的box更多的誤差。然而,想要增加IOU(Intersection over union)的分數(shù),可使用以下距離公式:
d(box,centroid)=1-IOU(box,centroid)? ? (1)
根據(jù)標準的k均值和歐氏距離結(jié)果,選擇初始anchor boxes時,k=5。這些措施有利于保持原速度,提高精度。
2? 壓縮剪枝
一般來說,神經(jīng)網(wǎng)絡層數(shù)越深、參數(shù)越多,所得結(jié)果越精細。但與此同時,網(wǎng)絡越精細,意味著所消耗的計算資源越多。對于嵌入式設備,模型的運行速度和文件大小都極其重要。神經(jīng)網(wǎng)絡的參數(shù)眾多,但其中有些參數(shù)對最終的輸出結(jié)果貢獻不大而顯得冗余,剪枝顧名思義,就是要將這些冗余的參數(shù)剪掉。
為了使本文的網(wǎng)絡模型能夠在嵌入式設備上使用,需要對YOLOv3網(wǎng)絡進行壓縮剪枝[12],去掉一些對網(wǎng)絡不重要的通道參數(shù),本文將壓縮剪枝后的網(wǎng)絡稱為YOLOv3-CP。壓縮剪枝的步驟如圖3所示。
壓縮率計算公式為:
(2)
其中:n表示權(quán)重個數(shù),b表示存儲的比特位數(shù),k表示權(quán)重個數(shù),用log2k表示編碼的權(quán)重索引。Python版剪枝部分代碼為:
def prune_by_std(self, s=0.5):
for name, module in self.named_modules():
if name in ['fc1', 'fc2', 'fc3']:
threshold = np.std(module.weight.data.cpu().numpy()) * s
print(f'Pruning with threshold : {threshold} for layer {name}')
module.prune(threshold)
剪枝將權(quán)重的數(shù)量減少了10倍,這樣需要存儲的數(shù)據(jù)量大大減少,量化進一步提高了壓縮率。然后將最后的權(quán)值和權(quán)值索引進行哈夫曼編碼,總的壓縮率達到50%。
3? 實驗與結(jié)果
3.1? 數(shù)據(jù)處理
本文檢測目標是道路場景中常見的行人和車輛目標,因此,為進一步提高檢測準確率,把COCO的80類目標轉(zhuǎn)換為三個大類、七個小類:person、vehicle(包含:car、bus、truck、bicycle、motorbike)和background。訓練所需的原始圖像來源于已知開源的大型目標檢測數(shù)據(jù)集:PASCAL VOC2007、PASCAL VOC2012、Cityscapes、COCO2014、Bdd100k數(shù)據(jù)集,以及自主采集的實際交通視頻數(shù)據(jù)集CityImages,采用VOC2007數(shù)據(jù)集的格式及評價算法工具。首先需將Cityscapes、COCO2014和Bdd100k數(shù)據(jù)集轉(zhuǎn)換為PASCAL VOC2007數(shù)據(jù)集格式,步驟為:
Step1:從PASCAL VOC2007、PASCAL VOC2012、COCO 2014、Cityscapes數(shù)據(jù)集中抽取出包含person、vehicle(car、bus、truck、bicycle、motorbike)實際場景中常見行人和車輛圖片,并統(tǒng)一按照00000*.jpg的格式命名。
Step2:將Cityscapes、COCO2014、Bdd100k數(shù)據(jù)集按照PASCAL VOC2007 數(shù)據(jù)集格式要求,制作包含person、vehicle(car、bus、truck、bicycle、motorbike)目標的xml標注文件。
Step3:對自主采集的實際交通視頻數(shù)據(jù)集CityImages按照Step1和Step2的要求對數(shù)據(jù)集進行標注。本文制作的車輛樣本數(shù)據(jù)集包括140 000張彩色三通道圖像,訓練集和測試集按照4:1的比例劃分。
Step4:擴展雨霧天氣場景下的圖片,適應不同環(huán)境下的行人和車輛檢測,提高模型的泛化能力,進而提高檢測的準確率。
3.2? 模型訓練
實驗中,采用流行的深度學習框架Caffe實現(xiàn)了檢測模型,根據(jù)YOLOv3的網(wǎng)絡結(jié)構(gòu)作相應修改,為了加快網(wǎng)絡的訓練速度,采用GPU的計算模式,訓練樣本時采用的主要硬件配置為:處理器Intel(R) Core(TM) i7-6850K CPU @3.60GHz 六核,內(nèi)存32 GB,GPU卡,NVIDIA GeForce GTX TITAN X。
網(wǎng)絡剪枝后的訓練步驟分為兩步:
Step1:采用在ImageNet數(shù)據(jù)集預訓練得到的VGG16模型作為訓練的模型,來訓練包含person、vehicle(car、bus、truck、bicycle、motorbike)目標的數(shù)據(jù)集,并對原參數(shù)進行調(diào)優(yōu),初始學習率設置為0.001,沖量設置為0.9,權(quán)重衰減設置為0.000 5,batchsize大小為64,迭代次數(shù)為30萬次,得到訓練模型YOLOv3.caffemodel。
Step2:對Step1訓練得到的模型YOLOv3.caffemodel進行壓縮剪枝,將壓縮后的模型作為訓練的原始模型,來訓練包含person、vehicle(car、bus、truck、bicycle、motorbike)目標的數(shù)據(jù)集,并對參數(shù)進行調(diào)優(yōu)。在訓練過程中,使用隨機梯度下降,初始學習率設置為0.001,沖量設置為0.9,權(quán)重衰減設置為0.000 5,batchsize大小為128,迭代次數(shù)為30萬次。在訓練期間,使用數(shù)據(jù)增強方法,通過對輸入圖片進行隨機左右翻轉(zhuǎn),隨機扭曲圖像的飽和度、色調(diào)、對比度和亮度等,防止模型的過擬合現(xiàn)象。
在訓練過程中,改變模型輸入大小,使模型對圖像具有魯棒性。對于每個圖像,除了執(zhí)行水平翻轉(zhuǎn)之外,還隨機調(diào)整其大小,然后每10輪將其送入網(wǎng)絡。具體來說,調(diào)整每個圖像的大小為{320,352,384,416,448,480,512,544,576,608}中的一個。因此,最小的選項是320×320,最大的是608×608。在將圖像輸入模型之前,從每個圖像中減去整個數(shù)據(jù)集的平均RGB值,以減少概率分布對像素值的影響。這種訓練方法迫使模型適應不同輸入分辨率。
在網(wǎng)絡訓練期間,采用的YOLOv3網(wǎng)絡將Softmax多分類損失函數(shù)換為二分類損失函數(shù),因為當圖片中存在物體相互遮擋的情形時,一個box可能屬于好幾個物體,這時使用二分類的損失函數(shù)就會更有優(yōu)勢。
3.3? 模型檢測
以下為行人和車輛檢測的步驟:
Step1:在檢測階段,輸入經(jīng)過壓縮剪枝后訓練得到的網(wǎng)絡模型YOLOv3-CP。
Step2:使用NMS算法來消除對同一行人或者車輛的重復檢測并使檢測框均勻分布。為避免誤報,本文選擇0.7作為從YOLOv3網(wǎng)絡輸出的分類結(jié)果的閾值。
Step3:處理視頻的時候,對視頻的每一幀,按照序列或者尺寸盡量與之前檢測過的行人或車輛匹配。通過與之前記錄的尺寸和速度的估算做比較,若是二者的重合度超過0.5,則認為匹配成功。若匹配不成功,則將它們認為是新出現(xiàn)的行人或車輛,超過十幀還沒有被識別的行人或車輛將會被忽略,得到最終結(jié)果之前,行人或車輛必須在至少十幀內(nèi)被檢測到。
Step4:根據(jù)世界坐標和圖像坐標的轉(zhuǎn)換關系,測量和前方行人或車輛的距離,設定閾值,檢測到小于此閾值的行人或車輛,被認為有可能會發(fā)生碰撞,并生成報警信息,提醒駕駛員,注意前方安全。
3.4? 實驗結(jié)果及分析
本文將訓練和測試圖像尺寸預設定為320×320,本文訓練自己建立的數(shù)據(jù)集(7類)得到的模型和YOLOv3算法的80類數(shù)據(jù)集訓練得到的模型在PASCAL VOC 2007測試集上的測試對比結(jié)果如表1所示。
對訓練得到的網(wǎng)絡模型進行50%的壓縮剪枝,然后進行微調(diào)再訓練,經(jīng)過壓縮剪枝之后,模型的參數(shù)數(shù)量降低了一半,模型的大小由580 M降低為80 M,并且基本保持了檢測精度不變,如表2所示。
為驗證算法的有效性,采用了實際不同場景下的視覺圖像進行測試。測試結(jié)果如圖4所示,圖中以粉紅線框出的目標為檢測出的行人,以黃色線框出的目標為檢測出的車輛。
實驗結(jié)果表明,適度增加樣本的數(shù)量和多樣性,可以提高深度網(wǎng)絡的檢測準確度,尤其對較小目標的檢測精度增加明顯,適當降低深度網(wǎng)絡的檢測目標的類別數(shù),一定程度上提高了目標檢測的準確率。
4? 結(jié)? 論
本文利用深度學習目標檢測算法YOLOv3的框架,對網(wǎng)絡結(jié)構(gòu)進行壓縮剪枝。擴展了訓練所用的數(shù)據(jù)集,根據(jù)實際場景自主采集交通視頻,并對其進行標注,使得訓練的特征更加接近實際場景。實驗結(jié)果分析表明,在滿足實時性或準實時性的要求下,本算法的行人檢測準確率可以達到93.3%,車輛檢測準確率可以達到96.0%。嵌入式視覺和深度學習技術(shù)的結(jié)合為進一步開發(fā)具有避撞功能的安全輔助駕駛系統(tǒng)提供了可能。
參考文獻:
[1] ROSS G,DONAHUE J,DARRELL T,et al. Rich feature hierarchies for accurate object detection and semantic segmentation [C]//2014 IEEE Conference on Computer Vision and Pattern Recognition.Columbus:IEEE,2014:580-587.
[2] GIRSHICK R. FAST R-CNN [C]//2015 IEEE International Conference on Computer Vision (ICCV).Santiago:IEEE,2015:10-15.
[3] REN S Q,HE K M,Girshick R,et al. Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks [J].IEEE transactions on pattern analysis and machine intelligence,2017,39(6):1137-1149.
[4] REDMON J,DIVVALA S,GIRSHICK R,et al. You Only Look Once:Unified,Real-Time Object Detection [C]//2016 IEEE Conference on Computer Vision and Pattern Recognition(CVPR).Las Vegas:IEEE,2016:13.
[5] REDMON J,F(xiàn)ARHADI A. YOLO9000:Better,F(xiàn)aster,Stronger [C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).Honolulu:IEEE,2017:6517-6525.
[6] LIU W, ANGUELOV D, ERHAN D,et al. SSD:Single Shot MultiBox Detector [C]//Computer Vision-ECCV 2016. Amsterdam:Springer,Cham,2016:21-37.
[7] REDMON J,F(xiàn)ARHADI A. YOLOv3:An Incremental Improvement [J/OL].arXiv:1804.02767 [cs.CV].(2018-04-18).https://arxiv.org/abs/1804.02767.
[8] HE K M,ZHANG X Y,REN S Q,et al. Deep Residual Learning for Image Recognition [C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).Las Vegas:IEEE,2016:770-778.
[9] REDMON J. Darknet:Darknet:Open Source Neural Networks in C. [EB/OL].[2021-03-10].http://pjreddie.com/darknet/.
[10] IOFFE S,SZEGEDY C. Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift [J/OL].arXiv:1502.03167 [cs.LG].(2015-02-11).https://arxiv.org/abs/1502.03167.
[11] LIN T Y,Dollár P,Girshick R,et al. Feature Pyramid Networks for Object Detection [C]//2017 IEEE Conference on Computer Vision and Pattern Recognition(CVPR).Honolulu:IEEE,2017:936-944.
[12] HAN S,MAO H,DALLY W J. Deep Compression:Compressing Deep Neural Networks with Pruning,Trained Quantization and Huffman Coding [J/OL].arXiv:1510.00149 [cs.CV].(2015-10-01).https://arxiv.org/abs/1510.00149.
作者簡介:張鳳(1991—),女,漢族,山東臨沂人,講師,碩士研究生,研究方向:圖像處理。