[yolov11改進系列]基于yolov11的修改檢測頭為自適應特征融合模塊為ASFFHead檢測頭的python源碼+訓練源碼

【自適應空間特征融合模塊ASFF介紹】

ASFF(Adaptive Spatial Feature Fusion)是一種自適應特征融合策略,旨在解決目標檢測中不同尺度特征之間的沖突和不一致性。

?

基本概念和原理

ASFF通過學習每個尺度特征的自適應融合權重,過濾掉無用的或沖突的信息,只保留有助于檢測的特征,從而提高特征的尺度不變性。其核心步驟包括:

  1. ?特征重縮放?:將不同層次的特征進行上采樣或下采樣,使它們具有相同的分辨率。
  2. ?自適應融合?:對每個層次的特征,模型學習空間位置的權重參數,自動決定每個位置該融合哪些特征,并通過Softmax函數保證權重總和為1。融合后的特征用于目標檢測。
  3. ?梯度一致性優化?:通過自適應融合,ASFF能夠在梯度傳播過程中減少不同特征層之間的沖突,優化訓練過程中的梯度一致性?12。

應用場景和效果

ASFF主要應用于目標檢測任務,特別是在多尺度目標檢測中表現優異。通過ASFF改進的模型能夠在復雜場景下更好地檢測小目標,提升整體檢測性能。例如,在YOLOv8中集成ASFF后,模型的多尺度目標檢測能力顯著提升,尤其是在小目標檢測方面表現更佳?23。

歷史背景和最新進展

ASFF最早由論文《Learning Spatial Fusion for Single-Shot Object Detection》提出,主要用于解決基于FPN的單級檢測器中不同特征尺度之間的不一致問題。該策略在YOLOv3等模型中得到了應用,并在COCO數據集上實現了良好的效果?34。近年來,ASFF在YOLOv11中得到了進一步應用和優化,增加了小目標檢測層,提升了模型在小目標檢測方面的性能?。

【yolov11框架介紹】

2024 年 9 月 30 日,Ultralytics 在其活動 YOLOVision 中正式發布了 YOLOv11。YOLOv11 是 YOLO 的最新版本,由美國和西班牙的 Ultralytics 團隊開發。YOLO 是一種用于基于圖像的人工智能的計算機模

Ultralytics YOLO11 概述

YOLO11 是Ultralytics YOLO 系列實時物體檢測器的最新版本,以尖端的精度、速度和效率重新定義了可能性。基于先前 YOLO 版本的令人印象深刻的進步,YOLO11 在架構和訓練方法方面引入了重大改進,使其成為各種計算機視覺任務的多功能選擇。

Key Features 主要特點

  • 增強的特征提取:YOLO11采用改進的主干和頸部架構,增強了特征提取能力,以實現更精確的目標檢測和復雜任務性能。
  • 針對效率和速度進行優化:YOLO11 引入了精致的架構設計和優化的訓練管道,提供更快的處理速度并保持準確性和性能之間的最佳平衡。
  • 使用更少的參數獲得更高的精度:隨著模型設計的進步,YOLO11m 在 COCO 數據集上實現了更高的平均精度(mAP),同時使用的參數比 YOLOv8m 少 22%,從而在不影響精度的情況下提高計算效率。
  • 跨環境適應性:YOLO11可以無縫部署在各種環境中,包括邊緣設備、云平臺以及支持NVIDIA GPU的系統,確保最大的靈活性。
  • 支持的任務范圍廣泛:無論是對象檢測、實例分割、圖像分類、姿態估計還是定向對象檢測 (OBB),YOLO11 旨在應對各種計算機視覺挑戰。

?

與之前的版本相比,Ultralytics YOLO11 有哪些關鍵改進?

Ultralytics YOLO11 與其前身相比引入了多項重大進步。主要改進包括:

  • 增強的特征提取:YOLO11采用改進的主干和頸部架構,增強了特征提取能力,以實現更精確的目標檢測。
  • 優化的效率和速度:精細的架構設計和優化的訓練管道可提供更快的處理速度,同時保持準確性和性能之間的平衡。
  • 使用更少的參數獲得更高的精度:YOLO11m 在 COCO 數據集上實現了更高的平均精度(mAP),參數比 YOLOv8m 少 22%,從而在不影響精度的情況下提高計算效率。
  • 跨環境適應性:YOLO11可以跨各種環境部署,包括邊緣設備、云平臺和支持NVIDIA GPU的系統。
  • 支持的任務范圍廣泛:YOLO11 支持多種計算機視覺任務,例如對象檢測、實例分割、圖像分類、姿態估計和定向對象檢測 (OBB)

【測試環境】

windows10 x64

ultralytics==8.3.0

torch==2.3.1

【改進流程】

1. 新增ASFFHead.py實現骨干網絡(代碼太多,核心模塊源碼請參考改進步驟.docx)
2. 文件修改步驟

修改tasks.py文件

創建模型配置文件

yolo11-ASFFHead.yaml內容如下:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLO11 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolo11n.yaml' will call yolo11.yaml with scale 'n'# [depth, width, max_channels]n: [0.50, 0.25, 1024] # summary: 319 layers, 2624080 parameters, 2624064 gradients, 6.6 GFLOPss: [0.50, 0.50, 1024] # summary: 319 layers, 9458752 parameters, 9458736 gradients, 21.7 GFLOPsm: [0.50, 1.00, 512] # summary: 409 layers, 20114688 parameters, 20114672 gradients, 68.5 GFLOPsl: [1.00, 1.00, 512] # summary: 631 layers, 25372160 parameters, 25372144 gradients, 87.6 GFLOPsx: [1.00, 1.50, 512] # summary: 631 layers, 56966176 parameters, 56966160 gradients, 196.0 GFLOPs# YOLO11n 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, 2, C3k2, [256, False, 0.25]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 2, C3k2, [512, False, 0.25]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 2, C3k2, [512, True]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 2, C3k2, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9- [-1, 2, C2PSA, [1024]] # 10# YOLO11n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 2, C3k2, [512, False]] # 13- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 2, C3k2, [256, False]] # 16 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 13], 1, Concat, [1]] # cat head P4- [-1, 2, C3k2, [512, False]] # 19 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 10], 1, Concat, [1]] # cat head P5- [-1, 2, C3k2, [1024, True]] # 22 (P5/32-large)- [[16, 19, 22], 1, ASFFHead, [nc]] # Detect(P3, P4, P5)
3. 驗證集成

使用新建的yaml配置文件啟動訓練任務:

from ultralytics import YOLOif __name__ == '__main__':model = YOLO('yolo11-ASFFHead.yaml') ?# build from YAML and transfer weights# Train the modelresults = model.train(data='coco128.yaml',epochs=100, imgsz=640, batch=8, device=0, workers=1, save=True,resume=False)

成功集成后,訓練日志中將顯示ASFFHead模塊的初始化信息,表明已正確加載到模型中。

【訓練說明】

第一步:首先安裝好yolov11必要模塊,可以參考yolov11框架安裝流程,然后卸載官方版本pip uninstall ultralytics,最后安裝改進的源碼pip install .
第二步:將自己數據集按照dataset文件夾擺放,要求文件夾名字都不要改變
第三步:分別打開train.py,coco128.yaml和模型參數yaml文件修改必要的參數,最后執行python train.py即可訓練

【提供文件】

├── [官方源碼]ultralytics-8.3.0.zip
├── train/
│   ├── coco128.yaml
│   ├── dataset/
│   │   ├── train/
│   │   │   ├── images/
│   │   │   │   ├── firc_pic_1.jpg
│   │   │   │   ├── firc_pic_10.jpg
│   │   │   │   ├── firc_pic_11.jpg
│   │   │   │   ├── firc_pic_12.jpg
│   │   │   │   ├── firc_pic_13.jpg
│   │   │   ├── labels/
│   │   │   │   ├── classes.txt
│   │   │   │   ├── firc_pic_1.txt
│   │   │   │   ├── firc_pic_10.txt
│   │   │   │   ├── firc_pic_11.txt
│   │   │   │   ├── firc_pic_12.txt
│   │   │   │   ├── firc_pic_13.txt
│   │   └── val/
│   │       ├── images/
│   │       │   ├── firc_pic_100.jpg
│   │       │   ├── firc_pic_81.jpg
│   │       │   ├── firc_pic_82.jpg
│   │       │   ├── firc_pic_83.jpg
│   │       │   ├── firc_pic_84.jpg
│   │       ├── labels/
│   │       │   ├── firc_pic_100.txt
│   │       │   ├── firc_pic_81.txt
│   │       │   ├── firc_pic_82.txt
│   │       │   ├── firc_pic_83.txt
│   │       │   ├── firc_pic_84.txt
│   ├── train.py
│   ├── yolo11-ASFFHead.yaml
│   └── 訓練說明.txt
├── [改進源碼]ultralytics-8.3.0.zip
├── 改進原理.docx
└── 改進流程.docx

?【常見問題匯總】
問:為什么我訓練的模型epoch顯示的map都是0或者map精度很低?
回答:由于源碼改進過,因此不能直接從官方模型微調,而是從頭訓練,這樣學習特征能力會很弱,需要訓練很多epoch才能出現效果。此外由于改進的源碼框架并不一定能夠保證會超過官方精度,而且也有可能會存在遠遠不如官方效果,甚至精度會很低。這說明改進的框架并不能取得很好效果。所以說對于框架改進只是提供一種可行方案,至于改進后能不能取得很好map還需要結合實際訓練情況確認,當然也不排除數據集存在問題,比如數據集比較單一,樣本分布不均衡,泛化場景少,標注框不太貼合標注質量差,檢測目標很小等等原因
【重要說明】
我們只提供改進框架一種方案,并不保證能夠取得很好訓練精度,甚至超過官方模型精度。因為改進框架,實際是一種比較復雜流程,包括框架原理可行性,訓練數據集是否合適,訓練需要反正驗證以及同類框架訓練結果參數比較,這個是十分復雜且漫長的過程。

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

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

相關文章

機器學習——支持向量機SVM

機器學習——支持向量機 一、介紹1.概述1.1 概念1.2 SVM的優缺點 2.硬間隔2.1 求解間隔2.2 對偶問題 3.軟間隔3.1 松馳變量3.2 對偶問題 4.核函數4.1 概念4.2 常見的核函數 二、代碼實戰1.實驗要求2.具體實現2.1 詞匯表加載2.2 郵件預處理函數2.3詞索引轉換為特征向量2.4 SVM 模…

Python 科學計算有哪些提高運算速度的技巧

在科學計算中提高 Python 運算速度的核心技巧包括:使用 NumPy 向量化操作、利用 Numba 加速函數、調用 C/C 擴展模塊、應用多線程/多進程并行計算、使用 GPU 加速計算。其中,使用 NumPy 向量化是最基礎且見效最快的優化方式。NumPy 利用底層 C 實現高效的…

React+Antd全局加載遮罩工具

下面是全局加載遮罩工具,功能:提供show和showWithDelay/hide方法用于顯示/延時顯示/隱藏遮罩,它還提供loading屬性返回是否正在loading。通常用于耗時較長的操作,比如遠端api調用。 如何用它,下面是個例子&#xff0c…

【機器學習基礎】機器學習入門核心算法:GBDT(Gradient Boosting Decision Tree)

機器學習入門核心算法:GBDT(Gradient Boosting Decision Tree) 1. 算法邏輯2. 算法原理與數學推導2.1 目標函數2.2 負梯度計算2.3 決策樹擬合2.4 葉子權重計算2.5 模型更新 3. 模型評估評估指標防止過擬合 4. 應用案例4.1 金融風控4.2 推薦系…

水墨色調中國風PPT模版分享

水墨色調中國風PPT模版分享:水墨中國風PPT模版https://pan.quark.cn/s/4368c537b1d2 第一套PPT模版?:主題是“愛蓮說”,水墨風格封面。核心視覺是綠色蓮蓬、白鶴、紅色印章,文字有“愛蓮說”等。適用文學或傳統文化類演示。 ?第…

PBX、IP PBX、FXO 、FXS 、VOIP、SIP 的概念解析以及關系

PBX(Private Branch Exchange) 概念 :PBX 是專用交換機,是一種在企業或組織內部使用的電話交換系統。它允許內部用戶之間以及內部用戶與外部公共電話網絡(PSTN)之間進行通信。例如,在一個大型企…

LabVIEW雙光子熒光成像軟件開發

雙光子熒光成像技術在抑郁小鼠腦內丙二醛(MDA)和甲醛(FA)檢測中的軟件開發,基于 LabVIEW 平臺構建從硬件控制、數據采集到圖像處理的全流程系統。結合 5734 FPGA 實現實時圖像處理,突出雙光子成像的深度開發…

OSI模型中的網絡協議

一、電子郵件協議:從SMTP到MIME的擴展 電子郵件系統的核心協議包括SMTP(Simple Mail Transfer Protocol)、POP3(Post Office Protocol)和IMAP(Internet Message Access Protocol),但…

流程自動化引擎:讓業務自己奔跑

在當今競爭激烈的商業環境中,企業面臨著快速變化的市場需求、日益復雜的業務流程以及不斷增長的運營成本。如何優化業務流程、提升效率并降低成本,成為企業持續發展的關鍵問題。 流程自動化引擎(Process Automation Engine)作為一…

DNS解析過程以及使用的協議名稱

DNS(Domain Name System 域名系統)解析是一個分層查詢的過程 1.本地緩存查詢階段 先檢查瀏覽器自身的DNS緩存 接著檢查操作系統的DNS緩存 最后檢查本地 hosts 文件 2.本地DNS服務器查詢階段 先向本地DNS服務器查詢,協議是 DNS over UDP&a…

思澈科技助力Keep Watch Pilot 1:重新定義智能運動手表體驗

——以創新芯片技術,打造長續航、高性能的隨身運動教練 作為智能穿戴領域的核心技術支持者,思澈科技攜手Keep共同推出全新智能運動手表Keep Watch Pilot 1。該產品搭載思澈科技自主研發的SF32LB557芯片,在高性能顯示、超長續航與精準運動監測…

github actions入門指南

GitHub Actions 是 GitHub 提供的持續集成和持續交付(CI/CD)平臺,允許開發者自動化軟件工作流程(如構建、測試、部署)。以下是詳細介紹: 一、核心概念 Workflow(工作流程) 持續集成的…

Pytorch中一些重要的經典操作和簡單講解

Pytorch中一些重要的經典操作和簡單講解: 形狀變換操作 reshape() / view() import torchx torch.randn(2, 3, 4) print(f"原始形狀: {x.shape}")# reshape可以處理非連續張量 y x.reshape(6, 4) print(f"reshape后: {y.shape}")# view要求…

ubuntu下nginx

我用的是ubuntu22 配置文件的準確位置 靜態網頁的存放位置 放大看到在靜態文件部署的配置路徑 該路徑下面有一個default文件查看 針對上圖的解析如下: 找到root /var/www/html 我嘗試把自己的一個index文件設置為默認,復制到/var/www/html下 ctrl加…

Git使用手冊保姆級教程

Git 使用手冊 一、Git 簡介與安裝 什么是Git? ? Git 是一個分布式版本控制系統,用于跟蹤文件變化,支持多人協作開發。 安裝步驟 ? Windows:通過 Git官網 下載安裝包,按默認配置安裝即可。 ? macOS&#xff1a…

k8s Headless Service

Kubernetes 無頭服務(Headless Service)配置與使用場景 1.無頭服務概述 無頭服務(Headless Service)是 Kubernetes 中的一種特殊服務類型,它**不分配集群 IP(ClusterIP),而是直接暴露…

基本面高股息策略

策略概述 一種基于基本面高股息策略的投資策略,主要通過Python在聚寬平臺上實現。該策略的核心思想是通過篩選出具有優質基本面和高股息率的股票進行投資,以期獲得穩定的長期回報。策略包括以下幾個主要步驟: 1. 初始化與參數設置:定義策略的基本參數和回測設置。 2. 每日…

GaussDB資源凍結與解凍:精細化資源管理的實踐與策略

GaussDB資源凍結與解凍:精細化資源管理的實踐與策略 引言 在云計算環境中,數據庫資源的動態調配能力直接影響業務成本與穩定性。華為云GaussDB作為新一代分布式數據庫,通過??資源凍結(Resource Quota Freeze)??與…

設計模式24——訪問者模式

寫文章的初心主要是用來幫助自己快速的回憶這個模式該怎么用,主要是下面的UML圖可以起到大作用,在你學習過一遍以后可能會遺忘,忘記了不要緊,只要看一眼UML圖就能想起來了。同時也請大家多多指教。 訪問者模式(Visito…

cuda編程筆記(2)--傳遞參數、設備屬性

以下是最簡單的帶參數的核函數使用過程&#xff1a; #include<iostream> #include<cstdio> #include "cuda_runtime.h" #include "device_launch_parameters.h" __global__ void add(int a,int b,int *c) {*c a b; } int main() {int c;int…