前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YOLOv8优化策略:SENet v2,Squeeze-Excitation模块融合Dense Layer,效果秒杀SENet | 2023.11月最新成果

YOLOv8优化策略:SENet v2,Squeeze-Excitation模块融合Dense Layer,效果秒杀SENet | 2023.11月最新成果

原创
作者头像
AI小怪兽
修改2023-12-06 09:28:56
6930
修改2023-12-06 09:28:56
举报
文章被收录于专栏:YOLO大作战YOLO大作战

本文自研创新改进SENet v2,针对SENet主要优化点,提出新颖的多分支Dense Layer,并与Squeeze-Excitation网络模块高效融合,融合增强了网络捕获通道模式和全局知识的能力

1.SENetV2

?

论文:https://arxiv.org/pdf/2311.10807v1.pdf

摘要:卷积神经网络(CNNs)通过提取空间特征,实现了图像分类的颠覆性突破,在基于视觉的任务中达到了最先进的准确率。在通道维度增加注意力机制,关键操作是squeeze和excitation。多层感知机(MLP)从数据中学习全局表示,并在大多数图像分类模型中用于学习提取的图像特征。在本文中,作者介绍了一种新颖的聚合多层感知机,一种多分支Dense Layer,位于Squeeze Excitation Residual模块内,旨在超越现有架构的表现。作者的方法利用了Squeeze-Excitation网络模块与Dense Layer相结合。这种融合增强了网络捕获通道模式和全局知识的能力,从而导致更好的特征表示。与SENet相比,所提出的模型在参数数量上的增加可以忽略不计。作者在基准数据集上进行了大量的实验,以验证模型并将其与已建立的架构进行比较。实验结果表明,所提出的模型的分类准确率显著提高。

SENet通过 Squeeze-Excitation操作增强了通道表示,从而增强了其表达能力。通道特征通过应用Squeeze输入进行重新校准。所提出的模块中的Excitation部分涉及一个全连接层,用于捕获全局表示。这种专门模块确保只有最重要的特征被传递到后续层。当这种独特的模块设计在像ResNet这样的网络中,特别是在残差模块中,其影响会加剧,实质上作为网络的过滤机制,就像SE ResNet所看到的那样

?

1.1 SENet

SE注意力机制(Squeeze-and-Excitation Networks)在通道维度增加注意力机制,关键操作是squeeze和excitation。

通过自动学习的方式,即使用另外一个新的神经网络,获取到特征图的每个通道的重要程度,然后用这个重要程度去给每个特征赋予一个权重值,从而让神经网络重点关注某些特征通道。提升对当前任务有用的特征图的通道,并抑制对当前任务用处不大的特征通道。

如下图所示,在输入SE注意力机制之前(左侧白图C2),特征图的每个通道的重要程度都是一样的,通过SENet之后(右侧彩图C2),不同颜色代表不同的权重,使每个特征通道的重要性变得不一样了,使神经网络重点关注某些权重值大的通道。

2 SENetV2引入到YOLOv8

2.1 SENetV2加入ultralytics/nn/attention/se_v2.py

核心代码:

代码语言:javascript
复制


# 定义SE模块
class SELayer(nn.Module):
    def __init__(self, channel, reduction=16):
        super(SELayer, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, channel, bias=False),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        return x * y.expand_as(x)

2.2 yolov8_se_v2.yaml

代码语言:javascript
复制
# Ultralytics YOLO ?, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect

# Parameters
nc: 80  # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.33, 0.25, 1024]  # YOLOv8n summary: 225 layers,  3157200 parameters,  3157184 gradients,   8.9 GFLOPs
  s: [0.33, 0.50, 1024]  # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPs
  m: [0.67, 0.75, 768]   # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients,  79.3 GFLOPs
  l: [1.00, 1.00, 512]   # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPs
  x: [1.00, 1.25, 512]   # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs

# YOLOv8.0n backbone
backbone:
  # [from, repeats, module, args]
  - [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2
  - [-1, 1, Conv, [128, 3, 2]]  # 1-P2/4
  - [-1, 3, C2f, [128, True]]
  - [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8
  - [-1, 6, C2f, [256, True]]
  - [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16
  - [-1, 6, C2f, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32
  - [-1, 3, C2f, [1024, True]]
  - [-1, 1, SPPF, [1024, 5]]  # 9
  - [-1, 1, se_v2, [1024]]  # 10

# YOLOv8.0n head
head:
  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 6], 1, Concat, [1]]  # cat backbone P4
  - [-1, 3, C2f, [512]]  # 13

  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 4], 1, Concat, [1]]  # cat backbone P3
  - [-1, 3, C2f, [256]]  # 16 (P3/8-small)

  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 13], 1, Concat, [1]]  # cat head P4
  - [-1, 3, C2f, [512]]  # 19 (P4/16-medium)

  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 10], 1, Concat, [1]]  # cat head P5
  - [-1, 3, C2f, [1024]]  # 22 (P5/32-large)

  - [[16, 19, 22], 1, Detect, [nc]]  # Detect(P3, P4, P5)

by CSDN AI小怪兽

https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.SENetV2
    • 1.1 SENet
    • 2 SENetV2引入到YOLOv8
      • 2.1 SENetV2加入ultralytics/nn/attention/se_v2.py
        • 2.2 yolov8_se_v2.yaml
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com