YOLOV8模型改进-添加CBAM注意力机制

1.CBAM介绍

CBAM注意力机制是yolov8自带的注意力机制,它是通道注意模块和空间注意模块的结合。

2.查看CBAM在yolov8中的位置

路径:ultralytics/nn/modules/conv.py

3.添加CBAM

1.首先打开tasks.py文件:ultralytics/nn/modules/tasks.py

2.在导入里面添加CBAM

3.在tasks.py文件里面添加代码

复制以下代码添加到tasks.py的指定位置

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

4.修改配置文件

1.首先找到yolov8.yaml文件的位置

ultralytics/cfg/models/v8/yolov8.yaml

2.然后复制yolov8.yaml到同级文件夹,并取名叫yolov8-cbam.yaml

然后在网络结构里面添加CBAM模块

5.测试修改之后的模型前向传播是否成功

1.找到test/test_python.py文件

复制下面这段代码

2.在根目录下新建一个py文件,取名叫cbam-test

然后将上面复制的代码粘贴进去,再删除不必要的部分,将CFG的值设置为刚刚修改过模型的yaml文件路径

# 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.utils import ASSETS, DEFAULT_CFG, LINUX, MACOS, ONLINE, ROOT, SETTINGS, WINDOWS


CFG = 'ultralytics/cfg/models/v8/yolov8-cbam.yaml'
SOURCE = ASSETS / 'bus.jpg'

def test_model_forward():
    model = YOLO(CFG)
    model(SOURCE)  # also test no source and augment

3.运行cbam-test.py文件,看前向传播是否通过

这就是修改通过的提示。

如果添加失败,最后面有报错原因

6.遇到的报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x98 in position 1158: illegal multibyte sequence

1.报错原因:

这应该是windows10特有的问题,因为win10的默认编码方式为utf-8,而Python读入文本文件的默认编码方式为`gbk`

2.解决方案

1.在环境变量里面新建系统变量

2.然后重启电脑,问题解决。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值