YOLOv7改进之二十二:涨点神器——引入递归门控卷积(gnConv)

2023-11-07

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

解决问题:YOLOv7主干特征提取网络为CNN网络,CNN具有平移不变性和局部性,缺乏全局建模长距离建模的能力,引入自然语言处理领域的框架Transformer来形成CNN+Transformer架构,充分两者的优点,提高目标检测效果,本人经过实验,对小目标以及密集预测任务会有一定的提升效果。视觉 Transformers 的最新进展在基于点积 self-attention 的新空间建模机制驱动的各种任务中取得了巨大成功。递归门控卷积(gnConv),它通过门控卷积和递归设计执行高阶空间交互。新操作具有高度的灵活性和可定制性,它兼容各种卷积变体,并将自注意力中的二阶交互扩​​展到任意阶,而不会引入大量额外的计算。gnConv 可以作为一个即插即用的模块来改进各种视觉 Transformer 和基于卷积的模型。Transformer方法融合参考YOLOv5改进往期。

YOLOv5改进之十七:CNN+Transformer——融合Bottleneck Transformers_人工智能算法研究院的博客-CSDN博客

原理:

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

代码:GitHub - raoyongming/HorNet: HorNet: Efficient High-Order Spatial Interactions with Recursive Gated Convolutions

视觉变形金刚的最新进展在各种任务中都取得了巨大的成功由基于点积自注意力的新空间建模机制驱动。在本文中,我们展示了愿景变形金刚背后的关键要素,即输入自适应、长程和高阶空间交互,也可以使用基于卷积的框架有效地实现。我们提出递归门控卷积(gnConv),它通过门控卷积和递归设计执行高阶空间交互。新的操作高度灵活可定制,兼容各种卷积变体并将 self-attention 中的二阶交互扩​​展到任意阶,而无需引入大量额外的计算。 GnConv 可以作为即插即用模块来改进各种视觉变压器和基于卷积的模型。基于该操作,我们构建了一个新的通用视觉骨干家族
命名为 HorNet。 ImageNet分类、COCO对象的大量实验检测和 ADE20K 语义分割显示 HorNet 优于 Swin Transformers 和 ConvNeXt 具有相似的整体架构和训练配置。 HorNet 还显示出良好的可扩展性更多的训练数据和更大的模型大小。除了视觉编码器的有效性之外,我们还展示了 gnConv 可以应用于特定任务的解码器和以更少的计算持续提高密集预测性能。我们的结果表明,gnConv 可以成为可视化建模的新基础模块它有效地结合了视觉 Transformer 和 CNN 的优点

 项目部分代码如下:

class gnconv(nn.Module):
    def __init__(self, dim, order=5, gflayer=None, h=14, w=8, s=1.0):
        super().__init__()
        self.order = order
        self.dims = [dim // 2 ** i for i in range(order)]
        self.dims.reverse()
        self.proj_in = nn.Conv2d(dim, 2*dim, 1)

        if gflayer is None:
            self.dwconv = get_dwconv(sum(self.dims), 7, True)
        else:
            self.dwconv = gflayer(sum(self.dims), h=h, w=w)
        
        self.proj_out = nn.Conv2d(dim, dim, 1)

        self.pws = nn.ModuleList(
            [nn.Conv2d(self.dims[i], self.dims[i+1], 1) for i in range(order-1)]
        )

        self.scale = s
        print('[gnconv]', order, 'order with dims=', self.dims, 'scale=%.4f'%self.scale)

结 果:本人在多个数据集上做了大量实验,针对不同的数据集效果不同,涨点明显。

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

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

最后,希望能互粉一下,做个朋友,一起学习交流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YOLOv7改进之二十二:涨点神器——引入递归门控卷积(gnConv) 的相关文章

随机推荐

  • KMP算法详解

    目录 一 KMP是什么 二 原理 1 思路 2 预处理 3 借助nxt实现字符串匹配 总结 一 KMP是什么 烤馍片KMP算法是一种改进的字符串匹配算法 由D E Knuth J H Morris和V R Pratt提出的 因此人们称它为克
  • labelme汉化的app.py完整代码

    由于之前做了一期labelme的教程 但是汉化部分的代码有误 于是在这里贴出完整的app py代码 coding utf 8 import functools import math import os import os path as
  • scrapy错误-[scrapy.core.scraper] ERROR: Spider error processing

    一 问题 就是我的callback没得回调函数 二 然后我查看源代码 发现 三 我把解析页数的函数名设置为 def parse self response 就没保错了 能运行成功 总结 在spider的 init py文件的源代码下 设置了
  • 什么是HTML? 看这一篇就够了(附带主流IDE推荐)

    1 HTML简介 1 1 HTML是什么 百度词条 HTML称为超文本标记语言 是一种标识性的语言 它包括一系列标签 通过这些标签可以将网络上的文档格式统一 使分散的Internet资源连接为一个逻辑整体 HTML文本是由HTML命令组成的
  • 第十九篇:处理僵尸进程的两种经典方法

    前言 如果父进程没有结束 而子进程终止了 那么在父进程调用 wait 函数回收这个子进程或者父进程终止以前 这个子进程将一直是僵尸进程 本文将提供两种方法处理这个问题 方法一 父进程回收法 wait函数将使其调用者阻塞 直到其某个子进程终止
  • 伺服电机的三种控制方式与三闭环控制

    项目 FPGA双电机主从快速稳定控制实现 第一章 伺服电机的三种控制方式与三闭环控制 伺服电机的三种控制方式与三闭环控制 项目 FPGA双电机主从快速稳定控制实现 前言 一 电机控制方式 二 电机三个闭环负反馈PID控制系统 三 三闭环位置
  • GLUE基准数据集介绍

    图1 整篇文章的思维导图 一 简介 自然语言处理 NLP 主要自然语言理解 NLU 和自然语言生成 NLG 为了让NLU任务发挥最大的作用 来自纽约大学 华盛顿大学等机构创建了一个多任务的自然语言理解基准和分析平台 也就是GLUE Gene
  • 完美解决dataframe添加列,并且指定列的位置

    需求是这样的 我需要从原始表中提取几列数据 分别填入税表的人员和收入表中 原始表中只有 姓名 身份证号码 年金领取额是有效数据 但是税务局的模板表中有一大堆莫名其妙的字段不需要填写 先把原始表定义一下 把身份证字符串一下 再把需要的人员 收
  • Spark整理

    文章目录 1 概述 1 1 Spark 和 Hadoop 组成 1 2 Spark 和 Hadoop 区别 2 Spark 运行架构 2 1 基础架构 2 2 Master Worker Standalone模式 2 3 Applicati
  • 如何给VScode安装clang(C language)插件

    前言 1 本篇经验专门为 使用VScode开发c语言项目的学生和工程师而写 2 安装了clang C language 插件的VScode编辑器 补全功能将更加智能 正文 首先你得先安装vscode软件 安装教程请参考下链接 对于本人就不费
  • STC15单片机——定时/计数器2、3、4

    STC15单片机拥有5个定时器 分别为定时器0 1 2 3 4 本文章将记录定时器2 3 4所使用的寄存器 以及注意事项 由于STC15单片机定时器的使用于传统51单片机类似 这里仅标出应用所需的j寄存器 以及对陌生位的相关说明 其他不作过
  • 2020年下一个创业风口是什么?

    提到风口 大家总是兴致勃勃 满心期待的看完一个风口项目后 剩下的不是去选择执行 而是继续问道 还有其它的风口项目吗 所以 在我看来 对于大多数人而言 风口就是继续追问 没完没了的问还有其它的吗 今年没有抓住风口 告诉自己 不能灰心 明年拜菩
  • 支持向量机(SVM)

    SVM简介 SVM Support Vector Machine 它是一种二分类模型 其基本模型定义为特征空间上的间隔最大的线性分类器 其学习策略便是间隔最大化 最终可转化为一个凸二次规划问题的求解 这里涉及了几个概念 二分类模型 线性分类
  • 去除百度推广等广告的插件神器

    给大家推荐一款去除百度推广的神器 包括右边 及右下角弹出的广告 1 搜索ADblock进入官网https adblockplus org 点击 安装到chrome 弹出提示框点击 添加扩展程序 2 重新打开网址 你会发现之前的广告都消失了
  • 微信小程序开发一个小型商城(四、商品列表)

    上一篇文章 微信小程序开发一个小型商城 三 商品分类设计 在从上一个界面跳转过来 会看到商品列表这个界面 如下图所示 页面分析 从上到下 分别是一个已经定义好的自定义组件 下面的综合 销量 也是一个自定义组件 下面商品的一个个的小框框就是一
  • postgresql安装配置和基本操作

    1 安装 linux上安装 最好是centos7 6或者7 8 参考官网 PGSQL的官方地址 PostgreSQL The world s most advanced open source database PGSQL的国内社区 Pos
  • 【ElasticSearch】查询报错JsonpMappingException

    ElasticSearch查询报错JsonpMappingException 具体报错信息如下 co elastic clients json JsonpMappingException Error deserializing co ela
  • ajax+同步+返回数据库,如何使AJAX同步

    异常是我需要从数据库中立即返回的数据 不过 我需要 连续代码 来等待Id被返回 最好的办法是不要让这种情况发生 而是要接受事件驱动的 基于浏览器和网络编程的异步性质 非常小的选项是强制ajax请求同步 目前 在jQuery 1 x中 您可以
  • Unity 动态打图集并完成小Demo的实现

    为什么要动态打图集 比如在英雄联盟中的选择英雄界面 有很多的图标供我们选择 而我们进入游戏之后只需要选择的那两三个图标而已 这是如果我们将所有图标都打成图集 就造成内存浪费 因为我们只需要两三个而已 那么我们有什么办法让我们只将要用到的图标
  • YOLOv7改进之二十二:涨点神器——引入递归门控卷积(gnConv)

    前 言 作为当前先进的深度学习目标检测算法YOLOv7 已经集合了大量的trick 但是还是有提高和改进的空间 针对具体应用场景下的检测难点 可以不同的改进方法 此后的系列文章 将重点对YOLOv7的如何改进进行详细的介绍 目的是为了给那些