江子昂 李小玉 李洋 羅力 張澤世
關(guān)鍵詞:YOLOv5s;目標(biāo)檢測(cè);車(chē)輛檢測(cè)
中圖分類(lèi)號(hào): TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)03-0019-03
1 引言
截至2022年6月底,公安部已經(jīng)官方宣布我國(guó)的車(chē)輛總量已經(jīng)達(dá)到了4.06億輛,與2021年底比較,新增加了1082 萬(wàn)輛汽車(chē)(扣除報(bào)廢注銷(xiāo)量),增長(zhǎng)率為2.74%。其中,2022年6月之前新注冊(cè)登記的車(chē)輛就有1657萬(wàn)輛。這說(shuō)明了我國(guó)人民的生活質(zhì)量處于不斷上升的趨勢(shì)中,對(duì)汽車(chē)的需求量也在持續(xù)的增加,這就導(dǎo)致道路交通擁堵現(xiàn)象越來(lái)越多。日益增加的汽車(chē)數(shù)量以及相對(duì)落后的道路交通管理系統(tǒng)是造成道路交通擁堵的最主要根源[1]。車(chē)輛目標(biāo)檢測(cè)在道路交通管理系統(tǒng)中扮演著十分關(guān)鍵的角色。車(chē)輛目標(biāo)檢測(cè)屬于電腦視覺(jué)的典型任務(wù),其目的就是從圖片中找出物品的具體的位置,并檢測(cè)出物品的具體類(lèi)別是什么[2]。如果可以快速且準(zhǔn)確地檢測(cè)出車(chē)輛,就可以對(duì)車(chē)輛流動(dòng)做出最及時(shí)的管理從而避免道路交通擁堵。
最近幾年中卷積神經(jīng)網(wǎng)絡(luò)的研究獲得了迅猛的成長(zhǎng),使得基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)方法也受到了更多的重視與應(yīng)用,其中比較典型的方法包括RCNN[3],F(xiàn)ast R-CNN[4],F(xiàn)aster R-CNN[5]等一些基于候選框的二層次方法,不過(guò)由于這一類(lèi)方法在訓(xùn)練的時(shí)候需要相當(dāng)大的空間且訓(xùn)練和檢測(cè)的速度非常慢,因此這類(lèi)二層次方法并不合適用在交通管理系統(tǒng)中來(lái)檢測(cè)大批次的車(chē)輛。YOLO系列算法是當(dāng)前比較流行的另外一種類(lèi)型的算法,此算法的訓(xùn)練和檢測(cè)速度非常快,因此廣泛地被應(yīng)用于工業(yè)上面。本文使用YOLOv5算法中的YOLOv5s模型來(lái)進(jìn)行復(fù)雜情況下的車(chē)輛檢測(cè),用數(shù)據(jù)標(biāo)記軟件labelimg 對(duì)公共數(shù)據(jù)集StanfordCar Dataset[6]進(jìn)行標(biāo)記處理,得到用訓(xùn)練、測(cè)試和驗(yàn)證各150張汽車(chē)圖片組成的數(shù)據(jù)集,基于得到的數(shù)據(jù)集進(jìn)行YOLOv5s模型的訓(xùn)練測(cè)試和驗(yàn)證,最后利用互聯(lián)網(wǎng)和實(shí)地拍攝的數(shù)據(jù)材料來(lái)實(shí)際驗(yàn)證模型的性能。
2 YOLOv5 模型概述
YOLO的意思就是you only look once(你只看一次),這類(lèi)算法的創(chuàng)造性在于它把目標(biāo)檢測(cè)問(wèn)題看待成回歸問(wèn)題,直接從圖像元素開(kāi)始,計(jì)算邊框和分類(lèi)的可能性。YOLO系列算法經(jīng)過(guò)不斷的升級(jí)更新出現(xiàn)了有YOLOv1[7],YOLOv2[8],YOLOv3[9],YOLOv4[10],YOLOv5 等算法,YOLOv5算法是由Ultralytics LLC有限公司于2020年6月發(fā)布的,在其官方的源碼庫(kù)中出現(xiàn)了4各不同的版本,分別是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四個(gè)模型,其中YOLOv5s模型是所有4個(gè)模型中深度最少的,特征圖的寬度也最小的一個(gè)模型,而其他的3種模型都是在YOLOv5s模型的基礎(chǔ)上不斷深化,并進(jìn)一步加寬得到的。YOLOv5s 一般由輸入端、Backbone、Neck和Prediction四個(gè)具有特殊功能的部分組成。圖1為YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)圖。
輸入端口YOLOv5s,主要應(yīng)用了Mosaic圖像增強(qiáng)的技術(shù)、自適應(yīng)錨框方法,以及自適應(yīng)圖像縮放方法。Mosaic數(shù)據(jù)增強(qiáng)是YOLOv5團(tuán)隊(duì)成員提出來(lái)的,這種方法可以豐富數(shù)據(jù)集,可以增加很多的小目標(biāo),增強(qiáng)網(wǎng)絡(luò)的穩(wěn)健性,在小目標(biāo)的檢測(cè)過(guò)程中效果還是很可觀的。另外在YOLOv3、YOLOv4算法中,不同的數(shù)據(jù)集在進(jìn)行訓(xùn)練的時(shí)候,初始錨框值都是采用單獨(dú)的程序計(jì)算得到的,但官方給出的YOLOv5算法的源碼中增加了自適應(yīng)錨框方法和自適應(yīng)圖像縮放方法,使得在每一次訓(xùn)練過(guò)程中,此算法都會(huì)自適應(yīng)的計(jì)算不同數(shù)據(jù)集中的最佳錨框值,并在原始圖片中自適應(yīng)的使用最小的黑邊,提升了模型推理能力。
Backbone主要包括Focus結(jié)構(gòu)和CSP結(jié)構(gòu)。如圖2所示,F(xiàn)ocus結(jié)構(gòu)的主要核心就是切片功能[11],在此模型中原始的608×608的3通道圖像輸入到Focus結(jié)構(gòu)中,使用切片功能,先變成304×304具有12通道的特征信息圖,再經(jīng)過(guò)一次由32個(gè)卷積核組成的卷積操作,最終變成304×304具有32通道的特征信息圖。此算法中還設(shè)計(jì)了兩種CSP結(jié)構(gòu),CSP1_X結(jié)構(gòu)在Back?bone主干網(wǎng)絡(luò)被采用,而另一種CSP2_X結(jié)構(gòu)則使用于Neck部分中。CSP結(jié)構(gòu)首先會(huì)將基礎(chǔ)層的特征信息映射劃分為兩個(gè)部分,最后通過(guò)跨階段層次結(jié)構(gòu)將它們合并,這種結(jié)構(gòu)不但可以增強(qiáng)網(wǎng)絡(luò)的學(xué)習(xí)能力還可以降低計(jì)算瓶頸,使模型變得輕量的同時(shí)識(shí)別準(zhǔn)確性不會(huì)改變。
Neck部分主要使用了FPN+PAN結(jié)構(gòu),F(xiàn)PN是將上層的特性信息特點(diǎn)利用向上采樣的方法傳遞融合,傳達(dá)強(qiáng)語(yǔ)義特征并得以提供進(jìn)行預(yù)測(cè)的特征圖,PAN則從底向上傳達(dá)強(qiáng)定位特性信息,這樣FPN+PAN結(jié)構(gòu)就可以從不同的主干層對(duì)不同的檢測(cè)層進(jìn)行特征聚合。YO?LOv5在Neck這一部分并沒(méi)有按部就班地使用YOLOv4 中的普通卷積操作,而是把CSP2_X結(jié)構(gòu)加入到了Neck 部分,從而提高了對(duì)網(wǎng)絡(luò)特殊信息的整合能力。
Prediction部分YOLOv5也使用了與YOLOv4相似的損失函數(shù),采用了CIOU_Loss 作為目標(biāo)Boundingbox的損失函數(shù)。CIOU_Loss可使預(yù)測(cè)框回歸的速率和準(zhǔn)確性都更高一些。CIOU_Loss為公式(1) ,其中v 是度量長(zhǎng)寬比一致性的參數(shù),應(yīng)該確定為公式(2):
3 實(shí)驗(yàn)與結(jié)果分析
本節(jié)首先會(huì)介紹實(shí)驗(yàn)所用到的數(shù)據(jù)集及其處理的方法,然后是實(shí)驗(yàn)的運(yùn)行環(huán)境及依賴庫(kù)的版本,再然后是實(shí)驗(yàn)的過(guò)程,最后是重點(diǎn)分析YOLOv5s模型的性能和實(shí)際的檢測(cè)效果。
3.1 數(shù)據(jù)集介紹和處理
該實(shí)驗(yàn)使用的是公共數(shù)據(jù)集Stanford Car Dataset。這個(gè)數(shù)據(jù)集是由stanford所建立,是一個(gè)汽車(chē)資料集合,數(shù)據(jù)集中包括了16185張汽車(chē)圖像,汽車(chē)的種類(lèi)也非常的豐富,足足有196種汽車(chē)?;旧犀F(xiàn)實(shí)生活中所有的車(chē)輛的圖像在數(shù)據(jù)集中都可以找到。數(shù)據(jù)集被分為有8144個(gè)訓(xùn)練圖片的訓(xùn)練集和8041個(gè)試驗(yàn)圖片的測(cè)試集,而其中的各個(gè)車(chē)輛分類(lèi)都已大致分成了50-50個(gè)分割。類(lèi)通常指品牌,型號(hào),生產(chǎn)日期等級(jí)別,2012的特斯拉Model S或者是2012 的BMW M3 coupe。
在處理數(shù)據(jù)集階段使用labelimg對(duì)數(shù)據(jù)集進(jìn)行標(biāo)記,labelimg是一款給圖形標(biāo)注類(lèi)別的工具,它是基于python開(kāi)發(fā)的,圖形界面則采用QT開(kāi)發(fā),用此工具可以使標(biāo)記的圖片保存成各種網(wǎng)絡(luò)模型訓(xùn)練時(shí)所需要的文件格式。使用labelimg對(duì)數(shù)據(jù)集中的圖像進(jìn)行處理,指明識(shí)別對(duì)象為car類(lèi)別,保存文件格式調(diào)整為yolo_txt格式,如圖3所示,經(jīng)過(guò)labelimg標(biāo)記處理后得到數(shù)據(jù)集的帶標(biāo)簽的yolo_txt文件,只有得到了帶標(biāo)簽的yolo_txt文件才可以訓(xùn)練模型。分別對(duì)訓(xùn)練集、測(cè)試集和驗(yàn)證集各150圖片進(jìn)行標(biāo)記操作,得到最終的數(shù)據(jù)集。用這些數(shù)據(jù)集來(lái)進(jìn)行模型的訓(xùn)練。
3.2 實(shí)驗(yàn)環(huán)境
YOLOv5是利用Python所編寫(xiě)所以運(yùn)行環(huán)境中需要安裝Python,訓(xùn)練YOLOv5s模型所需要的依賴庫(kù)之間的版本對(duì)應(yīng)是非常嚴(yán)格的,版本之間的不對(duì)應(yīng)會(huì)導(dǎo)致模型無(wú)法訓(xùn)練的結(jié)果,此實(shí)驗(yàn)是嚴(yán)格按照表1所示的版本進(jìn)行模型訓(xùn)練的。其中IDE是集成的開(kāi)發(fā)環(huán)境,是提供程序開(kāi)發(fā)環(huán)境的工具,包含了代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具;依賴庫(kù)numpy是一種數(shù)字計(jì)算擴(kuò)展,對(duì)于大型矩陣的運(yùn)算是非常方便的;依賴庫(kù)pandas是在數(shù)據(jù)分析階段所使用的庫(kù);依賴庫(kù)pillow是圖像處理庫(kù),具有對(duì)圖像進(jìn)行裁剪、調(diào)整大小和顏色處理等功能;依賴庫(kù)scipy是用來(lái)進(jìn)行計(jì)算大多數(shù)函數(shù)運(yùn)算的庫(kù);依賴庫(kù)Pytorch是運(yùn)行環(huán)境中最重要的庫(kù),它是由Facebook(臉書(shū))的人工智能研究院開(kāi)發(fā)的,是一個(gè)用Python開(kāi)發(fā)的可續(xù)計(jì)算包,主要有兩個(gè)功能:1) 具有強(qiáng)大的張量計(jì)算。2) 包含自動(dòng)求導(dǎo)系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)。
3.3 實(shí)驗(yàn)結(jié)果
根據(jù)搭建的環(huán)境和標(biāo)注處理好的數(shù)據(jù)集來(lái)訓(xùn)練模型,訓(xùn)練weights(權(quán)重)設(shè)置為YOLOv5s.pt,batchsize(每批次樣本的數(shù)量)調(diào)整為4,增加模型的泛化力,經(jīng)過(guò)100次迭代最終得到訓(xùn)練好的模型文件YO?LOv5s.pt,模型性能如表2所示,其中Precision是查準(zhǔn)率的意思,表達(dá)式為公式(3) ,其中TP為正樣本正確分類(lèi)的個(gè)數(shù),F(xiàn)N為正樣本未分類(lèi)的個(gè)數(shù),訓(xùn)練曲線圖如圖4所示,圖中Precision的數(shù)值趨于平穩(wěn)緩和并數(shù)值上接近1,說(shuō)明模型的準(zhǔn)確度已經(jīng)很高了;Recall是查全率的意思,表達(dá)式為公式(4) ,其中FP為沒(méi)有正確分類(lèi)的個(gè)數(shù),訓(xùn)練曲線圖如圖5所示,圖中Recall的數(shù)值最后維持在0.8 左右,說(shuō)明模型的失誤檢測(cè)率低;mAp@0.5和mAp@0.5:0.95:mAp是用Precision和Re?call作為兩坐標(biāo)軸作圖所圍成的范圍,越靠近1,模型精度就越高[12]。根據(jù)以上數(shù)據(jù)可以得出實(shí)驗(yàn)訓(xùn)練出來(lái)的模型在車(chē)輛識(shí)別的正確率是非常高的。
3.4 實(shí)際檢測(cè)
為了實(shí)際檢測(cè)訓(xùn)練好的YOLOv5s.pt模型的識(shí)別準(zhǔn)確度,使用訓(xùn)練好的YOLOv5s.pt模型檢測(cè)在互聯(lián)網(wǎng)上找到的一張帶有汽車(chē)的圖片所需要的時(shí)間為11.1ms,結(jié)果如6所示,為了具體的驗(yàn)證模型的識(shí)別準(zhǔn)確性,采用實(shí)地拍攝圖片和視頻用YOLOv5s.pt模型進(jìn)行檢測(cè),結(jié)果如圖7所示。
根據(jù)圖6和圖7可以看出,無(wú)論是互聯(lián)網(wǎng)上的圖片還是實(shí)地拍攝的圖片模型,都準(zhǔn)確地檢測(cè)出圖片中的車(chē)輛可以準(zhǔn)確地把圖片中的車(chē)輛用紅色的方框標(biāo)記出來(lái),并沒(méi)有出現(xiàn)錯(cuò)誤,準(zhǔn)確度都在90%左右,這說(shuō)明模型已經(jīng)訓(xùn)練得比較好了。
4 結(jié)束語(yǔ)
本文把YOLOv5算法中的YOLOv5s模型運(yùn)用到車(chē)輛檢測(cè)中,使用Stanford Car Dataset數(shù)據(jù)集訓(xùn)練、測(cè)試和驗(yàn)證模型,得到Y(jié)OLOv5s.pt模型文件,使用訓(xùn)練好的模型文件進(jìn)行檢測(cè),結(jié)果表明識(shí)別的準(zhǔn)確率非常高,可以對(duì)車(chē)輛進(jìn)行高準(zhǔn)確度的檢測(cè),實(shí)現(xiàn)了城市道路車(chē)輛的有效檢測(cè),這對(duì)城市道路管理有著非常大的意義,可以提高城市道路車(chē)輛管理的效率,有效地避免道路交通擁堵。