IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> YOLOv5、v7改进之三十五:引入S2-MLPv2注意力机制 -> 正文阅读

[人工智能]YOLOv5、v7改进之三十五:引入S2-MLPv2注意力机制

前 言:作为当前先进的深度学习目标检测算法YOLOv7,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv7的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程项目的朋友需要达到更好的效果提供自己的微薄帮助和参考。由于出到YOLOv7,YOLOv5算法2020年至今已经涌现出大量改进论文,这个不论对于搞科研的同学或者已经工作的朋友来说,研究的价值和新颖度都不太够了,为与时俱进,以后改进算法以YOLOv7为基础,此前YOLOv5改进方法在YOLOv7同样适用,所以继续YOLOv5系列改进的序号。另外改进方法在YOLOv5等其他算法同样可以适用进行改进。希望能够对大家有帮助。

具体改进办法请关注后私信留言!关注后回复“领取资料”即可免费领取目标检测算法学习资料!

解决问题:之前改进增加了很多注意力机制的方法,包括比较常规的SE、CBAM等,本文加入基于MLP的注意力机制,该注意力机制了保留通道和空间方面的信息以增强跨维度交互的重要性。因此,我们提出了一种全局调度机制,通过减少信息缩减和放大全局交互表示来提高深度神经网络的性能,提高检测效果。

基本原理:

与CNN和视觉变换器相比,基于MLP的视觉架构具有较小的感应偏差,在图像识别方面具有竞争力。其中,空间移位MLP(S2-MLP)采用直接的空间移位操作,比MLP混频器和ResMLP等先驱作品取得了更好的性能。最近,使用具有金字塔结构的较小补丁,Vision Permutator(ViP)和Global Filter Network(GFNet)实现了比S2-MLP更好的性能。改进了S2-MLP视觉主干。我们沿着通道维度展开特征地图,并将展开的特征地图拆分为几个部分。我们对分离部件进行不同的空间移位操作。同时,我们利用分割注意力操作来融合这些分割部分。此外,与计数器部件一样,我们采用较小规模的补丁并使用金字塔结构来提高图像识别精度。我们将改进的空间移位MLP视觉主干称为S2-MLPv2。使用55M参数,我们的中尺度模型S2-MLPv2 medium在ImageNet-1K基准上使用224×224张图像,在没有自我注意和外部训练数据的情况下,达到83.6%的top-1精度。

? ? ? ? ? 与现有类MLP方法的比较。在表中,我们将S2-MLPv2与现有的MLP样主干进行了比较,包括MLP混合器(Tolstikhin等人,2021)、EAMLP(Guo等人,2021)、ResMLP(Touvron等人,2021a)、gMLP(Liu等人,2021a)、S2 MLP deep(Yu等人,2021)、CCS-MLP(Yu等,2021b)、GFNet(Rao等,2021b)、AS-MLP,CycleMLP(Chen 7等人,2021a)和ViP(Hou等人,2021)在小型和基础设置上。其中,MLP Mixer、ResMLP、gMLP、S2-MLP、CCS-MLP没有利用金字塔结构,因此与GFNet、AS-MLP、CycleMLP和ViP相比,它们无法实现具有竞争性的识别精度,如表2所示。同时,如表所示,我们的S2-MLPv2在中小型环境中使用相当数量的参数,始终优于同类产品。同时,我们的中等模型的性能甚至优于AS-MLP(Lian等人,2021)、CycleMLP(Chen等人,2021a)和ViP(Hou等人,2021)的大模型,其参数要多得多。另一方面,我们注意到,与GFNet、AS-MLP和CycleMLP相比,S2-MLPv2和ViP都采用了更多的FLOP。这是因为我们和ViP使用非常粗糙的金字塔结构,而GFNet、AS-MLP、CycleMLP使用更高级的金字塔结构。S2-MLPv2和ViP都可能通过使用设计良好的金字塔结构(如GFNet、AS-MLP、CycleMLP)来降低FLOP。。

?添加方法:

第一步:确定添加的位置,作为即插即用的注意力模块,可以添加到YOLOv5网络中的任何地方。

第二步:common.py构建模块。部分代码如下,关注文章末尾,私信后领取。

class SAttention(nn.Module):

    def __init__(self, channels=512 ):
        super().__init__()
        self.mlp1 = nn.Linear(channels,channels*3)
        self.mlp2 = nn.Linear(channels,channels)
        self.split_attention = SplitAttention()

    def forward(self, x):
        b,c,w,h = x.size()
        x=x.permute(0,2,3,1)
        x = self.mlp1(x)
        x1 = spatial_shift1(x[:,:,:,:c])
        x2 = spatial_shift2(x[:,:,:,c:c*2])
        x3 = x[:,:,:,c*2:]
        x_all=torch.stack([x1,x2,x3],1)
        a = self.split_attention(x_all)
        x = self.mlp2(a)
        x=x.permute(0,3,1,2)
        return x

第三步:yolo.py中注册SAttention模块

elif m is S2Attention:
    c1, c2 = ch[f], args[0]
    if c2 != no:
        c2 = make_divisible(c2 * gw, 8)

第四步:修改yaml文件,本文以修改backbone为例,将原C3模块后加入该模块。

backbone:
  # [from, number, module, args]               # [c=channels,module,kernlsize,strides]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2           [c=3,64*0.5=32,3]
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4    
   [-1, 3, C3, [128]],                                
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8            
   [-1, 6, C3, [256]],                         
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16       
   [-1, 9, C3, [512]],                     
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]], 
   [-1, 1,  SAttention, [1024]], #9
   [-1, 1, SPPF, [1024,5]], #10
  ]

第五步:将train.py中改为本文的yaml文件即可,开始训练。

结 果:本人在遥感数据集上进行实验,有涨点效果。需要请关注留言。

预告一下:下一篇内容将继续分享深度学习算法相关改进方法。有兴趣的朋友可以关注一下我,有问题可以留言或者私聊我哦

PS:该方法不仅仅是适用改进YOLOv5,也可以改进其他的YOLO网络以及目标检测网络,比如YOLOv7、v6、v4、v3,Faster rcnn ,ssd等。

最后,有需要的请关注私信我吧。关注后回复“领取资料”即可免费领取目标检测算法学习资料!

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:15:35  更:2022-10-22 21:18:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:46:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码