当前位置: 首页 > news >正文

改进YOLOv5系列:30.结合即插即用的动态卷积ODConv

在这里插入图片描述

本篇是《ODConv结构🚀》的修改 演示

使用YOLOv5网络🚀作为示范,可以无缝加入到 YOLOv7、YOLOv6、YOLOX、YOLOR、YOLOv4、Scaled_YOLOv4、YOLOv3等一系列YOLO算法模块

先把理论部分弄一下, 代码部分有空更新。

文章目录

    • 本篇是《ODConv结构🚀》的修改 演示
    • 1.ODConv模型理论部分
    • Experiments
    • 2.在YOLOv5中使用ODConv模块🚀
      • 新增YOLOv5的yaml配置文件
      • common.py配置
      • yolo.py配置
      • 训练yolov5_ODConv模型

1.ODConv模型理论部分

论文参考:Paper

请添加图片描述
在每个卷积层中学习单个静态卷积核是现代卷积神经网络 (CNN) 的常见训练范式。相反,最近对动态卷积的研究表明,学习n使用依赖于输入的注意力加权的卷积核可以显着提高轻量级 CNN 的准确性,同时保持有效的推理。然而,我们观察到现有的工作通过内核空间的一维(关于卷积核数)赋予卷积核动态属性,但其他三个维度(关于空间大小、输入通道数和输出通道数)每个卷积核)都被忽略了。受此启发,我们提出了全维动态卷积(ODConv),一种更通用但更优雅的动态卷积设计,以推进这一研究方向。ODConv 利用一种新颖的多维注意力机制和并行策略,在任何卷积层沿内核空间的所有四个维度学习卷积内核的互补注意力。作为常规卷积的直接替代品,ODConv 可以插入到许多 CNN 架构中。在 ImageNet 和 MS-COCO 数据集上的大量实验表明,ODConv 为各种流行的 CNN 主干网(包括轻量级和大型主干网)带来了可靠的准确度提升,例如,3.77%5.71%|1.86%3.72% 的绝对 top-1 改进MobivleNetV2|ImageNet 数据集上的 ResNet 系列。有趣的是,由于其改进的特征学习能力,即使只有一个内核的 ODConv 也可以与现有的具有多个内核的动态卷积对应物竞争或优于现有的动态卷积对应物,从而大大减少了额外的参数。

在这里插入图片描述
(a) DyConv (CondConv 使用 GAP+FC+Sigmoid) 和 (b) ODConv 的示意图比较。与计算单个注意力标量的 CondConv 和 DyConv 不同对于卷积核, ODConv 利用一种新颖的多维注意力机制来计算四种类型的注意力,和为了以并行方式沿着内核空间的所有四个维度。
在这里插入图片描述将 ODConv 中的四种注意力逐步乘以卷积核的图示。(a) 沿空间维度的位置乘法运算,(b) 沿输入通道维度的通道乘法运算,© 沿输出通道维度的滤波器乘法运算,以及 (d) 内核乘法运算沿着卷积核空间的核维度。

Experiments

请添加图片描述
请添加图片描述

2.在YOLOv5中使用ODConv模块🚀

使用YOLOv5算法🚀作为演示,模块可以无缝插入到YOLOv7、YOLOv5、YOLOv4、Scaled_YOLOv4、YOLOv3、YOLOR等一系列YOLO算法中

新增YOLOv5的yaml配置文件

首先增加以下yolov5_ODConv.yaml文件,作为改进演示

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters

common.py配置

在./models/common.py文件中增加以下模块,直接复制即可


yolo.py配置

然后找到./models/yolo.py文件下里的parse_model函数,将类名加入进去
在 models/yolo.py文件夹下

  • parse_model函数中
  • for i, (f, n, m, args) in enumerate(d['backbone'] + d['head']):内部
  • 对应位置 下方只需要增加 RepVGGBlock模块

参考代码


训练yolov5_ODConv模型

python train.py --cfg yolov5_ODConv.yaml

相关文章:

  • MYSQL介绍——数据库查询
  • PySnooper – 永远不要使用print进行调试
  • 【PTA】输出学生成绩
  • 数据结构栈的使用——马踏棋盘
  • 网络知识之跨区域网络的通信
  • C#三层架构
  • 动态内存开辟(上)
  • 【云原生】阿里云容器镜像服务产品ACR EE之国内外场景应用模拟
  • html之网页结构
  • 手把手教你使用LabVIEW人工智能视觉工具包快速实现传统Opencv算子的调用(含源码)
  • Python小知识点
  • 目标检测 YOLOv5 - 最新版本v6.2模型在瑞芯微 Rockchip设备上运行的方案
  • Android 项目必备(三十)-->从 0 到 1 开发一个属于自己的 App
  • led灯珠型号及使用参数
  • MYSQL介绍——数据库的增删改及常用函数
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • JDK9: 集成 Jshell 和 Maven 项目.
  • LintCode 31. partitionArray 数组划分
  • miaov-React 最佳入门
  • Mysql优化
  • ReactNative开发常用的三方模块
  • React系列之 Redux 架构模式
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • windows-nginx-https-本地配置
  • Xmanager 远程桌面 CentOS 7
  • 爱情 北京女病人
  • 大快搜索数据爬虫技术实例安装教学篇
  • 前端相关框架总和
  • 如何利用MongoDB打造TOP榜小程序
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 白色的风信子
  • #NOIP 2014# day.2 T2 寻找道路
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C语言)字符分类函数
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (八)Spring源码解析:Spring MVC
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转载)OpenStack Hacker养成指南
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET多线程执行函数
  • .NET中 MVC 工厂模式浅析
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • @KafkaListener注解详解(一)| 常用参数详解
  • @RequestParam,@RequestBody和@PathVariable 区别