首页 > 其他分享 >爆改YOLOv8 | yolov8添加CBAM注意力机制

爆改YOLOv8 | yolov8添加CBAM注意力机制

时间:2024-08-15 16:27:07浏览次数:14  
标签:__ kernel nn CBAM self yolov8 爆改 size

1,.本文介绍

CBAM的主要思想是通过关注重要的特征并抑制不必要的特征来增强网络的表示能力。模块首先应用通道注意力,关注"重要的"特征,然后应用空间注意力,关注这些特征的"重要位置"。通过这种方式,CBAM有效地帮助网络聚焦于图像中的关键信息,提高了特征的表示力度.

以下为CBAM结构图

关于CBAM的详细介绍可以看论文:https://openaccess.thecvf.com/content_ECCV_2018/papers/Sanghyun_Woo_Convolutional_Block_Attention_ECCV_2018_paper.pdf

本文将讲解如何将GAM融合进yolov8

话不多说,上代码!

2,将CBAM融和入YOLOv8

具体步骤可参考:上一篇文章:爆改YOLOv8 | yolov8添加GAM注意力机制-CSDN博客

CBAM核心代码:

import torch
import torch.nn as nn
 

__all__ = (
    "CBAM",
)
class ChannelAttention(nn.Module):
    """Channel-attention module https://github.com/open-mmlab/mmdetection/tree/v3.0.0rc1/configs/rtmdet."""
 
    def __init__(self, channels: int) -> None:
        """Initializes the class and sets the basic configurations and instance variables required."""
        super().__init__()
        self.pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Conv2d(channels, channels, 1, 1, 0, bias=True)
        self.act = nn.Sigmoid()
 
    def forward(self, x: torch.Tensor) -> torch.Tensor:
        """Applies forward pass using activation on convolutions of the input, optionally using batch normalization."""
        return x * self.act(self.fc(self.pool(x)))
 
 
class SpatialAttention(nn.Module):
    """Spatial-attention module."""
 
    def __init__(self, kernel_size=7):
        """Initialize Spatial-attention module with kernel size argument."""
        super().__init__()
        assert kernel_size in (3, 7), "kernel size must be 3 or 7"
        padding = 3 if kernel_size == 7 else 1
        self.cv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False)
        self.act = nn.Sigmoid()
 
    def forward(self, x):
        """Apply channel and spatial attention on input for feature recalibration."""
        return x * self.act(self.cv1(torch.cat([torch.mean(x, 1, keepdim=True), torch.max(x, 1, keepdim=True)[0]], 1)))
 
 
class CBAM(nn.Module):
    """Convolutional Block Attention Module."""
 
    def __init__(self, c1, kernel_size=7):
        """Initialize CBAM with given input channel (c1) and kernel size."""
        super().__init__()
        self.channel_attention = ChannelAttention(c1)
        self.spatial_attention = SpatialAttention(kernel_size)
 
    def forward(self, x):
        """Applies the forward pass through C1 module."""
        return self.spatial_attention(self.channel_attention(x))

yaml文件:

# Ultralytics YOLO 

标签:__,kernel,nn,CBAM,self,yolov8,爆改,size
From: https://blog.csdn.net/weixin_43986124/article/details/141225136

相关文章

  • windows下yolov8训练环境配置
    安装anaconda3condacreate-nyolov8python=3.8##进入yolov8虚拟环境activateyolov8pipinstallultralyticscondainstallchardet安装pytorch、cudahttps://pytorch.org/get-started/locally/condainstallpytorchtorchvisiontorchaudiopytorch-cuda=11.......
  • yolov8模型转为onnx后的推理测试(分为两个py文件)
    点击查看代码importtorchfromultralytics.utilsimportASSETS,yaml_loadfromultralytics.utils.checksimportcheck_requirements,check_yamlimportnumpyasnpimportcv2importonnxruntimeasortclassYOLOv8:"""YOLOv8objectdetectionm......
  • YOLOv8改进系列,YOLOv8添加EMA注意力机制,并与C2f融合
    原文摘要在各种计算机视觉任务中,通道或空间注意力机制在生成更具辨识度的特征表示方面表现出显著的效果。然而,通过通道维度减少来建模跨通道关系可能会在提取深度视觉表示时带来副作用。本文提出了一种新颖的高效多尺度注意力(EMA)模块。该模块重点在于保留每个通道的信息......
  • YOLOv8改进系列,YOLOv8替换主干网络为MobileNetV2(轻量化架构+助力涨点)
    原论文摘要MobileNetV2架构在多个任务和基准测试中提高了移动模型的最先进性能,并在不同的模型规模中表现出色。我们还介绍了在一种我们称之为SSDLite的新框架中应用这些移动模型进行目标检测的高效方法。MobileNetV2理论详解可以参考链接:论文地址本文在YOLOv8中的主干......
  • YOLOv8开源揭秘:AI视觉技术在智能设备与系统全景应用
    目录一、引言二、YOLOv8模型简介三、YOLOv8的功能特性四、YOLOv8应用场景五、代码示例示例一:对图像进行目标检测示例二:对视频进行目标检测示例三:批量处理图像文件夹示例四:自定义模型进行目标检测示例五:实时摄像头目标检测示例六:获取目标检测的详细信息六、结语一......
  • 基于yolov8进行目标识别的文件部署步骤
    1 yolov8模型简介YOLOv8(YouOnlyLookOnceversion8)是YOLO(YouOnlyLookOnce)系列模型的最新版本,延续了YOLO系列的实时目标检测方法。YOLOv8在架构、训练过程和性能方面做了多项改进,旨在提升检测精度和速度。以下是YOLOv8的主要特点和改进:1.改进的网络架构:  -YOLO......
  • YOLOv8改进 | 主干网络 | 用EfficientNet卷积替换backbone【教程+代码 】
     秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......
  • YOLO系列:从yolov1至yolov8的进阶之路 持续更新中
    一、基本概念1.YOLO简介YOLO(YouOnlyLookOnce):是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。2.目标检测算法RCNN:该系列算法实现主要为两个步骤:先从图片中搜索出一些可能存在对象的候选区(SelectiveSearch),大概2000个左右;然后......
  • YoloV8改进策略:注意力机制改进|全局与局部注意力融合(AFF)|即插即用
    摘要在深度学习和计算机视觉领域,YoloV8以其卓越的性能和实时检测能力而广受赞誉。为了进一步提升YoloV8的检测精度和泛化能力,我们创新性地在其核心Bottleneck模块中引入了注意力特征融合(AFF)机制。这一改进不仅实现了即插即用的便捷性,还显著提升了模型的表现,为YoloV8注入了......
  • yolov8 face 错误修改
    derronqi/yolov8-face:yolov8facedetectionwithlandmark(github.com) 问题:训练yolov8-lite-s,yolov8-lite-t的时候会出错,Cannotuseyolov8-lite-s·Issue#3·derronqi/yolov8-face(github.com)TypeError:conv2d()receivedaninvalidcombinationofargument......