【YOLOv8改进】CoordAttention: 用于移动端的高效坐标注意力机制 (论文笔记+引入代码)

简介: 该专栏聚焦YOLO目标检测的创新改进与实战,介绍了一种新的移动网络注意力机制——坐标注意力。它将位置信息融入通道注意力,通过1D特征编码处理,捕获长距离依赖并保持位置精度。生成的注意力图能增强目标表示,适用于MobileNetV2、MobileNeXt和EfficientNet等网络,提高性能,且几乎不增加计算成本。在ImageNet分类和下游任务(目标检测、语义分割)中表现出色。YOLOv8中引入了CoordAtt模块,实现位置敏感的注意力。更多详情及配置见相关链接。

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

摘要

摘要

近期的移动网络设计研究显示,通道注意力(例如,压缩-激励注意力)在提升模型性能方面具有显著效果,但它们通常忽略了位置信息,而这对于生成空间选择性的注意力图是非常重要的。在本文中,我们通过将位置信息嵌入到通道注意力中,提出了一种用于移动网络的新型注意力机制,我们称之为“坐标注意力”。与通过2D全局池化将特征张量转换为单个特征向量的通道注意力不同,坐标注意力将通道注意力分解为沿两个空间方向分别聚合特征的两个1D特征编码过程。通过这种方式,可以沿一个空间方向捕获长距离依赖,同时沿另一个空间方向保留精确的位置信息。然后,所得到的特征图被分别编码为一对方向感知和位置敏感的注意力图,这两种图可以互补地应用于输入特征图,以增强感兴趣对象的表示。我们的坐标注意力简单且可以灵活地嵌入到经典的移动网络中,如MobileNetV2、MobileNeXt和EfficientNet,几乎不增加计算开销。广泛的实验表明,我们的坐标注意力不仅对ImageNet分类有益,更有趣的是,在下游任务中,如目标检测和语义分割,表现得更好。

创新点

  1. 将位置信息嵌入到通道注意力中,提升了移动网络设计的性能。
  2. 通过两个1D特征编码过程聚合沿着两个空间方向的特征,捕获长距离依赖性,并保留精确的位置信息。
  3. 生成方向感知和位置敏感的注意力图,可以应用于输入特征图,增强感兴趣对象的表示。
  4. 简单易用,几乎不增加计算开销,并且可以灵活地插入经典的移动网络结构。
  5. 在ImageNet分类以及目标检测和语义分割等下游任务中表现出更好的性能。

yolov8 引入


 class CoordAtt(nn.Module):
    def __init__(self, inp, oup, reduction=32):
        super(CoordAtt, self).__init__()
        self.pool_h = nn.AdaptiveAvgPool2d((None, 1))
        self.pool_w = nn.AdaptiveAvgPool2d((1, None))

        mip = max(8, inp // reduction)

        self.conv1 = nn.Conv2d(inp, mip, kernel_size=1, stride=1, padding=0)
        self.bn1 = nn.BatchNorm2d(mip)
        self.act = h_swish()

        self.conv_h = nn.Conv2d(mip, oup, kernel_size=1, stride=1, padding=0)
        self.conv_w = nn.Conv2d(mip, oup, kernel_size=1, stride=1, padding=0)


    def forward(self, x):
        identity = x

        n,c,h,w = x.size()
        x_h = self.pool_h(x)
        x_w = self.pool_w(x).permute(0, 1, 3, 2)

        y = torch.cat([x_h, x_w], dim=2)
        y = self.conv1(y)
        y = self.bn1(y)
        y = self.act(y) 

        x_h, x_w = torch.split(y, [h, w], dim=2)
        x_w = x_w.permute(0, 1, 3, 2)

        a_h = self.conv_h(x_h).sigmoid()
        a_w = self.conv_w(x_w).sigmoid()

        out = identity * a_w * a_h

        return out

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/136824282

相关文章
|
1月前
|
机器学习/深度学习 Java 网络架构
YOLOv5改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)
YOLOv5改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)
218 0
|
29天前
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】MobileViT 更换主干网络: 轻量级、通用且适合移动设备的视觉变压器 (论文笔记+引入代码)
MobileViT是针对移动设备的轻量级视觉Transformer网络,结合CNN的局部特征、Transformer的全局注意力和ViT的表示学习。在ImageNet-1k上,它以600万参数实现78.4%的top-1准确率,超越MobileNetv3和DeiT。MobileViT不仅适用于图像分类,还在目标检测等任务中表现出色,且优化简单,代码已开源。YOLOv8引入了MobileViT块,整合卷积和Transformer结构,提升模型性能。更多详情可参考相关专栏和链接。
|
29天前
|
计算机视觉 网络架构
【YOLOv8改进】MSBlock : 分层特征融合策略 (论文笔记+引入代码)
YOLO-MS是一个创新的实时目标检测器,通过多尺度构建块(MS-Block)和异构Kernel选择(HKS)协议提升多尺度特征表示能力。它在不依赖预训练权重和大型数据集的情况下,在MS COCO上超越了YOLO-v7和RTMDet,例如YOLO-MS XS版本(4.5M参数,8.7G FLOPs)达到了43%+的AP,比RTMDet高2%+。MS-Block利用分层特征融合和不同大小的卷积,而HKS协议根据网络深度调整Kernel大小,优化多尺度语义信息捕获。此外,YOLO-MS的模块化设计允许其作为即插即用的组件集成到其他YOLO模型中,提升它们的检测性能。
|
29天前
|
计算机视觉
【YOLOv8改进】 AFPN :渐进特征金字塔网络 (论文笔记+引入代码).md
YOLO目标检测专栏介绍了YOLO的有效改进和实战案例,包括AFPN——一种解决特征金字塔网络信息丢失问题的新方法。AFPN通过非相邻层直接融合和自适应空间融合处理多尺度特征,提高检测性能。此外,还展示了YOLOv8中引入的MPDIoU和ASFF模块的代码实现。详情可参考提供的专栏链接。
|
29天前
|
机器学习/深度学习 存储 测试技术
【YOLOv8改进】 YOLOv8 更换骨干网络之 GhostNet :通过低成本操作获得更多特征 (论文笔记+引入代码).md
YOLO目标检测专栏探讨了卷积神经网络的创新改进,如Ghost模块,它通过低成本运算生成更多特征图,降低资源消耗,适用于嵌入式设备。GhostNet利用Ghost模块实现轻量级架构,性能超越MobileNetV3。此外,文章还介绍了SegNeXt,一个高效卷积注意力网络,提升语义分割性能,参数少但效果优于EfficientNet-L2。专栏提供YOLO相关基础解析、改进方法和实战案例。
|
16天前
|
机器学习/深度学习 计算机视觉
【保姆级教程|YOLOv8添加注意力机制】【2】在C2f结构中添加ShuffleAttention注意力机制并训练
【保姆级教程|YOLOv8添加注意力机制】【2】在C2f结构中添加ShuffleAttention注意力机制并训练
|
16天前
|
机器学习/深度学习
【保姆级教程|YOLOv8添加注意力机制】【1】添加SEAttention注意力机制步骤详解、训练及推理使用
【保姆级教程|YOLOv8添加注意力机制】【1】添加SEAttention注意力机制步骤详解、训练及推理使用
|
27天前
|
计算机视觉 机器学习/深度学习 自然语言处理
【YOLOv8改进】CoTAttention:上下文转换器注意力(论文笔记+引入代码)
本文介绍了YOLO目标检测的创新改进,提出了一种名为Contextual Transformer (CoT)块的新型Transformer模块,用于增强视觉识别能力。CoT块通过3×3卷积编码上下文信息,并结合动态多头注意力矩阵,提高了视觉表示。此外,还提到了Large Separable Kernel Attention (LSKA)模块,它解决了大内核卷积的计算效率问题。CoTNet是基于CoT模块的Transformer风格骨干网络,可替代ResNet中的3×3卷积。CoTAttention类展示了如何在YOLOv8中集成此模块。文章还提供了源码链接和更多实战案例详情。
|
1月前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进 | 注意力机制 | 添加全局注意力机制 GcNet【附代码+小白必备】
本文介绍了如何在YOLOv8中集成GcNet,以增强网络对全局上下文的捕获能力。GcNet通过全局上下文模块、通道和空间注意力机制提升CNN对全局信息的利用。教程详细阐述了GcNet的原理,并提供了将GcNet添加到YOLOv8的代码实现步骤,包括创建ContextBlock类、修改init.py、task.py以及配置yaml文件。此外,还提供了训练和运行示例代码。完整代码和更多进阶内容可在作者的博客中找到。
|
1月前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8 | 卷积模块 | 提高网络的灵活性和表征能力的动态卷积【附代码+小白可上手】
本教程介绍了如何在YOLOv8中使用动态卷积提升网络性能和灵活性。动态卷积利用注意力机制动态选择和组合卷积核,适应输入数据特征,解决了轻量级CNN的局限。文中提供了详细步骤教读者如何添加和修改代码,包括在`conv.py`中添加`Dynamic_conv2d`模块,更新`init.py`、`task.py`和`yaml`配置文件。此外,还分享了完整代码和进阶技巧,帮助深度学习初学者实践目标检测。参考[YOLOv8改进](https://blog.csdn.net/m0_67647321/category_12548649.html)专栏获取更多详情。