摘要:針對目標(biāo)檢測算法部署在邊緣設(shè)備的輕量化需求,提出一種基于改進(jìn)YOLOv10的輕量化目標(biāo)檢測算法(CMD-YOLO算法)。該算法利用跨尺度特征融合模塊對YOLOv10算法的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),減少了算法模型的參數(shù)量與計(jì)算量;采用基于Mamba的線性注意力機(jī)制改進(jìn)的部分自注意力模塊替換傳統(tǒng)的部分自注意力模塊,進(jìn)一步降低了算法模型的參數(shù)量;利用空間深度轉(zhuǎn)換卷積模塊替換部分傳統(tǒng)卷積模塊,增強(qiáng)了算法模型對下采樣細(xì)節(jié)信息的提取能力;利用動(dòng)態(tài)上采樣器DySample替換傳統(tǒng)的上采樣模塊,在保持上采樣精度的同時(shí),降低了算法模型的計(jì)算延遲。實(shí)驗(yàn)結(jié)果表明,CMD-YOLO算法與YOLOv10-n算法相比,在檢測精度略微提升的同時(shí),算法模型參數(shù)量降低了30.5%,計(jì)算量下降了19%,權(quán)重文件縮小了29.3%,計(jì)算延遲減少了8.8%,能夠滿足目標(biāo)檢測算法部署在邊緣設(shè)備中的輕量化需求。
關(guān)鍵詞:目標(biāo)檢測算法;YOLOv10算法;跨尺度特征融合模塊;Mamba線性注意力機(jī)制;空間深度轉(zhuǎn)換卷積模塊;動(dòng)態(tài)上采樣器
中圖分類號:TP391.41 """"""""""文獻(xiàn)標(biāo)志碼:A """""""""文章編號:1674-2605(2025)01-0004-07
DOI:10.3969/j.issn.1674-2605.2025.01.004"""""""""""""""""""""開放獲取
Lightweight Object Detection Algorithm Based on Improved YOLOv10
LIU Yin GONG Changyou XU Guodong
(1.Southwest Forestry University, Kunming 650224, China
2.Bingtuan Xingxin Vocational and Technical College, Tiemenguan 841007, China)
Abstract:"Aiming at the lightweight requirements of deploying object detection algorithms on edge devices, a lightweight object detection algorithm based on improved YOLOv10 (CMD-YOLO algorithm) is proposed. This algorithm utilizes a cross-scale feature fusion module to improve the network structure of YOLOv10 algorithm, reducing the parameter and computational complexity of the algorithm model; Adopting a Mamba based linear attention mechanism to improve the partial self attention module and replace the traditional partial self attention module, further reducing the parameter count of the algorithm model; Replacing some traditional convolution modules with spatial depth conversion convolution modules enhances the algorithm model's ability to extract downsampling detail information; By using the dynamic UpSampler DySample to replace the traditional upsampling module, the computational delay of the algorithm model is reduced while maintaining upsampling accuracy. The experimental results show that compared with the YOLOv10-n algorithm, the CMD-YOLO algorithm has slightly improved detection accuracy, reduced model parameters by 30.5%, decreased computational complexity by 19%, reduced weight files by 29.3%, and reduced computational latency by 8.8%, which can meet the lightweight requirements of object detection algorithm deployment in edge devices.
Keywords: object detection algorithm; YOLOv10 algorithm; cross-scale feature fusion module; Mamba-like"linear attention mechanism; space to depth Conv"module; dynamic UpSampler
0 引言
隨著人工智能技術(shù)的快速發(fā)展,基于深度學(xué)習(xí)的
目標(biāo)檢測算法被廣泛應(yīng)用于自動(dòng)駕駛、機(jī)器人和無人機(jī)等場景。目前,基于深度學(xué)習(xí)的目標(biāo)檢測算法主要
分為一階段和兩階段兩類。兩階段目標(biāo)檢測算法(如R-CNN算法)雖然檢測精度較高[1],但模型體積較大、檢測時(shí)間較長,難以部署在性能受限的嵌入式設(shè)備中。而一階段目標(biāo)檢測算法(如YOLO系列算法)不僅更輕量,且實(shí)時(shí)性更高、檢測速度更快,檢測精度也在迭代提升,適合部署在嵌入式設(shè)備中。
2016年,YOLO算法首次被提出[2],其通過直接回歸目標(biāo)框?yàn)閷?shí)時(shí)目標(biāo)檢測奠定了基礎(chǔ)。2020年,Ultralytics公司推出了YOLOv5算法[3],其采用C3特征提取結(jié)構(gòu),實(shí)現(xiàn)了輕量化性能。YOLOv5算法分為S、M、L和X四個(gè)版本,可以根據(jù)項(xiàng)目需求選擇合適的版本,以實(shí)現(xiàn)檢測精度與速度的平衡。然而,YOLOv5算法在基于錨框生成預(yù)測框時(shí),會產(chǎn)生大量冗余框,增加了計(jì)算負(fù)擔(dān)。2023年,Ultralytics公司又推出了YOLOv8算法[4],其利用C2f獲得更多的梯度流信息,并采用無錨方法加快了檢測速度,減少對計(jì)算能力的需求。然而,YOLOv8算法需要后處理操作與非極大值抑制依賴,限制了檢測速度的提升。2024年5月,WANG等[5]提出了YOLOv10算法,通過一致的雙重分配策略,解決了對后處理操作的需求,消除了非極大值抑制的依賴,實(shí)現(xiàn)了真正的端到端檢測,減少了算法檢測時(shí)間,達(dá)到了迄今為止最快的檢測速度。YOLOv10算法發(fā)布時(shí)間較短,目前針對該算法的改進(jìn)研究較少,尤其是輕量化改進(jìn)的相關(guān)研究更少。
本文提出一種基于改進(jìn)YOLOv10的輕量化目標(biāo)檢測算法,在提升檢測精度的同時(shí),減少算法的參數(shù)量與計(jì)算量,以滿足部署在嵌入式設(shè)備的輕量化需求。
1 YOLOv10算法
通過調(diào)整網(wǎng)絡(luò)的寬度和深度,YOLOv10算法可得到網(wǎng)絡(luò)結(jié)構(gòu)相同但規(guī)模不同的6個(gè)版本[6],規(guī)模由大到小分別為YOLOv10-x、YOLOv10-l、YOLOv10--b、YOLOv10-m、YOLOv10-s和YOLOv10-n。YOLOv10算法主要由主干網(wǎng)絡(luò)(Backbone)、頸部網(wǎng)絡(luò)(Neck)和頭部網(wǎng)絡(luò)(Head)3部分組成[7],網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
在YOLOv10算法網(wǎng)絡(luò)結(jié)構(gòu)中:Conv為卷積模塊,k為卷積核大小,s為步長;C2f為包含2個(gè)Conv和n個(gè)帶有殘差連接的卷積模塊;SCDown為空間-通道分離下采樣模塊;SPPF為快速空間金字塔池化模塊;Split為特征分層;PSA為部分自注意力模塊;Concat為特征連接模塊;UpSample為上采樣模塊;MaxPool2d為最大池化層;MHSA為多頭自注意力模塊;FFN為前饋神經(jīng)網(wǎng)絡(luò);CIB為緊湊倒置塊;BatchNorm2d為批歸一化層;SiLU為激活函數(shù)。
YOLOv10算法團(tuán)隊(duì)提出了整體效率-精度驅(qū)動(dòng)的模型設(shè)計(jì)策略,從效率和精度的角度優(yōu)化模型架構(gòu)。為了提高效率,YOLOv10算法引入了輕量化分類頭、SCDown模塊、C2fCIB模塊,以減少計(jì)算冗余,實(shí)現(xiàn)更高效的算法架構(gòu)。為了提高精度,YOLOv10算法采用大核卷積并引入PSA模塊,在低成本的情況下,提升了模型性能。但在實(shí)際工業(yè)生產(chǎn)場景中,特別是在高實(shí)時(shí)性要求的嵌入式設(shè)備上,模型的計(jì)算量與參數(shù)量直接影響其硬件部署。雖然YOLOv10-n已經(jīng)是YOLOv10算法的最小版本,但其計(jì)算量與參數(shù)量相較于其他算法仍需進(jìn)一步改進(jìn)。
2 CMD-YOLO算法
本文對YOLOv10算法網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)主要包括:利用跨尺度特征融合模塊(cross-scale feature fusion module, CCFM)對YOLOv10算法的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行重構(gòu);在YOLOv10算法的主干網(wǎng)絡(luò)與頸部網(wǎng)絡(luò)中,利用空間深度轉(zhuǎn)換卷積(space to depth conv, SPDConv)模塊替換步長為2的傳統(tǒng)卷積(Conv)模塊;在YOLOv10算法的主干網(wǎng)絡(luò)中,利用基于Mamba的線性注意力機(jī)制(Mamba-like linear attention, MLLA)改進(jìn)的部分自注意力(PSAMLLA)模塊,替換傳統(tǒng)的部分自注意力模塊(PSA);在YOLOv10算法的頸部網(wǎng)絡(luò)中,利用動(dòng)態(tài)上采樣器DySample替換傳統(tǒng)的上采樣(UpSample)模塊。改進(jìn)后的YOLOv10(CMD-YOLO)算法網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
2.1""CCFM
多尺度特征是影響目標(biāo)檢測算法模型性能的重要因素之一。本文利用CCFM對YOLOv10算法的頸部網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),通過融合操作整合不同尺度的特征,以增強(qiáng)網(wǎng)絡(luò)對尺度變化的適應(yīng)性和對小尺度目標(biāo)的檢測能力。CCFM網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
首先,分別對YOLOv10算法主干網(wǎng)絡(luò)輸出的3個(gè)不同尺度的初始特征圖進(jìn)行一次1×1卷積操作,以提取、融合初始特征圖信息,這些卷積層均采用輕量化的結(jié)構(gòu)設(shè)計(jì),以降低算法模型的計(jì)算復(fù)雜度;然后,在特征融合中段增加一次1×1卷積操作,實(shí)現(xiàn)不同尺度特征圖的橫向融合,有效增加了算法模型的非線性特征表達(dá)能力;接著,橫向融合后的特征圖通過一系列自下而上的卷積層傳遞,進(jìn)一步增強(qiáng)特征表達(dá)能力;最后,經(jīng)過處理后的特征圖被輸入到檢測頭進(jìn)行預(yù)測。CCFM可有效整合細(xì)節(jié)特征和上下文信息,從而提高算法模型性能。
2.2""PSAMLLA模塊
由于YOLOv10算法中PSA模塊的計(jì)算量較大,CMD-YOLO算法的主干網(wǎng)絡(luò)用PSAMLLA模塊替換傳統(tǒng)的部分自注意力模塊(PSA),在保持檢測精度的同時(shí),進(jìn)一步降低算法模型的計(jì)算量。
PSAMLLA模塊的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。首先,利用卷積層提取圖像特征;然后,將圖像特征分為兩部分:一部分圖像特征輸入MLLA模塊,在保持并行計(jì)算和快速推理的同時(shí),提供必要的位置信息;另一部分圖像特征輸入FFN模塊,進(jìn)行特征變換和維度擴(kuò)展;最后,將這兩部分輸出的特征合并,通過卷積層進(jìn)行特征提取、融合,生成該層網(wǎng)絡(luò)的輸出。PSAMLLA模塊在處理圖像數(shù)據(jù)時(shí),能有效提取、融合特征信息。此外,CMD-YOLO算法將原始Mamba線性注意力算法網(wǎng)絡(luò)中需要預(yù)輸入的圖像大小改為實(shí)時(shí)計(jì)算,在保持相似浮點(diǎn)運(yùn)算數(shù)的同時(shí),提高了算法模型性能。
MLLA模塊網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
2.3""SPDConv模塊
YOLO系列算法的傳統(tǒng)步長卷積模塊在提取小目標(biāo)特征時(shí),連續(xù)下采樣會導(dǎo)致細(xì)節(jié)信息丟失,降低算法模型性能。本文在YOLOv10算法的主干網(wǎng)絡(luò)與頸部網(wǎng)絡(luò)中,利用SPDConv模塊替換步長為2的傳統(tǒng)Conv模塊。SPDConv模塊由一個(gè)空間到深度(SPD)層和一個(gè)非步長卷積(Conv)層組成[8],原理圖如圖5所示。
SPDConv模塊通過對輸入圖像進(jìn)行下采樣和拼接,利用卷積操作提取特征,在不大幅降低算法精度的前提下,減少計(jì)算復(fù)雜度,進(jìn)一步提高了算法模型性能。
2.4""動(dòng)態(tài)上采樣器DySample
針對傳統(tǒng)上采樣方法無法提供充足細(xì)節(jié)信息的問題,CMD-YOLO算法利用輕量且高效的動(dòng)態(tài)上采樣器DySample,替換原頸部網(wǎng)絡(luò)中的傳統(tǒng)上采樣器。動(dòng)態(tài)上采樣器DySample通過動(dòng)態(tài)調(diào)整采樣位置,使算法模型能夠更靈活地處理圖像數(shù)據(jù),并增強(qiáng)圖像的細(xì)節(jié)和紋理信息。
動(dòng)態(tài)上采樣器DySample的上采樣流程如圖2所示。給定一個(gè)大小為H1×W1×C的特征映射X和大小為H2×W2×2g的點(diǎn)采樣集,由grid_sample函數(shù)利用點(diǎn)采樣集中的位置信息,將特征映射X重新采樣,生成大小為H2×W2×C的特征映射X′。DySample采樣點(diǎn)生成器相比基于內(nèi)核的動(dòng)態(tài)上采樣器,不需要高分辨率引導(dǎo)特征輸入,在提升算法模型精度的同時(shí),降低了參數(shù)量,且不影響幀率,具有更小的參數(shù)量、浮點(diǎn)運(yùn)算數(shù)、GPU內(nèi)存占用和延遲。
3 實(shí)驗(yàn)與結(jié)果分析
3.1 "實(shí)驗(yàn)數(shù)據(jù)集
本實(shí)驗(yàn)采用VOC2012數(shù)據(jù)集進(jìn)行CMD-YOLO算法的性能驗(yàn)證。該數(shù)據(jù)集包含了17"125幅標(biāo)注圖像,均為JPG格式,涵蓋了20種常見的物體類別。VOC2012數(shù)據(jù)集按照8∶1∶1的比例隨機(jī)劃分為訓(xùn)練集、驗(yàn)證集和測試集[9],其中訓(xùn)練數(shù)據(jù)集包含13"700幅圖像,驗(yàn)證集包含1"712幅圖像,測試集包含1"713幅圖像。
3.2 "實(shí)驗(yàn)環(huán)境與評估指標(biāo)
實(shí)驗(yàn)運(yùn)行環(huán)境配置:操作系統(tǒng)為Windows"11;GPU為NVIDIA RTX 4060Ti,顯存 為16"GB;CPU為Intel Core i5-13600KF;開發(fā)環(huán)境使用CUDA 12.6,PyTorch-GPU 2.4.1,Python 3.9.19版本,采用PyCharm進(jìn)行訓(xùn)練。數(shù)據(jù)集訓(xùn)練參數(shù)配置如表1所示。
采用YOLO系列算法的評估指標(biāo),包括平均精度(mean average precision, mAP)、精度(precision, P)、計(jì)算量(GFLOPs)、召回率(recall, R)、參數(shù)量(Params)對CMD-YOLO算法進(jìn)行性能評估[10]。為確保實(shí)驗(yàn)的公平性,所有檢測算法網(wǎng)絡(luò)均不使用官方的預(yù)訓(xùn)練權(quán)重,都從零開始訓(xùn)練。本實(shí)驗(yàn)以數(shù)據(jù)集所有類的IoU閾值為0.5時(shí)的平均精度mAP@0.5、IoU閾值為0.5:"0.05:0.95時(shí)的平均精度mAP@0.5:0.95來評估模型的檢測精度。精度P和召回率R的計(jì)算公式分別為
mAP是所有樣本AP的平均值,其值越高表示模型性能越好。AP與mAP的計(jì)算公式分別為
通過消融實(shí)驗(yàn)與對比實(shí)驗(yàn),評估本文提出的CMD-YOLO算法模型性能[11]。
3.3 "消融實(shí)驗(yàn)
本文分別采用CCFM、PSAMLLA、SPDConv、DySample作為獨(dú)立的變量模塊來驗(yàn)證YOLOv10算法的改進(jìn)效果,消融實(shí)驗(yàn)結(jié)果如表2所示。其中,權(quán)重文件用來衡量算法模型的大小,計(jì)算量用來衡量算法模型的計(jì)算負(fù)擔(dān),參數(shù)量用來評估算法模型的參數(shù)量。
由表2可知:YOLOv10算法在引入CCFM模塊后,參數(shù)量降低了28.8%,計(jì)算量降低了15.5%,權(quán)重文件縮小了27.6%,計(jì)算延遲減少了0.3"ms,且檢測精度略有提升(mAP@0.5提高了0.7%,mAP@"0.5:0.95提高了0.2%);利用PSAMLLA模塊替換PSA模塊后,參數(shù)量降低了0.9%,檢測精度略微提高(mAP@0.5提高了0.2%,mAP@0.5:0.95提高了0.1%),計(jì)算延遲增加了0.2 ms;利用SPDConv模塊替換主干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)中步長為2的Conv模塊后,雖然檢測精度略有降低(mAP@0.5降低了0.1%,mAP@0.5:0.95降低了0.2%),但參數(shù)量與計(jì)算量大幅下降(參數(shù)量降低了1.7%,計(jì)算量降低了4.2%),且權(quán)重文件縮小了0.1 MB;利用動(dòng)態(tài)上采樣器Dy-Sample替換頸部網(wǎng)絡(luò)中的上采樣器后,盡管算法參數(shù)量提高了0.2%,但mAP@0.5提高了0.1%,mAP@0.5:"0.95提高了0.2%,計(jì)算延遲減少了0.2 ms。綜上所述,本文提出的CMD-YOLO算法相較于YOLOv10-n算法,在不影響原有檢測精度的同時(shí),算法模型參數(shù)量下降了30.5%,計(jì)算量下降了19%,權(quán)重文件縮小了29.3%,計(jì)算延遲減少了8.8%。
3.4 "對比實(shí)驗(yàn)
為驗(yàn)證CMD-YOLO算法的同級性能,將CMD-YOLO算法與YOLOv5-n、YOLOv6-n、YOLOv8-n、YOLOv10-n算法進(jìn)行對比實(shí)驗(yàn),結(jié)果如表3所示。
由表3可知:CMD-YOLO算法在參數(shù)量、計(jì)算量及權(quán)重文件方面均優(yōu)于其他算法;在計(jì)算延遲方面,其與YOLOv6-n算法并列榜首,優(yōu)于其他算法。綜上所述,CMD-YOLO算法不僅在參數(shù)量與檢測精度之間取得了平衡,還在檢測速度上表現(xiàn)出優(yōu)勢,能夠滿足邊緣嵌入式設(shè)備在目標(biāo)檢測場景下的輕量化部署需求。
4 結(jié)論
本文針對目標(biāo)檢測算法在性能受限的邊緣嵌入式設(shè)備中部署困難的問題,提出了一種基于改進(jìn)YOLOv10的輕量化目標(biāo)檢測算法——CMD-YOLO算法。首先,利用CCFM對YOLOv10算法的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),使算法模型的參數(shù)量與計(jì)算量均有所下降,在加快檢測速度的同時(shí)略微提升了檢測精度;利用PSAMLLA模塊替換PSA模塊,在保持相似的浮點(diǎn)運(yùn)算數(shù)的同時(shí),提升了算法模型的檢測精度;利用SPDConv模塊替換步長為2的傳統(tǒng)卷積模塊,進(jìn)一步降低了算法模型的參數(shù)量與計(jì)算量;利用動(dòng)態(tài)上采樣器DySample替換頸部網(wǎng)絡(luò)中的傳統(tǒng)上采樣器,在略微增加算法模型參數(shù)量的同時(shí),提升了檢測精度,降低了計(jì)算延遲。經(jīng)實(shí)驗(yàn)驗(yàn)證,CMD-YOLO算法可以滿足邊緣嵌入式設(shè)備部署目標(biāo)檢測算法的輕量化需求。但現(xiàn)實(shí)環(huán)境復(fù)雜多樣,本文所提算法無法適用所有場景,且該算法網(wǎng)絡(luò)結(jié)構(gòu)中仍包含部分傳統(tǒng)卷積模塊,有待進(jìn)一步優(yōu)化。
?The author(s) 2024. This is an open access article under the CC BY-NC-ND 4.0 License (https://creativecommons.org/licenses/ by-nc-nd/4.0/)
參考文獻(xiàn)
[1] 王珂,趙慧,張成,等.基于改進(jìn)的YOLOv5人臉口罩識別算法[J].信息化研究,2022,48(6):38-45.
[2] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE Conference"on Computer Vision"and Pattern Recognition, 2016:779-788.
[3] NELSON J, SOLAWETZ"J. YOLOv5 is here:"State-of-the-art object detection"at 140 FPS[EB/OL]. Roboflow Blog, (2020-06-26)[2025-01-02]. https://blog.roboflow.com/yolov5-is-here.
[4] 胡峻峰,李柏聰,朱昊,等.改進(jìn)YOLOv8的輕量化無人機(jī)目標(biāo)檢測算法[J].計(jì)算機(jī)工程與應(yīng)用,2024,60(8):182-191.
[5]"WANG A, CHEN H, LIU L, et al. Yolov10: Real-time end-to-end object detection[J]. arXiv preprint arXiv:2405.14458, 2024.
[6] 牛鑫宇,毛鵬軍,段云濤,等.基于YOLOv5s室內(nèi)目標(biāo)檢測輕量化改進(jìn)算法研究[J].計(jì)算機(jī)工程與應(yīng)用,2024,60(3):109-118.
[7] 魯鑫,郭業(yè)才.基于改進(jìn)YOLOv4的煙條拉線頭缺陷檢測[J].科學(xué)技術(shù)與工程,2022,22(21):9199-9206.
[8] 婁瑤迪,岳俊峰,周迪斌,等.基于Efficient-YOLO的輕量化軸承缺陷檢測[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2024,33(2):265-275.
[9] 馬斌,張亞.針對電動(dòng)車頭盔佩戴的YOLOv5s改進(jìn)算法研究[J].無線互聯(lián)科技,2023,20(15):90-93.
[10] 黃家興,南新元,張文龍,等.基于改進(jìn)YOLOv5的輕量化口罩檢測算法研究[J].計(jì)算機(jī)仿真,2023,40(5):541-547.
[11] 蘇山杰.基于深度學(xué)習(xí)的復(fù)雜道路場景下遮擋中小目標(biāo)檢測算法研究[D].重慶:重慶交通大學(xué),2023.
作者簡介:
劉印,男,1998年生,在讀碩士研究生,主要研究方向:深度學(xué)習(xí)目標(biāo)檢測。E-mail:"553841609@qq.com
龔長友,男,1996年生,碩士研究生,主要研究方向:混合動(dòng)力汽車能量管理。E-mail:"changyou_key@163.com
徐國棟,男,1976年生,碩士研究生,副教授,主要研究方向:神經(jīng)網(wǎng)絡(luò)。E-mail:"ynxugd@126.com