首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >YOLOv8优化:一种新颖的可扩张残差(DWR)注意力模块,增强多尺度感受野特征,助力小目标检测

YOLOv8优化:一种新颖的可扩张残差(DWR)注意力模块,增强多尺度感受野特征,助力小目标检测

原创
作者头像
AI小怪兽
发布2023-11-07 09:28:32
发布2023-11-07 09:28:32
2.7K0
举报
文章被收录于专栏:YOLO大作战YOLO大作战

💡💡💡本文全网首发独家改进:一种新颖的可扩张残差(DWR)注意力模块,加强不同尺度特征提取能力,创新十足,独家首发适合科研

1)结合C2f进行使用;

推荐指数:五星

DWR| 亲测在多个数据集能够实现涨点,多尺度特性在小目标检测表现也十分出色。

1.DWR介绍

论文: https://arxiv.org/pdf/2212.01173.pdf

摘要:当前的许多工作直接采用多速率深度扩张卷积从一个输入特征图中同时捕获多尺度上下文信息,从而提高实时语义分割的特征提取效率。 然而,这种设计可能会因为结构和超参数的不合理而导致多尺度上下文信息的访问困难。 为了降低绘制多尺度上下文信息的难度,我们提出了一种高效的多尺度特征提取方法,该方法分解了原始的单步特征提取方法方法分为两个步骤,区域残差-语义残差。 在该方法中,多速率深度扩张卷积在特征提取中发挥更简单的作用:根据第一步提供的每个简明区域形式特征图,在第二步中使用一个所需的感受野执行简单的基于语义的形态过滤 一步,提高他们的效率。 此外,扩张率和扩张卷积的容量每个网络阶段都经过精心设计,以充分利用所有可以实现的区域形式的特征图。 因此,我们分别为高层和低层网络设计了一种新颖的扩张式残差(DWR)模块和简单倒置残差(SIR)模块,并形成了强大的DWR分段(DWRSeg)网络。 对 Cityscapes 和 CamVid 数据集的大量实验表明除了重量更轻之外,我们的方法还通过在准确性和推理速度之间实现最先进的权衡来提高其有效性。 在不进行预训练或采用任何训练技巧的情况下,我们在 Cityscapes 测试集上以 319.5 FPS 的速度在一张 NVIDIA GeForce GTX 1080 Ti 卡上实现了 72.7% 的 mIoU,超过了最新方法的 69.5 FPS 和 0.8% mIOU。

本文贡献:

  1. 基于网络高层中不同尺度的感知场提取特征的Dilation-wise Residual(DWR)模块;
  2. Simple Inverted Residual(SIR)模块,其使用反向瓶颈结构来从low stage提取特征;
  3. 用于聚集多尺度特征图以生成预测的简单全卷积网络(FCN)类解码器。

  • 首先,引入了一个Dilation-wise Residual(DWR)模块,用于提取网络高层的特征,如图2a所示。多分支结构用于扩展感受野,其中每个分支采用不同空洞率的空洞深度卷积。
  • 然后,专门设计了一个Simple Inverted Residual(SIR)模块来提取网络低层的特征,如图2b所示。该模块仅具有3×3的微小感受野,但使用inverted bottleneck式结构来扩展通道数量,确保更强的特征提取能力。
  • 最后,基于DWR和SIR模块,构建了一个编码器-解码器风格的网络DWRSeg,其中解码器采用了简单的类似FCN的结构。解码器使用来自最后两个阶段的强语义信息直接对特征图进行上采样,然后将它们与来自较低阶段的特征图(包含丰富的详细信息)拼接起来,以进行最终预测。

2.DWR加入 YOLOv8

2.1 DWR加入ultralytics/nn/attention/DWR.py

核心代码:

代码语言:javascript
复制
class DWR(nn.Module):
    def __init__(self, dim) -> None:
        super().__init__()

        self.conv_3x3 = Conv(dim, dim // 2, 3)
        
        self.conv_3x3_d1 = Conv(dim // 2, dim, 3, d=1)
        self.conv_3x3_d3 = Conv(dim // 2, dim // 2, 3, d=3)
        self.conv_3x3_d5 = Conv(dim // 2, dim // 2, 3, d=5)
        
        self.conv_1x1 = Conv(dim * 2, dim, k=1)
        
    def forward(self, x):
        conv_3x3 = self.conv_3x3(x)
        x1, x2, x3 = self.conv_3x3_d1(conv_3x3), self.conv_3x3_d3(conv_3x3), self.conv_3x3_d5(conv_3x3)
        x_out = torch.cat([x1, x2, x3], dim=1)
        x_out = self.conv_1x1(x_out) + x
        return x_out

获取代码关注私信

详见:

https://blog.csdn.net/m0_63774211/article/details/134217457

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.DWR加入 YOLOv8
    • 2.1 DWR加入ultralytics/nn/attention/DWR.py
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档