💡💡💡本專欄所有程序均經過測試,可成功執行💡💡💡?
專欄目錄:《YOLOv8改進有效漲點》專欄介紹 & 專欄目錄 | 目前已有40+篇內容,內含各種Head檢測頭、損失函數Loss、Backbone、Neck、NMS等創新點改進
對YOLOv10感興趣的同學可以先看YOLOv8,因為改進方式大部分一樣,我也會盡快更新相關的教程?
論文地址:YOLOv10: Real-Time End-to-End Object Detection點擊即可跳轉
官方代碼:官方代碼倉庫點擊即可跳轉
今天看到YOLOv10已經被添加到了ultralytics的倉庫中,?也就是說,以后YOLOv8的代碼倉庫也可以下載直接運行YOLOv10。預計以后發布的YOLO系列都會被收入到這個倉庫中。
?YOLOv10啟動腳本供參考:
from ultralytics import YOLOv10
# Load a model
model = YOLOv10("ultralytics/cfg/models/v10/yolov10n.yaml")
# train
model.train(data='dataset/data.yaml',cache=False,imgsz=640,epochs=100,batch=16,close_mosaic=0,workers=4,device='0',optimizer='SGD', # using SGDamp=False, # close ampproject='runs/train',name='exp',)
YOLOv10創新點回顧:
1. 創新點
無NMS的一致雙分配(consistent dual assignments):
YOLOv10提出了一種通過雙標簽分配而不用非極大值抑制NMS的策略。這種方法結合了一對多和一對一分配策略的優勢,提高了效率并保持了性能。
效率-精度驅動的模型設計(Holistic Efficiency-Accuracy Driven Model Design):
輕量化分類頭:在不顯著影響性能的情況下,減少了計算開銷。
空間-通道解耦下采樣:解耦空間下采樣和通道調整,優化計算成本。
基于秩的塊設計:根據各階段的內在秩適應塊設計,減少冗余,提高效率。
大核卷積和部分自注意力PSA:在不顯著增加計算成本的情況下,增強了感受野和全局建模能力。
2. 一致雙分配策略(Consistent Dual Assignments)
YOLOv10引入了一種新的雙分配策略,用于在訓練期間同時利用一對多(one-to-many)和一對一(one-to-one)標簽分配。這種方法在保持模型高效訓練的同時,擺脫了推理過程中對非極大值抑制NMS的依賴。
雙標簽分配(Dual Label Assignments)
一對多分配:在訓練期間,多個預測框被分配給一個真實物體標簽。這種策略提供了豐富的監督信號,優化效果更好。
一對一分配:僅一個預測框被分配給一個真實物體標簽,避免了NMS,但由于監督信號較弱,容易導致收斂速度慢和性能欠佳。
雙頭架構:模型在訓練期間使用兩個預測頭,一個使用一對多分配,另一個使用一對一分配。這樣,模型可以在訓練期間利用一對多分配的豐富監督信號,而在推理期間則使用一對一分配的預測結果,從而實現無NMS的高效推理。
3. 一致匹配度量(Consistent Matching Metric)
為了在訓練期間保持兩個預測頭的一致性,提出了一致匹配度量。通過調整匹配度量參數,使得一對一和一對多分配的監督信號一致,減少了訓練期間的監督差距,提升了模型的預測質量。
整體效率-精度驅動的模型設計(Holistic Efficiency-Accuracy Driven Model Design)
YOLOv10在模型架構的各個方面進行了全面優化,旨在提升效率和精度。
3.1 效率驅動的模型設計
輕量化分類頭(Lightweight Classification Head)
在YOLO系列中,分類頭和回歸頭通常共享相同的架構,但分類任務的計算開銷更大。為分類頭采用輕量級的架構,包括兩個3×3的深度可分離卷積(depthwise separable convolutions)和一個1×1卷積,以減少計算開銷。
空間-通道解耦下采樣(Spatial-Channel Decoupled Downsampling)
傳統的下采樣方法同時進行空間和通道的轉換,計算成本較高。YOLOv10首先使用逐點卷積(pointwise convolution)調整通道維度,然后使用深度卷積(depthwise convolution)進行空間下采樣。這樣可以最大限度地保留信息,同時減少計算成本。
3.2 基于秩的塊設計(Rank-Guided Block Design)
在YOLO模型中,各階段通常使用相同的基本構建塊,容易導致深層階段的計算冗余。因此根據各階段的內在秩(intrinsic rank)調整塊設計,減少冗余,采用緊湊的反向塊(Compact Inverted Block, CIB)設計,用深度卷積進行空間混合和逐點卷積進行通道混合,提高效率。
3.3 精度驅動的模型設計
大核卷積(Large-Kernel Convolution)
大核卷積的感受野較大,能夠更好地捕捉圖像中的全局信息。然而,直接在所有階段使用大核卷積可能會導致小物體特征的污染,并增加高分辨率階段的I/O開銷和延遲。因此,在深層階段使用大核深度卷積(如7×7)來擴大感受野,增強模型能力,同時使用結構重參數化技術(structural reparameterization)優化訓練。
對于小模型規模(如YOLOv10-N/S),大核卷積的使用能夠顯著提升性能,而對于大模型規模(如YOLOv10-M),其天然較大的感受野使得大核卷積的效果不明顯,因此僅在小模型中使用。
部分自注意力(Partial Self-Attention, PSA)
部分自注意力模塊通過引入全局建模能力來提升模型性能,同時保持較低的計算開銷。
自注意力(self-attention)在視覺任務中因其出色的全局建模能力而被廣泛使用,但其計算復雜度和內存占用較高。本文引入PSA模塊,通過將特征按通道分成兩部分,僅對一部分應用多頭自注意力(Multi-Head Self-Attention, MHSA),然后進行融合,增強全局建模能力,降低計算復雜度。