首页 > 其他分享 >YOLOv8 with Attention 注意力机制

YOLOv8 with Attention 注意力机制

时间:2024-07-14 20:56:39浏览次数:5  
标签:places nn self Attention expansion YOLOv8 模块 注意力 out

本文来源于:YOLOv8-AM: YOLOv8 with Attention Mechanisms for Pediatric Wrist Fracture Detection
代码:github

总的结构图,可以看到注意力机制模块被加载在neck部分,在upsample、C2f之后。
在这里插入图片描述
相比yolov8的模型配置文件,根据以上结构图,在每次upsanple、C2f模块后,添加了注意力机制。
其中[-1, 1, ShuffleAttention, [512]]参数含义为 :
“-1” :使用前一层的输出作为输入;
“1” :重复一次;
“ShuffleAttention”:注意力机制模块;
“[512]” :注意力机制模块的参数,和前一层的输出通道数一致,也可以有多个参数,根据模块要求配置。
最后,修改相应的detect head的输入的层编号为[17, 21, 25]。
在这里插入图片描述
下面需要修改相应的代码,让模型能加载注意力机制模块。
在这里插入图片描述
1.如果把注意力机制模块的代码放在了“ultralytics/nn/modules/conv.py” 中,那么就要修改__init__.py ,import 相应的模块。
在这里插入图片描述
在解析yaml配置文件,构建模型的时候,需要修改“ultralytics/nn/tasks.py” ,在开头import 相应模块。
在这里插入图片描述
然后修改parse_model函数,
在这里插入图片描述
构建模型后,可以看到已经添加了ShuffleAttention模块。
在这里插入图片描述
根据作者的实验结果,ResBlock_CBAM取得了较好的效果,并且推理时间只增加了1ms。
在这里插入图片描述

class ResBlock_CBAM(nn.Module):
    def __init__(self, in_places, places, stride=1, downsampling=False, expansion=1):
        super(ResBlock_CBAM, self).__init__()
        self.expansion = expansion
        self.downsampling = downsampling

        self.bottleneck = nn.Sequential(
            nn.Conv2d(in_channels=in_places, out_channels=places, kernel_size=1, stride=1, bias=False),
            nn.BatchNorm2d(places),
            nn.LeakyReLU(0.1, inplace=True),
            nn.Conv2d(in_channels=places, out_channels=places, kernel_size=3, stride=stride, padding=1, bias=False),
            nn.BatchNorm2d(places),
            nn.LeakyReLU(0.1, inplace=True),
            nn.Conv2d(in_channels=places, out_channels=places * self.expansion, kernel_size=1, stride=1,
                      bias=False),
            nn.BatchNorm2d(places * self.expansion),
        )
        # self.cbam = CBAM(c1=places * self.expansion, c2=places * self.expansion, )
        self.cbam = CBAM(c1=places * self.expansion)

        if self.downsampling:
            self.downsample = nn.Sequential(
                nn.Conv2d(in_channels=in_places, out_channels=places * self.expansion, kernel_size=1, stride=stride,
                          bias=False),
                nn.BatchNorm2d(places * self.expansion)
            )
        self.relu = nn.ReLU(inplace=True)

    def forward(self, x):
        residual = x
        out = self.bottleneck(x)
        out = self.cbam(out)
        if self.downsampling:
            residual = self.downsample(x)

        out += residual
        out = self.relu(out)
        return out

更多的注意力机制模块可以参考CNN中的注意力机制

标签:places,nn,self,Attention,expansion,YOLOv8,模块,注意力,out
From: https://blog.csdn.net/zhilaizhiwang/article/details/140301801

相关文章

  • YOLOv8中根据标签绘制真实框
    这个在写论文的过程中获取展示图片的时侯可能会需要用的。最近也是自己在弄目标检测方面的东西,然后这也是自己碰到的问题,想着能分享一下,希望对有需要的人有所帮助。也欢迎大家来讨论问题、交流心得。importcv2importos#定义输入文件夹和输出文件夹路径input_img_folder......
  • Transformer模型:intra-attention mask实现
    前言    这是对Transformer模型WordEmbedding、PostionEmbedding、Encoderself-attentionmask内容的续篇。视频链接:20、Transformer模型Decoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili文章链接:Transformer模型:WordEmbedding实现-CSDN博客     ......
  • Lookback Lens:用注意力图检测和减轻llm的幻觉
    在总结文章或回答给定段落的问题时,大语言模型可能会产生幻觉,并会根据给定的上下文回答不准确或未经证实的细节,这也被称为情境幻觉。为了解决这个问题,这篇论文的作者提出了一个简单的幻觉检测模型,其输入特征由上下文的注意力权重与新生成的令牌(每个注意头)的比例给出。它被......
  • Transformer模型:Encoder的self-attention mask实现
    前言         这是对Transformer模型的WordEmbedding、PostionEmbedding内容的续篇。视频链接:19、Transformer模型Encoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili文章链接:Transformer模型:WordEmbedding实现-CSDN博客          Transf......
  • 【CPO-TCN-BiGRU-Attention回归预测】基于冠豪猪算法CPO优化时间卷积双向门控循环单元
    %数据准备%假设有一个输入变量X和一个目标变量Y%假设数据已经存储在X和Y中,每个变量为列向量%参数设置inputWindowSize=10;%输入窗口大小outputWindowSize=1;%输出窗口大小numFeatures=1;%输入变量的数量numFilters=32;%TCN中的滤波器数......
  • yolov8_pytorch目标检测和图像分割深度学习模型
    yolov8论文无模型结构yolov8是一种单阶段目标检测算法,该算法在YOLOV5的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。算法原理YOLOv8算法通过将图像划分为不同大小的网格,预测每个网格中的目标类别和边界框,利用特征金字塔结构和自适应的模型缩放......
  • FlashAttention/ PagedAttention原理,大模型加速
    1.1GPU硬件特点由于FlashAttention计算self-attention的主要关键是有效的硬件使用,所以了解GPU内存和各种操作的性能特征是很有必要的。以A100(40GBHBM)为例,下面显示其内存层次结构的粗略图。SRAM内存分布在108个流式多处理器(SMs)上,每个处理器192KB。片上SRAM比......
  • Lookback Lens:用注意力图检测和减轻llm的幻觉
    在总结文章或回答给定段落的问题时,大语言模型可能会产生幻觉,并会根据给定的上下文回答不准确或未经证实的细节,这也被称为情境幻觉。为了解决这个问题,这篇论文的作者提出了一个简单的幻觉检测模型,其输入特征由上下文的注意力权重与新生成的令牌(每个注意头)的比例给出。它被称为回......
  • T5架构和主流llama3架构有什么区别和优缺点、transformer中encoder 和decoder的不同、
    T5架构和主流llama3架构有什么区别和优缺点T5和LLaMA是两种在自然语言处理(NLP)领域广泛应用的大型语言模型,它们在架构和应用上有显著的区别和各自的优缺点。T5架构架构特点:Encoder-Decoder结构:T5(Text-to-TextTransferTransformer)采用了经典的Encoder-DecoderTransform......
  • YOLOv10改进 | 独家创新- 注意力篇 | YOLOv10引入结合SimAM和Channel Attention形成全
    1.CSimAM介绍     CSimAM(ChannelSimAM)注意力机制结合了SimAM和通道注意力机制(ChannelAttention),在图像特征提取上展现出比单独使用SimAM更为优异的性能。以下是详细描述:     SimAM注意力机制     SimAM(SimilarityAttentionMechanism)通过计......