YOLOv10性能效率大幅提升,清華開源新一代實時目標監測模型

始智ai wisemodel.cn開源社區

近日,清華大學推出了新一代yolov10模型,此次的yolov10模型做出了多方面的調整和優化。該模型已經上線始智ai wisemodel.cn開源社區,歡迎大家前往wisemodel社區下載體驗。

https://wisemodel.cn/models/thu-mig/yolov10

1.在head部分,創造性地融合了one-to-one和one-to-many兩種模式,既利用了one-to-many豐富的監督(supervision)信號來訓練優化模型參數保證模型的精度,又採取one-to-one進行推斷(inference)來避免nms後處理從而提高推斷速度。論文作者將這種方式稱為:雙重標籤分配(dual label assignment)。

2.對yolo模型的結構進行改良,推出全面效率-準確性驅動的模型設計(holistic efficiency-accuracy driven model design),在效率(efficiency)和精確度(accuracy)兩方面進行改良。

一、雙重標籤分配

存在問題:

yolo通常在訓練過程中採用一對多的標籤分配策略,其中一個真實情況(ground-truth)物體對應於多個正(positive)樣本。儘管這種方法取得了優越的性能,但它需要在推理過程中使用nms(non-maximum suppression,非極大值抑制)來選擇最佳的陽性預測。這降低了推理速度,並使性能對nms的超參數敏感,從而阻礙了yolo實現最優的端到端部署。解決這個問題的一條途徑是採用最近引入的端到端detr架構。例如,rt-detr提出了一種有效的混合編碼器和非確定性最小 query 選擇,將detr推向了實時應用領域。然而,部署detr的固有複雜性阻礙了它在準確性和速度之間達到最優平衡的能力。另一條途徑是探索基於cnn的檢測器的端到端檢測,這通常利用一對一的分配策略來抑制冗餘預測。然而,它們通常引入額外的推理開銷或達到次優性能。

解決方案:

yolov10提出了一種新的訓練方法,即"dual assignments"。這種方法在訓練階段同時使用one-to-many(一對多)和one-to-one(一對一)的標籤分配策略。研究人員在head部分原本的one-to many基礎上多加上了一個one-to-one的部分,它保持與原始一對多分支相同的結構,並採用相同的優化目標,但利用一對一匹配來獲得標籤賦值。在訓練期間,兩個頭部與模型一起優化,允許backbone和neck享受由一對多賦值提供的豐富監督。在推理期間, 研究人員丟棄一對多頭部,使用一對一頭部進行預測。這使得yolo能夠實現無需任何額外推理成本的端到端部署。此外,為了確保兩個頭部在訓練過程中的監督信號一致性,論文還提出了"consistent matching metric"(一致的匹配度量),確保one-to-one頭部在選擇預測時與one-to-many頭部的最佳預測保持一致,從而在推理時提供高質量的樣本,提高性能。(詳情請參考論文)具體原理可參考下圖:


二、全面效率-準確性驅動的模型設計(holistic efficiency-accuracy driven model design)

效率驅動的模型設計:(提高效率,減小計算成本)

yolo的組件包括幹線(stem)、下採樣層(downsampling layers)、具有基本構建塊的階段(stages with basic building blocks)和頭部(head)。幹線產生的計算成本很少,因此 研究人員對其他三個部分進行了效率驅動的模型設計。

1.輕量級分類頭部。在yolo中,分類和回歸頭部通常具有相同的架構。然而,它們在計算開銷上表現出顯著的差異。例如,在yolov8-s中,分類頭部(5.95g/1.51m)的flops和參數計數是回歸頭部(2.34g/0.64m)的2.5倍和2.4倍。然而,經過分析分類誤差和回歸誤差(見表6)的影響後,研究人員發現回歸頭部對yolo的性能更為重要。因此,可以在不擔心大幅損害性能的情況下減少分類頭部的開銷。研究人員簡單地為分類頭部採用了輕量級架構,該架構由兩個深度可分離卷積[24,8]組成,核大小為3×3,後跟1×1卷積。

2.空間-通道解耦下採樣。yolo通常利用標準的3×3卷積,步長為2,同時實現空間下採樣(從h×w到h^2×w^2)和通道轉換(從c到2c)。這引入了不可忽視的計算成本o(9^2hwc^2)和參數數量o(18c^2)。研究人員提議將空間縮減和通道增加操作解耦,實現更高效的下採樣。具體來說,首先利用點卷積來調節通道維度,然後使用深度卷積來執行空間下採樣。這將計算成本降低到o(2hwc^2 + 9^2hwc),參數數量降低到o(2c^2 + 18c)。同時,它最大化了下採樣期間的信息保留,更好地降低了延遲。

3.等級引導的塊設計。yolo通常對所有階段使用相同的基本構建塊設計,例如yolov8中的瓶頸塊(the bottleneck block)。為了徹底檢查yolo的這種同質設計,研究人員利用內在秩來分析每個階段的冗餘。具體來說,研究人員計算每個階段最後一個基本塊中最後一個卷積的數值秩,這統計了大於某個閾值的奇異值的數量。
圖(a)展示了yolov8的結果,表明深層階段和大型模型更容易表現出更多的冗餘。這一觀察表明,簡單地對所有階段應用相同的塊設計對於最佳容量-效率權衡來說是次優的。為了解決這個問題,研究人員提出了一個等級引導的塊設計方案,旨在使用緊湊的架構設計降低顯示出冗餘的階段的複雜性。
首先,研究人員提出了一個緊湊的倒置塊(cib)結構,它採用成本低廉的深度卷積進行空間混合和成本效益高的點卷積進行通道混合,如圖(b)所示。它可以作為高效的基本構建塊,例如嵌入到elan結構中(見圖(b))。
然後,他們提倡一個等級引導的塊分配策略,以實現最佳的效率,同時保持競爭力的能力。具體來說,給定一個模型,根據它們的內在秩按升序對它的所有階段進行排序。進一步地,研究人員檢查用cib替換領先階段(leading stage)的基本塊時的性能變化。如果沒有與給定模型相比的性能下降,研究人員繼續替換下一個階段,並在性能下降時停止該過程。因此,研究人員可以在不同階段和模型尺度上實現自適應的緊湊塊設計,實現更高的效率,而不影響性能。

三、準確性驅動的模型設計:(提高準確性)

研究人員進一步探索了大核卷積和自注意力,以準確性為驅動進行設計,旨在在最低成本下提高性能。

1.大核卷積。使用大核深度卷積是擴大感受野和增強模型能力的有效方法。然而,簡單地在所有階段使用它們可能會引入淺層特徵的污染,這些特徵被用來檢測小物體,同時也會引入高解析度階段的顯著i/o開銷和延遲。因此,研究人員提議在深層階段的cib中使用大核深度卷積。具體來說,研究人員將cib中第二個3×3深度卷積的核大小增加到7×7,參考。此外,研究人員採用結構重參數化技術,引入另一個3×3深度卷積分支,以減輕優化問題,而不增加推理開銷。此外,隨著模型大小的增加,其感受野自然擴大,使用大核卷積的好處也在減少。因此,研究人員只為小模型尺度採用大核卷積。

2.部分自注意力(psa)。由於其顯著的全局建模能力,自注意力被廣泛用於各種視覺任務。然而,它表現出高計算複雜性和內存佔用。為了解決這個問題,鑒於普遍存在的注意力頭冗餘,研究人員設計了一個高效的部分自注意力(psa)模塊設計,如圖(c)所示。具體來說,研究人員在1×1卷積後將特徵均勻地跨通道分成兩部分。只將一部分輸入由多頭自注意力模塊(mhsa)和前饋網路(ffn)組成的npsa塊。然後將兩部分連接起來,並通過1×1卷積進行融合。此外,將查詢和鍵的維度設置為mhsa中值的一半,並將layernorm替換為batchnorm,以實現快速推理。此外,psa僅放置在具有最低解析度的第4階段之後,避免了自注意力的二次計算複雜性帶來的過度開銷。通過這種方式,可以將全局表示學習能力以低計算成本納入yolo,這很好地增強了模型的能力並改進了性能。

本文是對yolov10的簡單介紹,更多詳細信息請查詢論文:

論文地址:https://arxiv.org/pdf/2405.14458

項目地址:https://github.com/thu-mig/yolov10

整理丨張皓程

編輯丨趙雅鑫

-----    end   -----

始智ai wisemodel開源社區最近上線了開源模型的在線體驗功能,已經有近50個大模型可以直接進行在線體驗。在線體驗的創建無需任何代碼開發,人人都可以來玩開源大模型。歡迎前往wisemodel.cn社區進行體驗,若需指引可以參考《》。大家研發的模型也可以發布到wisemodel社區,同時適配一下wisemodel-api,相應模型就可以直接在線運行了。如果有需要模型的在線推理運行託管服務,也歡迎聯繫我們。

wisemodel相關

系統升級