yolov8添加CBAM注意力机制

yolov8本身自带CBAM注意力,在nn/modules/conv.py文件最后面可以找到。

第一步:在conv.py添加名字

第二步:在_init_.py添加名字

第三步:在tasks.py添加名字

第四步:在tasks.py添加配置。715行左右

        elif m in {CBAM}:
            c1,c2 = ch[f],args[0]
            if c2 != nc:
                c2 = make_divisible(min(c2,max_channels)*width,8)
            args = [c1,*args[1:]]

第五步:复制yolov8.yaml文件重命名为myolov8_Att_CBAM.yaml

第六步:在myolov8_Att_CBAM.yaml里面添加注意力机制,添加的位置不同,效果也不一样,这个需要自研究一下,我添加在了第五层,在head这个部分标红的地方进行了修改,因为我们加了一次,所以这些也需要加一层,

[-1, 1, Conv, [64, 3, 2]]是一个配置列表,用于定义YOLOv8模型中的一个卷积层。这个列表的每个元素都有特定的含义:

  • -1:这是输入的索引,表示该层的输入来自于模型的上一层。

  • 1:这是重复的次数,表示这个卷积层只有一层。

  • Conv:这是该层的类型,表示这是一个卷积层。

  • [64, 3, 2]:这是一个列表,包含了卷积层的一些参数。

    • 64:这是卷积层的输出通道数。
    • 3:这是卷积核的大小,这里是3x3。
    • 2:这是卷积的步长,这里是2。

所以,[-1, 1, Conv, [64, 3, 2]]表示的是一个卷积层,它的输入来自于上一层,输出通道数为64,卷积核大小为3x3,卷积步长为2。这个卷积层不进行重复。希望这个解释对你有所帮助!

[[-1, 7], 1, Concat, [1]]是一个配置列表,用于定义YOLOv8模型中的一个Concat模块。这个列表的每个元素都有特定的含义:

所以,[[-1, 7], 1, Concat, [1]]表示的是一个Concat模块,它的输入来自于上一层和第7层,拼接的维度是通道维度,这个Concat模块不进行重复。希望这个解释对你有所帮助!

第七步:在根目录下新建一个testmodel.py粘贴下面内容:

# Ultralytics YOLO 🚀, AGPL-3.0 license

import contextlib
from copy import copy
from pathlib import Path

import cv2
import numpy as np
import pytest
import torch
from PIL import Image
from torchvision.transforms import ToTensor

from ultralytics import RTDETR, YOLO
from ultralytics.cfg import TASK2DATA
from ultralytics.data.build import load_inference_source
from ultralytics.utils import (ASSETS, DEFAULT_CFG, DEFAULT_CFG_PATH, LINUX, MACOS, ONLINE, ROOT, WEIGHTS_DIR, WINDOWS,
                               checks, is_dir_writeable)
from ultralytics.utils.downloads import download
from ultralytics.utils.torch_utils import TORCH_1_9


CFG = 'ultralytics-main/ultralytics/cfg/models/v8/myyolov8_Att_CBAM.yaml'
SOURCE = ASSETS / 'bus.jpg'


def test_model_forward():
    """Test the forward pass of the YOLO model."""
    model = YOLO(CFG)
    model(source=None, imgsz=32, augment=True)  # also test no source and augment

运行过程中可能会报错:如KeyError: 'CBAM',这是yolov8的task.py文件和cuda的不一致造成的

解决方法:复制yolov8的task.py到conda\envs\yolo_track\Lib\site-packages\ultralytics\nn,yolo_track为你的环境名字,把这里面的task.py覆盖掉即可

  • 23
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
yolov7中添加CBAM注意力机制的步骤如下: 1. 首先,在代码中的commen.py文件中添加CBAM模块的代码。 2. 然后,在yolo.py文件中添加CBAM模块的代码。 3. 接下来,在cfg文件中添加CBAM信息,包括CBAM模块的名称和相关参数。 具体实现可以参考yolov5中添加CBAM的经验,将相应的代码从yolov5中搬过来。 注意,添加注意力机制最好选在加强特征提取网络。注意力机制是一个即插即用的模块,理论上可以放置在任何一个特征层后面,包括主干网络和加强特征提取网络。然而,如果放置在主干网络中,会导致网络的预训练权重无法使用。因此,建议将注意力机制放置在加强特征提取网络中。 以上就是在yolov7中添加CBAM注意力机制的一般步骤。具体实现可以参考相关代码和视频教程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOV7改进--添加CBAM注意力机制](https://blog.csdn.net/qq_43114108/article/details/126019017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [b站B导的yoloV7版本添加注意力机制](https://blog.csdn.net/weixin_46848251/article/details/129134436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值