張鳳
摘要:針對(duì)實(shí)際交通環(huán)境下行人和車(chē)輛檢測(cè)問(wèn)題,提出一種基于YOLOv3改進(jìn)的目標(biāo)檢測(cè)網(wǎng)絡(luò)YOLO-CP,對(duì)YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行壓縮剪枝,并進(jìn)行特征提取的優(yōu)化,使用自主采集標(biāo)注的交通數(shù)據(jù)集,進(jìn)行稀疏化訓(xùn)練。在實(shí)際交通場(chǎng)景中,YOLO-CP在GPU下檢測(cè)速度達(dá)到25幀/秒,車(chē)輛檢測(cè)準(zhǔn)確率達(dá)到96.0%,行人檢測(cè)準(zhǔn)確率達(dá)到93.3%,優(yōu)化算法滿足了ADAS對(duì)實(shí)時(shí)性和高精度的要求。
關(guān)鍵詞:行人檢測(cè);車(chē)輛檢測(cè);YOLOv3;ADAS
中圖分類(lèi)號(hào):TP391.41;TP18? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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
基金項(xiàng)目:2020年山東華宇工學(xué)院科技計(jì)劃項(xiàng)目(2020KJ16)
0? 引? 言
近年來(lái),隨著交通車(chē)輛數(shù)量的高速增長(zhǎng),尤其是共享單車(chē)的興起,人們出行方式發(fā)生巨大改變,使得交通安全面臨的挑戰(zhàn)越來(lái)越大。ADAS(高級(jí)駕駛輔助系統(tǒng))和自動(dòng)駕駛技術(shù)逐漸成為國(guó)內(nèi)外研究者的關(guān)注熱點(diǎn),行人和車(chē)輛防碰撞預(yù)警系統(tǒng)是ADAS的關(guān)鍵技術(shù)之一,該系統(tǒng)要求能夠?qū)崟r(shí)準(zhǔn)確地檢測(cè)出前方的車(chē)輛,并及時(shí)向駕駛員發(fā)出警告,以采取有效措施,避免交通事故的發(fā)生。
目前,基于單目視覺(jué)的檢測(cè)方法仍是實(shí)現(xiàn)前方行人和車(chē)輛檢測(cè)的主要手段,與超聲波、激光、雷達(dá)等技術(shù)相比,視覺(jué)檢測(cè)更符合人眼捕捉信息的習(xí)慣,而且實(shí)施成本更低。車(chē)輛輔助駕駛系統(tǒng)的檢測(cè)目標(biāo)包括車(chē)輛、行人、交通標(biāo)志等,其中行人和車(chē)輛是道路交通環(huán)境的主要參與者。行人不是剛性物體,姿勢(shì)和外觀是可變的,背景環(huán)境也是復(fù)雜的,增加了識(shí)別和檢測(cè)的難度。尤其是車(chē)載行人和車(chē)輛實(shí)時(shí)檢測(cè)系統(tǒng)是輔助駕駛系統(tǒng)的重要組成部分,一個(gè)體積小、功耗低、準(zhǔn)確、實(shí)時(shí)的檢測(cè)系統(tǒng)可以有效地保護(hù)行人和車(chē)輛。
基于機(jī)器學(xué)習(xí)的目標(biāo)檢測(cè)方法需要手工設(shè)計(jì)特征,提取到的特征好壞對(duì)系統(tǒng)性能有著直接的影響,盡管機(jī)器學(xué)習(xí)的方法不斷優(yōu)化,檢測(cè)的效果有所改善,但實(shí)際交通場(chǎng)景復(fù)雜多變,當(dāng)受外界環(huán)境如光照的變化、陰影、背景、遮擋等影響時(shí),對(duì)單目視覺(jué)檢測(cè)算法的影響比較大,不能有效的保證具有一定的檢測(cè)準(zhǔn)確率。
R-CNN[1]作為利用深度學(xué)習(xí)進(jìn)行目標(biāo)檢測(cè)的先行者,提出選擇性搜索等經(jīng)典算法,提升了目標(biāo)檢測(cè)的準(zhǔn)確率,而后相繼出現(xiàn)Fast R-CNN[2]、Faster R-CNN[3]、YOLO[4]、YOLO 9000[5]、SSD[6]、YOLOv3[7]目標(biāo)檢測(cè)網(wǎng)絡(luò)的優(yōu)化。新型網(wǎng)絡(luò)結(jié)構(gòu)的提出(如AlexNet、VGG、ResNet[8]等)使得識(shí)別性能不斷提高的同時(shí),網(wǎng)絡(luò)模型的參數(shù)和大小也不斷增大,對(duì)存儲(chǔ)資源和計(jì)算資源的需求也越來(lái)越高,需要對(duì)網(wǎng)絡(luò)模型做壓縮剪枝處理,才能用于嵌入式設(shè)備。隨著嵌入式端性能的不斷優(yōu)化提高,將CNNs應(yīng)用于ADAS關(guān)鍵環(huán)節(jié)之一的行人和車(chē)輛檢測(cè),有利于進(jìn)一步推動(dòng)自動(dòng)駕駛汽車(chē)技術(shù)的發(fā)展。
1? 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
本文提出的檢測(cè)系統(tǒng)所用的網(wǎng)絡(luò)與YOLOv3(You Only Look Once v3)具有相似的結(jié)構(gòu),YOLOv3已被證明是一種先進(jìn)的通用目標(biāo)檢測(cè)深度學(xué)習(xí)方案,YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)則是在Darknet-19[9]網(wǎng)絡(luò)的基礎(chǔ)上結(jié)合殘差網(wǎng)絡(luò)ResNet組成,網(wǎng)絡(luò)使用連續(xù)的3×3和1×1卷積層,并使用batch normalization[10]來(lái)提高穩(wěn)定性,加速收斂。本文提出的檢測(cè)系統(tǒng)使用獨(dú)立的邏輯回歸做二分類(lèi),采用金字塔網(wǎng)絡(luò)結(jié)構(gòu)FPN[11]進(jìn)行多尺度預(yù)測(cè),F(xiàn)PN結(jié)構(gòu)如圖1所示。
YOLOv3預(yù)測(cè)3種不同尺度的框,每種尺度預(yù)測(cè)3個(gè)box,最后預(yù)測(cè)得到一個(gè)3-d tensor,包含bounding box信息,目標(biāo)信息以及類(lèi)別的預(yù)測(cè)信息。針對(duì)檢測(cè)系統(tǒng)的特點(diǎn),使用k-means聚類(lèi)來(lái)確定邊界框的先驗(yàn),選擇9個(gè)聚類(lèi)和3個(gè)尺度,然后在整個(gè)尺度上均勻分割聚類(lèi),產(chǎn)生anchor box的長(zhǎng)寬分別是Pw和Ph,網(wǎng)絡(luò)預(yù)測(cè)四個(gè)值:tx、ty、tw、th。如果某個(gè)單元距離圖像的左上角距離為(cx,cy),則該單元內(nèi)的bounding box的位置和形狀參數(shù)如圖2所示,bx、by、bw、和bh就是預(yù)測(cè)得到的bounding box的中心坐標(biāo)和大小。輸出的特征圖的大小是N×N×[3×(4+1+C)],其中C是類(lèi)別數(shù)。
在使用k-means聚類(lèi)自動(dòng)選擇最佳初始框的時(shí)候,如果使用標(biāo)準(zhǔn)的k均值與歐氏距離,較大的box會(huì)產(chǎn)生比較小的box更多的誤差。然而,想要增加IOU(Intersection over union)的分?jǐn)?shù),可使用以下距離公式:
d(box,centroid)=1-IOU(box,centroid)? ? (1)
根據(jù)標(biāo)準(zhǔn)的k均值和歐氏距離結(jié)果,選擇初始anchor boxes時(shí),k=5。這些措施有利于保持原速度,提高精度。
2? 壓縮剪枝
一般來(lái)說(shuō),神經(jīng)網(wǎng)絡(luò)層數(shù)越深、參數(shù)越多,所得結(jié)果越精細(xì)。但與此同時(shí),網(wǎng)絡(luò)越精細(xì),意味著所消耗的計(jì)算資源越多。對(duì)于嵌入式設(shè)備,模型的運(yùn)行速度和文件大小都極其重要。神經(jīng)網(wǎng)絡(luò)的參數(shù)眾多,但其中有些參數(shù)對(duì)最終的輸出結(jié)果貢獻(xiàn)不大而顯得冗余,剪枝顧名思義,就是要將這些冗余的參數(shù)剪掉。
為了使本文的網(wǎng)絡(luò)模型能夠在嵌入式設(shè)備上使用,需要對(duì)YOLOv3網(wǎng)絡(luò)進(jìn)行壓縮剪枝[12],去掉一些對(duì)網(wǎng)絡(luò)不重要的通道參數(shù),本文將壓縮剪枝后的網(wǎng)絡(luò)稱(chēng)為YOLOv3-CP。壓縮剪枝的步驟如圖3所示。
壓縮率計(jì)算公式為:
(2)
其中:n表示權(quán)重個(gè)數(shù),b表示存儲(chǔ)的比特位數(shù),k表示權(quán)重個(gè)數(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倍,這樣需要存儲(chǔ)的數(shù)據(jù)量大大減少,量化進(jìn)一步提高了壓縮率。然后將最后的權(quán)值和權(quán)值索引進(jìn)行哈夫曼編碼,總的壓縮率達(dá)到50%。
3? 實(shí)驗(yàn)與結(jié)果
3.1? 數(shù)據(jù)處理
本文檢測(cè)目標(biāo)是道路場(chǎng)景中常見(jiàn)的行人和車(chē)輛目標(biāo),因此,為進(jìn)一步提高檢測(cè)準(zhǔn)確率,把COCO的80類(lèi)目標(biāo)轉(zhuǎn)換為三個(gè)大類(lèi)、七個(gè)小類(lèi):person、vehicle(包含:car、bus、truck、bicycle、motorbike)和background。訓(xùn)練所需的原始圖像來(lái)源于已知開(kāi)源的大型目標(biāo)檢測(cè)數(shù)據(jù)集:PASCAL VOC2007、PASCAL VOC2012、Cityscapes、COCO2014、Bdd100k數(shù)據(jù)集,以及自主采集的實(shí)際交通視頻數(shù)據(jù)集CityImages,采用VOC2007數(shù)據(jù)集的格式及評(píng)價(jià)算法工具。首先需將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)實(shí)際場(chǎng)景中常見(jiàn)行人和車(chē)輛圖片,并統(tǒng)一按照00000*.jpg的格式命名。
Step2:將Cityscapes、COCO2014、Bdd100k數(shù)據(jù)集按照PASCAL VOC2007 數(shù)據(jù)集格式要求,制作包含person、vehicle(car、bus、truck、bicycle、motorbike)目標(biāo)的xml標(biāo)注文件。
Step3:對(duì)自主采集的實(shí)際交通視頻數(shù)據(jù)集CityImages按照Step1和Step2的要求對(duì)數(shù)據(jù)集進(jìn)行標(biāo)注。本文制作的車(chē)輛樣本數(shù)據(jù)集包括140 000張彩色三通道圖像,訓(xùn)練集和測(cè)試集按照4:1的比例劃分。
Step4:擴(kuò)展雨霧天氣場(chǎng)景下的圖片,適應(yīng)不同環(huán)境下的行人和車(chē)輛檢測(cè),提高模型的泛化能力,進(jìn)而提高檢測(cè)的準(zhǔn)確率。
3.2? 模型訓(xùn)練
實(shí)驗(yàn)中,采用流行的深度學(xué)習(xí)框架Caffe實(shí)現(xiàn)了檢測(cè)模型,根據(jù)YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)作相應(yīng)修改,為了加快網(wǎng)絡(luò)的訓(xùn)練速度,采用GPU的計(jì)算模式,訓(xùn)練樣本時(shí)采用的主要硬件配置為:處理器Intel(R) Core(TM) i7-6850K CPU @3.60GHz 六核,內(nèi)存32 GB,GPU卡,NVIDIA GeForce GTX TITAN X。
網(wǎng)絡(luò)剪枝后的訓(xùn)練步驟分為兩步:
Step1:采用在ImageNet數(shù)據(jù)集預(yù)訓(xùn)練得到的VGG16模型作為訓(xùn)練的模型,來(lái)訓(xùn)練包含person、vehicle(car、bus、truck、bicycle、motorbike)目標(biāo)的數(shù)據(jù)集,并對(duì)原參數(shù)進(jìn)行調(diào)優(yōu),初始學(xué)習(xí)率設(shè)置為0.001,沖量設(shè)置為0.9,權(quán)重衰減設(shè)置為0.000 5,batchsize大小為64,迭代次數(shù)為30萬(wàn)次,得到訓(xùn)練模型YOLOv3.caffemodel。
Step2:對(duì)Step1訓(xùn)練得到的模型YOLOv3.caffemodel進(jìn)行壓縮剪枝,將壓縮后的模型作為訓(xùn)練的原始模型,來(lái)訓(xùn)練包含person、vehicle(car、bus、truck、bicycle、motorbike)目標(biāo)的數(shù)據(jù)集,并對(duì)參數(shù)進(jìn)行調(diào)優(yōu)。在訓(xùn)練過(guò)程中,使用隨機(jī)梯度下降,初始學(xué)習(xí)率設(shè)置為0.001,沖量設(shè)置為0.9,權(quán)重衰減設(shè)置為0.000 5,batchsize大小為128,迭代次數(shù)為30萬(wàn)次。在訓(xùn)練期間,使用數(shù)據(jù)增強(qiáng)方法,通過(guò)對(duì)輸入圖片進(jìn)行隨機(jī)左右翻轉(zhuǎn),隨機(jī)扭曲圖像的飽和度、色調(diào)、對(duì)比度和亮度等,防止模型的過(guò)擬合現(xiàn)象。
在訓(xùn)練過(guò)程中,改變模型輸入大小,使模型對(duì)圖像具有魯棒性。對(duì)于每個(gè)圖像,除了執(zhí)行水平翻轉(zhuǎn)之外,還隨機(jī)調(diào)整其大小,然后每10輪將其送入網(wǎng)絡(luò)。具體來(lái)說(shuō),調(diào)整每個(gè)圖像的大小為{320,352,384,416,448,480,512,544,576,608}中的一個(gè)。因此,最小的選項(xiàng)是320×320,最大的是608×608。在將圖像輸入模型之前,從每個(gè)圖像中減去整個(gè)數(shù)據(jù)集的平均RGB值,以減少概率分布對(duì)像素值的影響。這種訓(xùn)練方法迫使模型適應(yīng)不同輸入分辨率。
在網(wǎng)絡(luò)訓(xùn)練期間,采用的YOLOv3網(wǎng)絡(luò)將Softmax多分類(lèi)損失函數(shù)換為二分類(lèi)損失函數(shù),因?yàn)楫?dāng)圖片中存在物體相互遮擋的情形時(shí),一個(gè)box可能屬于好幾個(gè)物體,這時(shí)使用二分類(lèi)的損失函數(shù)就會(huì)更有優(yōu)勢(shì)。
3.3? 模型檢測(cè)
以下為行人和車(chē)輛檢測(cè)的步驟:
Step1:在檢測(cè)階段,輸入經(jīng)過(guò)壓縮剪枝后訓(xùn)練得到的網(wǎng)絡(luò)模型YOLOv3-CP。
Step2:使用NMS算法來(lái)消除對(duì)同一行人或者車(chē)輛的重復(fù)檢測(cè)并使檢測(cè)框均勻分布。為避免誤報(bào),本文選擇0.7作為從YOLOv3網(wǎng)絡(luò)輸出的分類(lèi)結(jié)果的閾值。
Step3:處理視頻的時(shí)候,對(duì)視頻的每一幀,按照序列或者尺寸盡量與之前檢測(cè)過(guò)的行人或車(chē)輛匹配。通過(guò)與之前記錄的尺寸和速度的估算做比較,若是二者的重合度超過(guò)0.5,則認(rèn)為匹配成功。若匹配不成功,則將它們認(rèn)為是新出現(xiàn)的行人或車(chē)輛,超過(guò)十幀還沒(méi)有被識(shí)別的行人或車(chē)輛將會(huì)被忽略,得到最終結(jié)果之前,行人或車(chē)輛必須在至少十幀內(nèi)被檢測(cè)到。
Step4:根據(jù)世界坐標(biāo)和圖像坐標(biāo)的轉(zhuǎn)換關(guān)系,測(cè)量和前方行人或車(chē)輛的距離,設(shè)定閾值,檢測(cè)到小于此閾值的行人或車(chē)輛,被認(rèn)為有可能會(huì)發(fā)生碰撞,并生成報(bào)警信息,提醒駕駛員,注意前方安全。
3.4? 實(shí)驗(yàn)結(jié)果及分析
本文將訓(xùn)練和測(cè)試圖像尺寸預(yù)設(shè)定為320×320,本文訓(xùn)練自己建立的數(shù)據(jù)集(7類(lèi))得到的模型和YOLOv3算法的80類(lèi)數(shù)據(jù)集訓(xùn)練得到的模型在PASCAL VOC 2007測(cè)試集上的測(cè)試對(duì)比結(jié)果如表1所示。
對(duì)訓(xùn)練得到的網(wǎng)絡(luò)模型進(jìn)行50%的壓縮剪枝,然后進(jìn)行微調(diào)再訓(xùn)練,經(jīng)過(guò)壓縮剪枝之后,模型的參數(shù)數(shù)量降低了一半,模型的大小由580 M降低為80 M,并且基本保持了檢測(cè)精度不變,如表2所示。
為驗(yàn)證算法的有效性,采用了實(shí)際不同場(chǎng)景下的視覺(jué)圖像進(jìn)行測(cè)試。測(cè)試結(jié)果如圖4所示,圖中以粉紅線框出的目標(biāo)為檢測(cè)出的行人,以黃色線框出的目標(biāo)為檢測(cè)出的車(chē)輛。
實(shí)驗(yàn)結(jié)果表明,適度增加樣本的數(shù)量和多樣性,可以提高深度網(wǎng)絡(luò)的檢測(cè)準(zhǔn)確度,尤其對(duì)較小目標(biāo)的檢測(cè)精度增加明顯,適當(dāng)降低深度網(wǎng)絡(luò)的檢測(cè)目標(biāo)的類(lèi)別數(shù),一定程度上提高了目標(biāo)檢測(cè)的準(zhǔn)確率。
4? 結(jié)? 論
本文利用深度學(xué)習(xí)目標(biāo)檢測(cè)算法YOLOv3的框架,對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行壓縮剪枝。擴(kuò)展了訓(xùn)練所用的數(shù)據(jù)集,根據(jù)實(shí)際場(chǎng)景自主采集交通視頻,并對(duì)其進(jìn)行標(biāo)注,使得訓(xùn)練的特征更加接近實(shí)際場(chǎng)景。實(shí)驗(yàn)結(jié)果分析表明,在滿足實(shí)時(shí)性或準(zhǔn)實(shí)時(shí)性的要求下,本算法的行人檢測(cè)準(zhǔn)確率可以達(dá)到93.3%,車(chē)輛檢測(cè)準(zhǔn)確率可以達(dá)到96.0%。嵌入式視覺(jué)和深度學(xué)習(xí)技術(shù)的結(jié)合為進(jìn)一步開(kāi)發(fā)具有避撞功能的安全輔助駕駛系統(tǒng)提供了可能。
參考文獻(xiàn):
[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.
作者簡(jiǎn)介:張鳳(1991—),女,漢族,山東臨沂人,講師,碩士研究生,研究方向:圖像處理。