本發(fā)明屬于新型人工智能,尤其涉及一種基于yolov5的機(jī)動車模型的優(yōu)化方法。
背景技術(shù):
1、現(xiàn)有的技術(shù)通常采用yolov5s模型,通過tensorrt轉(zhuǎn)換成fp16精度模型進(jìn)行部署。這種部署不會對模型精度產(chǎn)生影響,但需要較大的資源消耗,資源緊張的環(huán)境下模型的檢測速率無法滿足需求,如果采用int8精度的模型,模型速率達(dá)到要求,但模型有較大的損耗,模型的準(zhǔn)確率會下降較多。通過量化技術(shù)可以提升準(zhǔn)確率,但是操作復(fù)雜且費時。調(diào)整后的模型存在場景限定的問題,在同一類型的場景下,模型檢測效果較好。如果更換場景后,仍需要重新優(yōu)化。在邊緣計算和移動設(shè)備場景下,存儲空間和算力都有限的情況下,對模型的檢測速率和準(zhǔn)確率都有要求。上述的方法在實際生產(chǎn)場景下都不太滿足條件。
2、中國專利文獻(xiàn)cn?116721373?a公開一種基于mobilenetv3的輕量化電動車入梯行為檢測方法及設(shè)備,方法具體為:加載最優(yōu)模型對采集到的電梯內(nèi)圖片數(shù)據(jù)進(jìn)行預(yù)測;所述最優(yōu)模型判斷并獲得各檢測目標(biāo)的類別、置信度和對應(yīng)的目標(biāo)框坐標(biāo)信息,進(jìn)而得到是否有電動車入梯行為;所述最優(yōu)模型以yolov5網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò),使用mobilenetv3代替cpsdarknet作為主干網(wǎng)絡(luò),并使用更輕量級的ulsam注意力模塊替換原有的se注意力模塊,生成yolo-mobilenet網(wǎng)絡(luò),對yolo-mobilenet網(wǎng)絡(luò)進(jìn)行訓(xùn)練得到最優(yōu)模型;較初始的yolov5網(wǎng)絡(luò),參數(shù)數(shù)量下降了34.8%,模型復(fù)雜度下降了約32%。該方法使用了yolov5作為基礎(chǔ)網(wǎng)絡(luò),使用mobilenetv3代替cpsdarknet作為主干網(wǎng)絡(luò),并使用輕量級的ulsam注意力模塊替換原有的se注意力模塊,生成yolo-mobilenet網(wǎng)絡(luò),對yolo-mobilenet網(wǎng)絡(luò)進(jìn)行訓(xùn)練得到最優(yōu)模型。如圖11所示,對于該方法的步驟中主要的是使用mobilenetv3代替yolov5的cpsdarknet作為主干網(wǎng)絡(luò),并使用更輕量級的ulsam注意力模塊替換原有的se注意力模塊,生成yolo-mobilenet網(wǎng)絡(luò),對yolo-mobilenet網(wǎng)絡(luò)進(jìn)行訓(xùn)練得到最優(yōu)模型,在檢測精度基本不變的情況下,極大的降低了網(wǎng)絡(luò)的模型大小和參數(shù)量,為真實場景下的電動車入梯行為檢測提供了良好的解決方案。
3、現(xiàn)有技術(shù)采用tensorrt將onnx模型直接轉(zhuǎn)成int8精度的模型進(jìn)行部署,提高推理性能,減少存儲需求,可以應(yīng)用在邊緣檢測,轉(zhuǎn)換int8所帶來的精度損失導(dǎo)致模型的準(zhǔn)確率下降,可以通過校準(zhǔn)法量化技術(shù)進(jìn)行彌補(bǔ)。但是校準(zhǔn)法量化技術(shù)受限與場景,如果場景發(fā)生變化,模型準(zhǔn)確率會有較大的波動,如果不做處理會產(chǎn)生漏檢和誤檢的問題,因此需要針對不同的場景重新進(jìn)行量化。校準(zhǔn)法量化技術(shù)具備一定的復(fù)雜性,針對復(fù)雜多變的場景的算法部署,校準(zhǔn)法量化進(jìn)行int8精度轉(zhuǎn)換無法滿足要求。
4、以上的方法可以在固定場景下檢測機(jī)動車,但是如果復(fù)雜多變的場景下,算法的部署難度會非常大,因此在實際的生產(chǎn)中,此方法難以快速部署,且對部署人員專業(yè)技術(shù)要求非常高,不利用大規(guī)模部署。
5、因此,針對int8精度降低太多,fp16模型速率跟不上的問題,有必要提出一種于yolov5的機(jī)動車模型的優(yōu)化方法,是一種繞開模型轉(zhuǎn)換int8精度后校準(zhǔn)法量化提升精度的方法。
技術(shù)實現(xiàn)思路
1、本發(fā)明要解決的技術(shù)問題是,提供一種基于yolov5的機(jī)動車模型的優(yōu)化方法,對模型進(jìn)行優(yōu)化,提高模型的泛化能力,可以實現(xiàn)快速的邊端部署模型,降低部署的難度和耗時。
2、為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:該基于yolov5的機(jī)動車模型的優(yōu)化方法,具體包括以下步驟:
3、s1準(zhǔn)備數(shù)據(jù)集:采集包含各種機(jī)動車的圖像數(shù)據(jù),生成機(jī)動車輛數(shù)據(jù)集,并將數(shù)據(jù)集劃分為訓(xùn)練集、測試集和驗證集;
4、s2模型訓(xùn)練:在yolov5網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上采用mobilenetv3替代主干網(wǎng)絡(luò),輸入數(shù)據(jù)集進(jìn)行模型訓(xùn)練,得到算法模型權(quán)重;
5、s3模型稀疏化:對模型進(jìn)行稀疏化訓(xùn)練;
6、s4模型剪枝處理:對稀疏化后的模型進(jìn)行剪枝,把數(shù)據(jù)進(jìn)行權(quán)重剪枝;
7、s5評估模型精度:對剪枝后的模型進(jìn)行性能測試,評估模型的精度和速度。
8、采用上述技術(shù)方案,使用了mobilenetv3-s替換了yolov5原有的主干網(wǎng)絡(luò),同時對模型進(jìn)行剪枝操作,顯著減少模型的參數(shù)量和計算需求,提升推理速度和部署效率。利用mobilenetv3-s替換yolov5的主干網(wǎng)絡(luò),通過模型剪枝進(jìn)行模型縮小,訓(xùn)練機(jī)動車檢測模型,對機(jī)動車輛進(jìn)行識別,改進(jìn)后的yolov5網(wǎng)絡(luò)降低了模型的內(nèi)存占用、提高了計算性能,進(jìn)一步提高了模型的檢測速度和識別的精確度,降低了算力要求,能夠滿足更加豐富的場景,符合邊緣計算和移動設(shè)備場景下部署檢測。同時在訓(xùn)練階段,提升目標(biāo)檢測的性能和泛化能力。使用mobilenetv3的優(yōu)點是在可以通過高效的特征提取能力和良好的參數(shù)效率,顯著提升目標(biāo)檢測的準(zhǔn)確性和效率。模型轉(zhuǎn)換成fp16進(jìn)行部署,不會對算法的精度產(chǎn)生影響,且算法的推理速度能滿足邊緣檢測設(shè)備的需求,避免轉(zhuǎn)換int8模型后校準(zhǔn)法量化技術(shù)帶來的技術(shù)復(fù)雜性的問題,對模型進(jìn)行優(yōu)化,提高模型的泛化能力,可以快速部署到各種復(fù)雜的場景下,極大降低模型的部署難度。
9、本發(fā)明基礎(chǔ)的公知技術(shù)內(nèi)容:
10、yolov5機(jī)動車輛檢測算法:
11、yolov5技術(shù)特點,yolov5是一種單階段目標(biāo)檢測算法,該算法在yolov4的基礎(chǔ)上添加了一些新的改進(jìn)思路,使得其速度與精度都得到了極大的性能提升,具體包括:輸入端的mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計算、自適應(yīng)圖片縮放操作;基準(zhǔn)端的focus結(jié)構(gòu)與csp結(jié)構(gòu);neck端的spp與fpn+pan結(jié)構(gòu);輸出端的損失函數(shù)giou_loss。
12、mosaic數(shù)據(jù)增強(qiáng)-yolov5中在訓(xùn)練模型階段仍然使用了mosaic數(shù)據(jù)增強(qiáng)方法,該算法是在cutmix數(shù)據(jù)增強(qiáng)方法的基礎(chǔ)上改進(jìn)而來的。cutmix僅僅利用了兩張圖片進(jìn)行拼接,而mosaic數(shù)據(jù)增強(qiáng)方法則采用了4張圖片,并且按照隨機(jī)縮放、隨機(jī)裁剪和隨機(jī)排布的方式進(jìn)行拼接而成,這種增強(qiáng)方法可以將幾張圖片組合成一張,這樣不僅可以豐富數(shù)據(jù)集的同時極大的提升網(wǎng)絡(luò)的訓(xùn)練速度,而且可以降低模型的內(nèi)存需求。
13、自適應(yīng)錨框計算-在yolo系列算法中,針對不同的數(shù)據(jù)集,都需要設(shè)定特定長寬的錨點框。在網(wǎng)絡(luò)訓(xùn)練階段,模型在初始錨點框的基礎(chǔ)上輸出對應(yīng)的預(yù)測框,計算其與gt框之間的差距,并執(zhí)行反向更新操作,從而更新整個網(wǎng)絡(luò)的參數(shù),因此設(shè)定初始錨點框也是比較關(guān)鍵的一環(huán)。在yolov3和yolov4檢測算法中,訓(xùn)練不同的數(shù)據(jù)集時,都是通過單獨的程序運(yùn)行來獲得初始錨點框。
14、自適應(yīng)圖片縮放-針對不同的目標(biāo)檢測算法而言,我們通常需要執(zhí)行圖片縮放操作,即將原始的輸入圖片縮放到一個固定的尺寸,再將其送入檢測網(wǎng)絡(luò)中。yolo系列算法中常用的尺寸包括416*416,608*608等尺寸。
15、focus結(jié)構(gòu)-該結(jié)構(gòu)的主要思想是通過切片操作來對輸入圖片進(jìn)行裁剪。如下圖所示,原始輸入圖片大小為608*608*3,經(jīng)過切片與拼接操作之后輸出一個304*304*12的特征映射;接著經(jīng)過一個通道個數(shù)為32的卷積層(該通道個數(shù)僅僅針對的是yolov5s結(jié)構(gòu),其它結(jié)構(gòu)會有相應(yīng)的變化),輸出一個304*304*32大小的特征映射。
16、csp結(jié)構(gòu):yolov4網(wǎng)絡(luò)結(jié)構(gòu)中,借鑒了cspnet的設(shè)計思路(通過整合網(wǎng)絡(luò)階段開始和結(jié)束的特征圖來尊重梯度的可變性),yolov4僅僅在主干網(wǎng)絡(luò)中設(shè)計了csp結(jié)構(gòu)。而yolov5中設(shè)計了兩種csp結(jié)構(gòu),以yolov5s網(wǎng)絡(luò)為例,csp1_x結(jié)構(gòu)應(yīng)用于backbone主干網(wǎng)絡(luò)中,另一種csp2_x結(jié)構(gòu)則應(yīng)用于neck網(wǎng)絡(luò)中。
17、iou?loss-所謂的iou?loss,即預(yù)測框與gt框之間的交集/預(yù)測框與gt框之間的并集。
18、giou_loss中增加了相交尺度的衡量方式,緩解了單純iou_loss時預(yù)測框大小相同時iou也問題以及預(yù)測框與真實框不相交時iou=0,iou_loss不能優(yōu)化兩個框不相交的情況。
19、優(yōu)選地,所述步驟s1中還包括對生成的機(jī)動車輛數(shù)據(jù)集進(jìn)行增強(qiáng)處理,并添加隨機(jī)噪聲,生成新的數(shù)據(jù)集樣本后并進(jìn)行標(biāo)注,再進(jìn)行數(shù)據(jù)集劃分。
20、優(yōu)選地,所述步驟s2的具體步驟為:
21、s21:構(gòu)建通道可分離卷積,采用第一個conv2d層將輸入特征的通道數(shù)進(jìn)行擴(kuò)展;應(yīng)用批歸一化(batch?normalization)來加速訓(xùn)練過程;采用第二個conv2d層通過將輸入特征分成多組,并對每組獨立進(jìn)行卷積操作,實現(xiàn)了通道可分離卷積;最后對輸出進(jìn)行批歸一化和非線性激活;
22、s22:構(gòu)建注意力機(jī)制模塊(se),對輸入特征圖進(jìn)行全局平均池化,將每個通道的空間維度壓縮為1x1的卷積核,從而得到一個通道描述符;采用1x1的卷積核將通道數(shù)進(jìn)行壓縮,再對壓縮后的特征圖進(jìn)行批量歸一化;再應(yīng)用relu激活函數(shù),增加非線性;最后再采用1x1的卷積核將通道數(shù)進(jìn)行恢復(fù),并通過學(xué)習(xí)到的權(quán)重為每個通道生成一個權(quán)重;并移除之前的瓶頸層連接;
23、s23:使用訓(xùn)練集數(shù)據(jù)訓(xùn)練改進(jìn)后的yolov5模型;并進(jìn)行測試,模型訓(xùn)練完成后,再使用驗證集檢測模型的準(zhǔn)確率和推理速度。
24、優(yōu)選地,所述步驟s3中采用添加l1正則來約束bn層系數(shù),使得系數(shù)稀疏化;l1范式的公式為:
25、l=∑(x,y)l(f(x,w),y)+λ∑γ∈γg(γ);
26、其中,(x,y)表示訓(xùn)練的輸入和目標(biāo),w表示訓(xùn)練的權(quán)重,是原始的損失函數(shù),中的g(s)=|s|,λ是正則系數(shù)。
27、優(yōu)選地,所述步驟s3中稀疏化訓(xùn)練的具體步驟為:
28、s31修改損失函數(shù):在原始損失函數(shù)的基礎(chǔ)上,添加對bn層γ系數(shù)的l1正則化項;l1正則化項會鼓勵模型參數(shù)向0靠攏,從而實現(xiàn)稀疏化;正則化系數(shù)λ,從0開始,逐漸增大;
29、s32訓(xùn)練模型:使用修改后的損失函數(shù)訓(xùn)練模型,在訓(xùn)練過程中,隨著epoch的增加,越來越多的γ系數(shù)會趨近于0;
30、s33模型驗證:評估模型在驗證集上的準(zhǔn)確率,通過交叉驗證(如k折交叉驗證)來評估不同λ值下模型的性能。通過交叉驗證(如k折交叉驗證)來評估不同λ值下模型的性能,選擇使驗證集上誤差最小的λ值作為最佳參數(shù);這通常意味著模型在保持一定復(fù)雜度的同時,能夠較好地泛化到未見過的數(shù)據(jù)上。
31、優(yōu)選地,所述步驟s33中通過交叉驗證(如k折交叉驗證)來評估不同λ值下模型的性能具體步驟為:通過將數(shù)據(jù)集分割成k個大小相等的子集(如果可能的話),然后輪流使用其中的k-1個子集作為訓(xùn)練集,剩下的一個子集作為測試集,重復(fù)k次這個過程,并計算每次的模型性能指標(biāo)(如準(zhǔn)確率、召回率等),最后取模型性能指標(biāo)的平均值作為模型性能的估計。
32、優(yōu)選地,所述步驟s4的具體步驟為:
33、s41:根據(jù)稀疏化后的模型的權(quán)重大小進(jìn)行模型剪枝,設(shè)定權(quán)重閾值,將模型中權(quán)重小于模型所述模型閾值的權(quán)重剪除,移除權(quán)重文件小于權(quán)重閾值的通道;
34、s42:剪枝后模型的性能通常會有所下降,對剪枝后的模型進(jìn)行微調(diào)。
35、mobilenet?v3網(wǎng)絡(luò)和模型剪枝,mobilenet是一系列卷積神經(jīng)網(wǎng)絡(luò)(cnn),在圖像分類任務(wù)上取得了最先進(jìn)的性能,同時保持了計算效率。mobilenet?v3是mobilenet系列的進(jìn)一步發(fā)展,在前兩個版本的基礎(chǔ)上,加入神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(nas)和h-swish激活函數(shù),并引入se通道注意力機(jī)制,性能和速度都表現(xiàn)優(yōu)異。模型剪枝(model?pruning)的主要作用是減少深度學(xué)習(xí)模型的參數(shù)量和計算量,提高推理速度,減少內(nèi)存占用,同時盡量保持模型的性能。剪枝主要分為以下幾種類型:一種權(quán)重剪枝(weight?pruning):剪掉不重要的權(quán)重,使得模型的權(quán)重矩陣變得稀疏。另一種是結(jié)構(gòu)剪枝(structured?pruning):剪掉整個濾波器、通道或?qū)?,使得模型的結(jié)構(gòu)變得更加簡潔。本發(fā)明采用權(quán)重剪枝,剪掉不重要的權(quán)重,使得模型的權(quán)重矩陣變得稀疏。
36、優(yōu)選地,所述步驟s42的具體步驟為:
37、s421:設(shè)置模型的學(xué)習(xí)率低于原有的模型學(xué)習(xí)率;
38、s422:使用準(zhǔn)備好的數(shù)據(jù)集和微調(diào)參數(shù)重新訓(xùn)練模型;
39、s423:在訓(xùn)練過程中,監(jiān)控模型的損失值和性能指標(biāo);根據(jù)模型的收斂情況和性能表現(xiàn)來確定訓(xùn)練輪次。
40、優(yōu)選地,在所述步驟s5中在多個測試集上評估剪枝后的模型和原始模型的性能,包括精度指標(biāo)和速度指標(biāo)。
41、優(yōu)選地,所述步驟s1中使用labelimg工具對數(shù)據(jù)集中的樣本圖像進(jìn)行標(biāo)注,標(biāo)注格式與yolo格式保持一致;并把數(shù)據(jù)集按8:1:1的比例劃分成訓(xùn)練集和驗證集和測試集。
42、與現(xiàn)有技術(shù)相比,本發(fā)明具有的有益效果為:
43、(1)解決了模型量化int8帶來的工作量,無需針對場景進(jìn)行量化優(yōu)化,降低模型部署的復(fù)雜度;
44、(2)使用moblienetv3替換yolov5的主干網(wǎng)絡(luò),模型剪枝優(yōu)化,極大減少模型的參數(shù)量,使得模型在保持較高準(zhǔn)確率的同時,顯著減少了加載模型的資源消耗;可以支持各種移動設(shè)備部署;
45、(3)由于參數(shù)量的減少計算量也逐步減少,相比較原來的模型,使用mobilenetv3作為主干網(wǎng)絡(luò)的yolov5模型在推理時速度更快;
46、(4)模型本身屬于輕量化,部署時通過tensorrt轉(zhuǎn)換成fp16精度即可滿足要求;fp16幾乎不會對準(zhǔn)確率產(chǎn)生影響,無需和int8精度模型一樣進(jìn)行量化優(yōu)化。顯著降低模型部署難度。