YOLOv12 ——基于卷積神經網絡的快速推理速度與注意力機制帶來的增強性能結合

概述

實時目標檢測對于許多實際應用來說已經變得至關重要,而Ultralytics公司開發的YOLO(You Only Look Once,只看一次)系列一直是最先進的模型系列,在速度和準確性之間提供了穩健的平衡。注意力機制的低效阻礙了它們在像YOLO這樣的高速系統中的應用。YOLOv12旨在通過將注意力機制集成到YOLO框架中來改變這一現狀。

1.新特性

大多數目標檢測架構傳統上依賴于卷積神經網絡(CNN),因為注意力機制效率低下,面臨著二次計算復雜度和低效的內存訪問操作問題。因此,在對推理速度要求很高的YOLO框架中,基于CNN的模型通常比基于注意力的系統表現更好。

YOLOv12通過引入三個關鍵改進來克服這些限制:

區域注意力模塊(A2):

  • YOLOv12引入了一個簡單而高效的區域注意力模塊(A2),該模塊將特征圖分割成多個片段,在保留大感受野的同時降低了傳統注意力機制的計算復雜度。這種簡單的修改使模型在保持較大視野的同時提高了速度和效率。

殘差高效層聚合網絡(R - ELAN):

  • YOLOv12利用R - ELAN來解決注意力機制帶來的優化挑戰。R - ELAN對之前的ELAN架構進行了改進,具體如下:
    • 塊級殘差連接和縮放技術,以確保訓練的穩定性。
    • 重新設計的特征聚合方法,提高了性能和效率。

架構改進:

  • 快速注意力(Flash Attention):快速注意力的集成解決了注意力機制的內存訪問瓶頸問題,優化了內存操作并提高了速度。
  • 去除位置編碼:通過消除位置編碼,YOLOv12簡化了模型,使其更快、更簡潔,同時不犧牲性能。
  • 調整多層感知機(MLP)比率:多層感知機的擴展比率從4降低到1.2,以平衡注意力網絡和前饋網絡之間的計算負載,提高效率。
  • 減少塊深度:通過減少架構中堆疊塊的數量,YOLOv12簡化了優化過程并提高了推理速度。
  • 卷積算子:YOLOv12廣泛使用卷積操作以利用其計算效率,進一步提高性能并降低延遲。

注:

由于兩個因素,注意力機制本質上比卷積神經網絡(CNN)慢:

  1. 復雜性。首先,自注意力操作的計算復雜度隨輸入序列長度 L 呈二次方增長。此外,另一個重要因素是,大多數基于注意力的視覺變壓器由于其復雜的設計(例如,Swin 變壓器中的窗口劃分/反轉
    )和額外模塊的引入(例如,位置編碼),逐漸積累了速度開銷。
  2. 計算。其次,在注意力計算過程中,與 CNN 相比,內存訪問模式效率較低,例如注意力圖和 softmax 圖。此外,與 CNN 相比,注意力中的不規則內存訪問模式會引入更多的延遲。

2.YOLOv12的架構概述


圖1:YOLOv12的主干網絡和頭部網絡架構

3.區域注意力模塊

圖2:區域注意力可視化

為了解決普通注意力機制相關的計算成本問題,YOLOv12利用了局部注意力機制,如移位窗口注意力、十字交叉注意力和軸向注意力。雖然這些方法通過將全局注意力轉換為局部注意力來降低復雜度,但由于感受野減小,它們在速度和準確性方面存在局限性。

  • 提出的解決方案:YOLOv12引入了一個簡單而高效的區域注意力模塊。該模塊將分辨率為(H,W)的特征圖分割成L個大小為(H/L,W)或(H,W/L)的片段。它不是使用顯式的窗口劃分,而是應用了一個簡單的重塑操作。
  • 優點:這將感受野減小到原來的四分之一,但與其他局部注意力方法相比,仍然保持了較大的感受野。通過將計算成本從傳統的(2n2hd)降低到(n2hd)/2,模型在不犧牲準確性的情況下變得更加高效。

4.殘差高效層聚合網絡(R - ELAN)


圖3:YOLOv12中使用的R - ELAN

ELAN概述:

高效層聚合網絡(ELAN) 在早期的YOLO模型中用于改進特征聚合。ELAN的工作方式如下:

  1. 對1×1卷積層的輸出進行分割。
  2. 通過多個模塊處理這些分割后的部分。
  3. 在應用另一個1×1卷積以對齊最終維度之前,將輸出進行拼接。

ELAN存在的問題

  1. 梯度阻塞:由于從輸入到輸出缺乏殘差連接,導致訓練不穩定。
  2. 優化挑戰:注意力機制和架構可能會導致收斂問題,L規模和X規模的模型即使使用Adam或AdamW優化器也無法收斂或保持不穩定。

提出的解決方案——R - ELAN

  1. 殘差連接:引入了從輸入到輸出的殘差捷徑,帶有一個縮放因子(默認值為0.01),以提高穩定性。
  2. 層縮放類比:類似于深度視覺Transformer中使用的層縮放,但避免了將層縮放應用于每個區域注意力模塊而導致的速度下降。

新的聚合方法

  1. 修改后的設計:新方法不是在過渡層之后分割輸出,而是調整通道維度并創建單個特征圖。
  2. 瓶頸結構:在拼接之前通過后續塊處理特征圖,形成更高效的聚合方法。

5.架構改進

  • 快速注意力(Flash Attention):YOLO12利用了快速注意力,它最大限度地減少了內存訪問開銷。這解決了注意力機制的主要內存瓶頸問題,縮小了與CNN的速度差距。
  • MLP比率調整:前饋網絡的擴展比率從Transformer中通常的4降低到YOLOv12中的約1.2。這防止了MLP在運行時占據主導地位,從而提高了整體效率。
  • 去除位置編碼:YOLOv12在其注意力層中省略了顯式的位置編碼。這使得模型“快速且簡潔”,同時在檢測性能上沒有損失。
  • 減少堆疊塊:最近的YOLO主干網絡在最后一個階段堆疊了三個注意力/CNN塊;而YOLOv12在該階段只使用了一個R - ELAN塊。較少的順序塊簡化了優化過程并提高了推理速度,尤其是在更深的模型中。
  • 卷積算子:該架構還使用了帶有批量歸一化的卷積,而不是帶有層歸一化的線性層,以充分利用卷積算子的效率。

6.基準測試


圖4:YOLOv12的比較

數據集:所有模型均在MS COCO 2017目標檢測基準上進行評估。

YOLOv12 - N的性能:最小的YOLOv12 - N模型實現了40.6%的更高平均精度均值(mAP),相比之下,YOLOv10 - N為38.5%,YOLOv11 - N為39.4%,同時保持了相似的推理延遲。

YOLOv12 - S與RT - DETR的比較:YOLOv12 - S模型也優于RT - DETR模型。值得注意的是,它的運行速度比RT - DETR - R18模型快約42%,同時只使用了RT - DETR - R18模型約36%的計算量和約45%的參數。

每個YOLOv12模型(從N到X)在與YOLOv8、YOLOv9、YOLOv10、YOLOv11等類似大小的模型相比時,在相當或更低的延遲下實現了更好的mAP。這種優勢從小型模型到大型模型都存在,證明了YOLOv12改進的可擴展性。

7. 最先進技術比較

例如:對于N 規模的模型,YOLOv12 - N 在平均精度均值(mAP)上分別比 YOLOv6–3.0 - N [32]、 YOLOv8-N [58]、 YOLOv10-N [53] 和 YOLOv11 [28] 高出 3.6%、3.3%、2.1% 和 1.2%,同時保持相似甚至更少的計算量和參數,并實現了1.64 毫秒/圖像的快速延遲速度

  • 對于S 規模的模型,YOLOv12 - S 具有 21.4G 浮點運算量(FLOPs)和 9.3M 參數,在 2.61 毫秒/圖像的延遲下實現了 48.0 mAP。它在平均精度均值(mAP)上分別比 YOLOv8-S [24]、YOLOv9-S [58]、YOLOv10-S [53] 和 YOLOv11 - S [28] 高出 3.0%、1.2%、1.7% 和 1.1%,同時保持相似或更少的計算量。
  • 對于M 規模的模型,YOLOv12 - M 具有 67.5G 浮點運算量(FLOPs)和 20.2M 參數,實現了 52.5 mAP 的性能和 4.86 毫秒/圖像的速度。
  • 對于L 規模的模型,YOLOv12 - L 甚至比 YOLOv10-L [53] 少 31.4G 浮點運算量(FLOPs)。
  • 對于X 規模的模型,YOLOv12 - X 在平均精度均值(mAP)上分別比 YOLOv10-X [53] / YOLOv11 - X [28] 高出 0.8% 和 0.6%,同時具有相當的速度、浮點運算量(FLOPs)和參數。

8. 推理速度比較

YOLOv12 的推理速度比 YOLOv9 ** 顯著提高**,同時與 YOLOv10 和 YOLOv11 相當

總結

YOLOv12目前的一個局限性是它依賴于快速注意力(FlashAttention)來實現最佳速度。快速注意力僅在相對較新的GPU架構(NVIDIA的圖靈、安培、阿達·洛芙萊斯或霍珀系列)上得到支持,例如特斯拉T4、RTX 20/30/40系列、A100、H100等。

這意味著缺乏這些架構的舊GPU無法充分受益于YOLOv12的優化注意力實現。使用不支持的硬件的用戶將不得不回退到標準注意力內核,從而失去一些速度優勢。

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

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

相關文章

OpenAI開放Deep Research權限,AI智能體大戰升級,DeepSeek與Claude迎來新對決

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

鴻蒙5.0實戰案例:基于RichEditor的評論編輯

往期推文全新看點(文中附帶全新鴻蒙5.0全棧學習筆錄) ?? 鴻蒙(HarmonyOS)北向開發知識點記錄~ ?? 鴻蒙(OpenHarmony)南向開發保姆級知識點匯總~ ?? 鴻蒙應用開發與鴻蒙系統開發哪個更有前景&#…

通過命令啟動steam的游戲

1. 啟動Steam客戶端 在命令行輸入以下命令來啟動Steam客戶端: start steam://open/main 如果Steam未安裝在默認路徑,可能需要先定位到Steam的安裝目錄,例如: cd C:\Program Files (x86)\Steam start steam://open/main 2. 通過…

RIP-AV:使用上下文感知網絡進行視網膜動脈/靜脈分割的聯合代表性實例預訓練

文章目錄 RIP-AV: Joint Representative Instance Pre-training with Context Aware Network for Retinal Artery/Vein Segmentation摘要方法實驗結果 RIP-AV: Joint Representative Instance Pre-training with Context Aware Network for Retinal Artery/Vein Segmentation …

單片機總結【GPIO/TIM/IIC/SPI/UART】

一、GPIO 1、概念 通用輸入輸出口;開發者可以根據自己的需求將其配置為輸入或輸出模式,以實現與外部設備進行數據交互、控制外部設備等功能。簡單來說,GPIO 就像是計算機或微控制器與外部世界溝通的 “橋梁”。 2、工作模式 工作模式性質特…

.gitignore 文件中添加忽略 .pdb 文件

我在項目的根目錄下創建.gitignore文件。打開.gitignore文件并添加忽略.pdb文件的規則。如下: 已經在 .gitignore 文件中添加了忽略 .pdb 文件的規則,但是提交到 Git 倉庫時仍然看到了 .pdb 文件,這通常意味著 .pdb 文件在 .gitignore 文件被…

ubuntu配置jmeter

1.前提準備 系統 ubuntu server 22.04 前提條件:服務器更新apt與安裝lrzsz:更新apt: sudo apt update安裝lrzsz: 命令行下的上傳下載文件工具 sudo apt install lrzszsudo apt install zip2.安裝jemeter 2.1.下載jdk17 輸入命令&#xf…

半導體晶圓精控:ethercat轉profient網關數據提升制造精度

數據采集系統通過網關連接離子注入機,精細控制半導體晶圓制造過程中的關鍵參數。 在半導體制造中,晶圓制造設備的精密控制是決定產品性能的關鍵因素。某半導體工廠采用耐達訊Profinet轉EtherCAT協議網關NY-PN-ECATM,將其數據采集系統與離子注…

VSCode+PlatformIO報錯 找不到頭文件

如圖示,找不到目標頭文件 demo工程運行正常,考慮在src文件夾內開辟自己的代碼,添加后沒有找到 找了些資料,大概記錄如下: 1、c_cpp_properties.json 內記錄 頭文件配置 .vscode 中,此文件是自動生成的&a…

ARM 處理器平臺 eMMC Flash 存儲磨損測試示例

By Toradex秦海 1). 簡介 目前工業嵌入式 ARM 平臺最常用的存儲器件就是 eMMC Nand Flash 存儲,而由于工業設備一般生命周期都比較長,eMMC 存儲器件的磨損壽命對于整個設備來說至關重要,因此本文就基于 NXP i.MX8M Mini ARM 處理器平臺演示…

Comfy UI 快捷鍵

Comfy UI 頁面的快捷鍵操作(記錄下,以防忘記): 捷徑命令Ctrl Enter將當前圖表排隊等待生成Ctrl Shift Enter將當前圖表排成第一個生成圖表Ctrl Z/Ctrl Y撤消/重做Ctrl S保存工作流程Ctrl O加載工作流Ctrl A選擇所有節點A…

uniapp 本地數據庫多端適配實例(根據運行環境自動選擇適配器)

項目有個需求,需要生成app和小程序,app支持離線數據庫,如果當前沒有網絡提醒用戶開啟離線模式,所以就隨便搞了下,具體的思路就是: 一個接口和多個實現類(類似后端的模板設計模式)&am…

HIVE SQL函數之比較函數

背景:今天接到一個臨時需求,需要比較abc的大小,但是abc三個字段都存在為空的情況。 開發:對于這個開發很簡單,因為比較函數有太多了,首先想到的是用case when去進行一個非空的判斷,再去比較用I…

AI探索筆記:淺談人工智能算法分類

人工智能算法分類 這是一張經典的圖片,基本概況了人工智能算法的現狀。這張圖片通過三個同心圓展示了人工智能、機器學習和深度學習之間的包含關系,其中人工智能是最廣泛的范疇,機器學習是其子集,專注于數據驅動的算法改進&#…

進程概念、PCB及進程查看

文章目錄 一.進程的概念進程控制塊(PCB) 二.進程查看通過指令查看進程通過proc目錄查看進程的cwd和exe獲取進程pid和ppid通過fork()創建子進程 一.進程的概念 進程是一個運行起來的程序,而程序是存放在磁盤的,cpu要想執行程序的指…

OA辦公系統自動滲透測試過程

目錄 一、下載環境源碼 二、部署環境 三、測試 XSS漏洞 SQL注入 文件上傳漏洞 一、下載環境源碼 OA源碼打包地址: https://download.csdn.net/download/weixin_43650289/90434502?spm=1001.2014.3001.5503 二、部署環境

怎么修改node_modules里的文件,怎么使用patch-package修改node_modules的文件,怎么修改第三方庫原文件。

在開發中會遇到需要node_modules里第三方庫有bug,然后需要修改node_modules文件的情況 使用patch-package包可以修改node_modules里的文件 patch-package npm 官網:patch-package - npm 安裝 npm i patch-package 修改文件后 npx patch-package s…

Python在實際工作中的運用-通用格式CSV文件自動轉換XLSX

繼續上篇《Python在實際工作中的運用-CSV無損轉XLSX的幾個方法》我們雖然對特定格式的CSV實現了快速轉換XLSX的目標,但是在運行Py腳本前,還是需要編輯表格創建腳本和數據插入腳本,自動化程度很低,實用性不強,為減少人工提高效率,實現輸入CSV文件路徑即可自動適配完成轉換…

seacmsv9報錯注入

1、seacms的介紹 ? seacms中文名&#xff1a;海洋影視管理系統。是一個采用了php5mysql架構的影視網站框架&#xff0c;因此&#xff0c;如果該框架有漏洞&#xff0c;那使用了該框架的各個網站都會有相同問題。 2、源碼的分析 漏洞的部分源碼如下&#xff1a; <?php …

Hbase客戶端API——語句大全

目錄 創建表&#xff1a; 插入數據&#xff1a; 刪除數據&#xff1a; 修改數據&#xff1a; 查詢數據&#xff1a;Get 查詢數據&#xff1a;Scan 查詢數據&#xff1a;過濾查詢 創建表&#xff1a; 檢驗&#xff1a; 插入數據&#xff1a; 驗證 一次多條數據插入 驗證&…