YOLOv10 | 無NMS的YOLO | 實時端到端目標檢測的新突破

過去幾年里,YOLOs因在計算成本和檢測性能之間實現有效平衡而成為實時目標檢測領域的主流范式。研究人員針對YOLOs的結構設計、優化目標、數據增強策略等進行了深入探索,并取得了顯著進展。然而,對非極大值抑制(NMS)的后處理依賴阻礙了YOLOs的端到端部署,并對推理延遲產生負面影響。此外,YOLOs中各種組件的設計缺乏全面和徹底的審查,導致明顯的計算冗余并限制了模型的性能。這導致次優的效率,以及性能提升的巨大潛力。在這項工作中,我們旨在從后處理和模型架構兩個方面進一步推進YOLOs的性能-效率邊界。為此,我們首先提出了用于YOLOs無NMS訓練的持續雙重分配,該方法同時帶來了競爭性的性能和較低的推理延遲。此外,我們為YOLOs引入了全面的效率-準確性驅動模型設計策略。我們從效率和準確性兩個角度全面優化了YOLOs的各個組件,這大大降低了計算開銷并增強了模型能力。我們的努力成果是新一代YOLO系列,專為實時端到端目標檢測而設計,名為YOLOv10。廣泛的實驗表明,YOLOv10在各種模型規模下均達到了最先進的性能和效率。例如,在COCO數據集上,我們的YOLOv10-S在相似AP下比RT-DETR-R18快1.8倍,同時參數和浮點運算量(FLOPs)減少了2.8倍。與YOLOv9-C相比,YOLOv10-B在相同性能下延遲減少了46%,參數減少了25%。

論文地址YOLOv10: Real-Time End-to-End Object Detection點擊即可跳轉

官方代碼官方代碼倉庫點擊即可跳轉

關注我后續會發布更詳細的解讀以及創新

目錄

1. 創新點

2.?精度對比

3. 一致匹配度量(Consistent Matching Metric)

3.1 效率驅動的模型設計

3.2 基于秩的塊設計(Rank-Guided Block Design)

3.3 精度驅動的模型設計

4.總結


1. 創新點

無NMS的一致雙分配(consistent dual assignments):

  • YOLOv10提出了一種通過雙標簽分配而不用非極大值抑制NMS的策略。這種方法結合了一對多和一對一分配策略的優勢,提高了效率并保持了性能。

效率-精度驅動的模型設計(Holistic Efficiency-Accuracy Driven Model Design):

  • 輕量化分類頭:在不顯著影響性能的情況下,減少了計算開銷。

  • 空間-通道解耦下采樣:解耦空間下采樣和通道調整,優化計算成本。

  • 基于秩的塊設計:根據各階段的內在秩適應塊設計,減少冗余,提高效率。

  • 大核卷積和部分自注意力PSA:在不顯著增加計算成本的情況下,增強了感受野和全局建模能力。

圖片

1. 一致雙分配策略(Consistent Dual Assignments)

YOLOv10引入了一種新的雙分配策略,用于在訓練期間同時利用一對多(one-to-many)和一對一(one-to-one)標簽分配。這種方法在保持模型高效訓練的同時,擺脫了推理過程中對非極大值抑制NMS的依賴。

雙標簽分配(Dual Label Assignments)

  • 一對多分配:在訓練期間,多個預測框被分配給一個真實物體標簽。這種策略提供了豐富的監督信號,優化效果更好。

  • 一對一分配:僅一個預測框被分配給一個真實物體標簽,避免了NMS,但由于監督信號較弱,容易導致收斂速度慢和性能欠佳。

  • 雙頭架構:模型在訓練期間使用兩個預測頭,一個使用一對多分配,另一個使用一對一分配。這樣,模型可以在訓練期間利用一對多分配的豐富監督信號,而在推理期間則使用一對一分配的預測結果,從而實現無NMS的高效推理。

2.?精度對比

  • 圖片

    可視化結果

    圖片

    消融實驗和分析

    圖片

    圖片

圖片

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),然后進行融合,增強全局建模能力,降低計算復雜度。

3.4 YOLOv10的base版本yaml文件

# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'# [depth, width, max_channels]b: [0.67, 1.00, 512] # YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, SCDown, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, SCDown, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2fCIB, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9- [-1, 1, PSA, [1024]] # 10# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 3, C2fCIB, [512, True]] # 13- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 3, C2f, [256]] # 16 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 13], 1, Concat, [1]] # cat head P4- [-1, 3, C2fCIB, [512, True]] # 19 (P4/16-medium)- [-1, 1, SCDown, [512, 3, 2]]- [[-1, 10], 1, Concat, [1]] # cat head P5- [-1, 3, C2fCIB, [1024, True]] # 22 (P5/32-large)- [[16, 19, 22], 1, v10Detect, [nc]] # Detect(P3, P4, P5)

4.總結

YOLOv10引入了額外的one-to-one頭部,通過雙分配策略,在訓練時提供更豐富的監督信息,而在推理時則利用one-to-one頭部進行高效預測,從而無需NMS后處理。此外,YOLOv10從效率和準確性兩個方面全面優化了YOLO的各個組件,包括輕量級分類頭部、空間-通道解耦的下采樣層、基于秩的模塊設計等,以降低計算冗余并提升模型性能。?

YOLOv10檢測器的提出不僅為實時目標檢測領域帶來了新的突破,也展示了通過后處理和模型設計的聯合優化,同時提升效率和精度的有效思路。YOLOv10檢測器有望在自動駕駛、機器人導航、物體跟蹤等實際應用中得到廣泛應用,為實時目標檢測任務帶來更高的效率。

對于后處理,我們提出了用于NMS-free訓練的一致雙分配策略,實現了高效的端到端檢測。在模型架構方面,我們引入了全面的效率和準確性驅動的模型設計策略,改善了性能和效率之間的權衡。這些創新帶來了我們的YOLOv10,這是一個全新的實時端到端目標檢測器。大量的實驗結果表明,YOLOv10與其他先進檢測器相比,在性能和延遲方面都取得了state-of-the-art的成果,充分展示了其優越性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15899.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15899.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

redis--消息隊列

分類 生產者消費模式 發布者訂閱模式 生產者消費模式 在生產者消費者(Producer/Consumer)模式下,上層應用接收到的外部請求后開始處理其當前步驟的操作,在執行完成后將已經完成的操作發送至指定的頻道(channel)當中,并由其下層的應用監聽…

【Chrono Engine學習總結】6-創建自定義場景-6.2-chrono中的光線設置

由于Chrono的官方教程在一些細節方面解釋的并不清楚,自己做了一些嘗試,做學習總結。 上一篇文章中,自己【用sketchup重建了三維場景】,但導入chrono中顏色很不正確,幾乎都是白色的,但也不是完全白色。經過…

IDE上傳本地倉庫到GitHub

IDE上傳本地倉庫到GitHub 1、選擇遠程倉庫平臺2、下載安裝Git3、IDE集成Git4、本地項目上傳GitHub 1、選擇遠程倉庫平臺 1.1、注冊遠程倉庫平臺 常見的遠程倉庫托管平臺有: 1)GitHub 域名:https://github.com 介紹:GitHub是全球最…

Java訂餐系統源碼 springboot點菜系統源碼

Java訂餐系統源碼 springboot點菜系統源碼 源碼下載地址:https://download.csdn.net/download/xiaohua1992/89341358 功能介紹: 前臺登錄:前臺登錄: ①首頁:菜品信息推薦、菜品信息展示、查看更多 ②菜品信息&…

Stanford斯坦福 CS 224R: 深度強化學習 (3)

基于模型的強化學習 強化學習(RL)旨在讓智能體通過與環境互動來學習最優策略,從而最大化累積獎勵。傳統的強化學習方法如Q-learning、策略梯度等,通過大量的試錯來學習值函數或策略,樣本效率較低。而基于模型的強化學習(MBRL)則利用對環境的預測模型來加速學習過程,大大提高了…

參數的本質:詳解 JavaScript 函數的參數

文章導讀:AI 輔助學習前端,包含入門、進階、高級部分前端系列內容,當前是 JavaScript 的部分,瑤琴會持續更新,適合零基礎的朋友,已有前端工作經驗的可以不看,也可以當作基礎知識回顧。 上篇文章…

地理信息系統(GIS)軟件開發

地理信息系統(GIS)軟件開發是一項復雜且系統性很強的工程,涉及空間數據的采集、管理、分析和展示。以下是一個典型的GIS軟件開發流程,包括各個步驟的詳細說明。北京木奇移動技術有限公司,專業的軟件外包開發公司&#…

面向對象------多態

1.多態的定義 通俗來說,當同一種行為或者事情發生在不同的對象上,這些行為或者事情最終得到的結果不同。 注意:多態要發生在繼承的基礎上。 例如:彩色打印機和黑白打印機。 彩色打印機和黑白打印機是不同的對象,但…

詳細分析Element中的MessageBox基本知識(附Demo)

目錄 前言1. 基本知識2. Demo2.1 確認框2.2 警告框2.3 對話框 3. this.$confirm 前言 詳細知識推薦閱讀:詳細分析Element Plus中的ElMessageBox彈窗用法(附Demo及模版) MessageBox則常用于Vue2 1. 基本知識 MessageBox 是 Element UI 提供…

Liunx學習隨筆

Linux學習隨筆 一.前期準備1.安裝Vmware Workstation軟件2.下載linux鏡像3.安裝操作系統 夕陽無限好,只是近黃昏,時隔一年,重新提筆 沒有比腳更遠的路,沒有比人更高的山 一.前期準備 1.安裝Vmware Workstation軟件 下載地址&am…

加載頁面 跳轉 新頁面 vue

通常,我們點頁面上的詳情,或者編輯,需要加載一個新的頁面出來。 vue中加載頁面的方法: 在父頁面中(通常是某個模塊目錄下的index.vue),先寫這行代碼: import AddEditForm from ./…

南京觀海微電子----升壓和降壓模塊電路解析

(一)升壓模塊 1. 如果是交流電壓升壓,那非常簡單,只要選擇變比合適的變壓器就行(1:3和1:4.17); 2. 如果是直流電壓升壓,從12v升到36v也很容易,可選擇用的開關穩壓器很多,例如 :Cs5171.Cs5172.Cs5173.Cs5174.Mc33063.…

SQLAlchemy備忘

orm備忘 upsert,存在及更新,不存在則插入 from sqlalchemy.dialects.mysql import insertinsert_stmt insert(FileModule).values(file_pathpar_dict.file, module_keypar_dict.module_key,module_namepar_dict.module_name, project_idpar_dict.proj…

【調和級數】100321. 優質數對的總數 II

本文涉及知識點 調和級數 質數、最大公約數、菲蜀定理 LeetCode100321. 優質數對的總數 II 給你兩個整數數組 nums1 和 nums2,長度分別為 n 和 m。同時給你一個正整數 k。 如果 nums1[i] 可以被 nums2[j] * k 整除,則稱數對 (i, j) 為 優質數對&#…

[Android]在后臺線程執行耗時操作,然后在主線程更新UI

1.Coroutines(官方推薦) Coroutines 提供了一種輕量級的線程管理方式,使得在后臺線程執行任務和在主線程更新 UI 變得簡單。以下是如何在 Kotlin 中使用 Coroutines 來處理耗時邏輯并更新 UI 的步驟: 添加 Coroutines 依賴: 首…

數據結構·一篇搞定隊列!

hello,大家好啊,肖恩又拖更了,你們聽我狡辯,前段時間有期中考試,so我就沒什么時間寫這個,在這給大家道個歉😭😭😭 我后面一定盡力不拖更 那么接下來,我們來看…

Greenplum使用hbase外部表

概述 GP可以通過pxf協議上的hbase外表功能, 在數據庫中創建外部表,映射hbase table,以直接在gp中訪問 hbase數據,方便將hbase的查詢結果集保留在gp中 hbase端準備 HBase基礎概念: ?HBase 列包含兩個組件&#xff1…

粒子輻照環境中相機鏡頭防護及LabVIEW圖像處理注意事項

在粒子輻照環境測試電路板性能的實驗中,需要對相機鏡頭進行有效防護,同時利用LabVIEW進行圖像識別和處理。本文將討論相機鏡頭防護的關鍵因素和LabVIEW處理過程中的注意事項,包括防輻射材料選擇、輻射屏蔽措施、散熱管理、空間布局及LabVIEW軟…

c++11:左值引用和右值引用《全家桶》

總結一下C11中涉及到左值引用和右值引用的場景。 1 左值引用和右值引用的區別 左值引用 定義:對左值的引用。目的是避免內存拷貝,類似c中的指針,兩個場景:函數傳參、函數返回值。 右值引用 定義:對右值的引用。兩個場景&#…

【機器學習-k近鄰算法-01】 | Scikit-Learn工具包進階指南:機器學習sklearn.neighbors模塊之k近鄰算法實戰

🎩 歡迎來到技術探索的奇幻世界👨?💻 📜 個人主頁:一倫明悅-CSDN博客 ?🏻 作者簡介: C軟件開發、Python機器學習愛好者 🗣? 互動與支持:💬評論 &…