YOLOv9改进策略:卷积魔改 | SPD-Conv,低分辨率图像和小物体涨点明显

news/2024/7/11 1:21:09 标签: cnn, 人工智能, 目标检测, 算法, YOLO

  💡💡💡本文改进内容:SPD-Conv由一个空间到深度(SPD)层和一个无卷积步长(Conv)层组成,特别是在处理低分辨率图像和小物体等更困难的任务时。

  💡💡💡SPD-Conv在多个数据集验证能够暴力涨点,适合急需要涨点的项目

YOLOv9魔术师专栏

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

包含注意力机制魔改、卷积魔改、检测头创新、损失&IOU优化、block优化&多层特征融合、 轻量级网络设计、24年最新顶会改进思路、原创自研paper级创新等

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

✨✨✨ 新开专栏暂定免费限时开放,后续每月调价一次✨✨✨

🚀🚀🚀 本项目持续更新 | 更新完结保底≥80+ ,冲刺100+ 🚀🚀🚀

🍉🍉🍉 联系WX: AI_CV_0624 欢迎交流!🍉🍉🍉

⭐⭐⭐现更新的所有改进点抢先使用私信我,目前售价68,改进点20+个⭐⭐⭐

⭐⭐⭐专栏涨价趋势 99 ->199->259->299,越早订阅越划算⭐⭐⭐

YOLOv9魔改:注意力机制、检测头、blcok魔改、自研原创等

 YOLOv9魔术师

💡💡💡全网独家首发创新(原创),适合paper !!!

💡💡💡 2024年计算机视觉顶会创新点适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你上手魔改网络 !!!

💡💡💡重点:通过本专栏的阅读,后续你也可以设计魔改网络,在网络不同位置(Backbone、head、detect、loss等)进行魔改,实现创新!!!

 1.YOLOv9原理介绍

论文: 2402.13616.pdf (arxiv.org)

代码:GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information摘要: 如今的深度学习方法重点关注如何设计最合适的目标函数,从而使得模型的预测结果能够最接近真实情况。同时,必须设计一个适当的架构,可以帮助获取足够的信息进行预测。然而,现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。因此,YOLOv9 深入研究了数据通过深度网络传输时数据丢失的重要问题,即信息瓶颈和可逆函数。作者提出了可编程梯度信息(programmable gradient information,PGI)的概念,来应对深度网络实现多个目标所需要的各种变化。PGI 可以为目标任务计算目标函数提供完整的输入信息,从而获得可靠的梯度信息来更新网络权值。此外,研究者基于梯度路径规划设计了一种新的轻量级网络架构,即通用高效层聚合网络(Generalized Efficient Layer Aggregation Network,GELAN)。该架构证实了 PGI 可以在轻量级模型上取得优异的结果。研究者在基于 MS COCO 数据集的目标检测任务上验证所提出的 GELAN 和 PGI。结果表明,与其他 SOTA 方法相比,GELAN 仅使用传统卷积算子即可实现更好的参数利用率。对于 PGI 而言,它的适用性很强,可用于从轻型到大型的各种模型。我们可以用它来获取完整的信息,从而使从头开始训练的模型能够比使用大型数据集预训练的 SOTA 模型获得更好的结果。对比结果如图1所示。

 YOLOv9框架图

1.1 YOLOv9框架介绍

YOLOv9各个模型介绍

2.论文简介

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

github:SPD-Conv/YOLOv5-SPD at main · LabSAINT/SPD-Conv · GitHub

摘要:卷积神经网络(CNNs)在计算即使觉任务中如图像分类和目标检测等取得了显著的成功。然而,当图像分辨率较低或物体较小时,它们的性能会灾难性下降。这是由于现有CNN常见的设计体系结构中有缺陷,即使用卷积步长和/或池化层,这导致了细粒度信息的丢失和较低效的特征表示的学习。为此,我们提出了一个名为SPD-Conv的新的CNN构建块来代替每个卷积步长和每个池化层(因此完全消除了它们)。SPD-Conv由一个空间到深度(SPD)层和一个无卷积步长(Conv)层组成,可以应用于大多数CNN体系结构。我们从两个最具代表性的计算即使觉任务:目标检测和图像分类来解释这个新设计。然后,我们将SPD-Conv应用于YOLOv5和ResNet,创建了新的CNN架构,并通过经验证明,我们的方法明显优于最先进的深度学习模型,特别是在处理低分辨率图像和小物体等更困难的任务时。

1.1.  SPD- conv

SPD- conv由一个空间到深度(SPD)层和一个非跨步卷积层组成。SPD组件推广了一种(原始)图像转换技术[29]来对CNN内部和整个CNN的特征映射进行下采样:

 考虑任意大小为S × S × C1的中间特征映射X,将子特征映射序列切片为:

1.2.Yolov5-SPD网络结构图

只需更换YOLOv5 stride-2卷积层即可得到YOLOv5- SPD,用SPD-Conv构建块取代原有卷积。有7个这样的替换实例,因为YOLOv5在主干中使用5个stride-2卷积层对特征图进行25倍的下采样,在neck使用2个stride-2卷积层。在YOLOv5 neck中,每一次步长卷积后都有一个连接层;这并没有改变我们的方法,我们只是将其保持在SPD和Conv之间。

3.SPD-Conv加入到YOLOv9

3.1新建py文件,路径为models/Conv/SPDConv.py

############## space_to_depth    start  by  AI&CV  AI little monsters #######################################################

import torch
import torch.nn as nn

class space_to_depth(nn.Module):
    # Changing the dimension of the Tensor
    def __init__(self, dimension=1):
        super().__init__()
        self.d = dimension

    def forward(self, x):
        return torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1)

############## space_to_depth    EDN  by  AI&CV  AI little monsters #######################################################

3.2修改yolo.py

1)首先进行引用

from models.conv.SPDConv import space_to_depth

2)修改def parse_model(d, ch):  # model_dict, input_channels(3)

在源码基础上加入space_to_depth

        elif m is nn.BatchNorm2d:
            args = [ch[f]]

        elif m is space_to_depth:
            c2 = 4 * ch[f]

3.3 yolov9-c-SPD.yaml

⭐⭐⭐现更新的所有改进点抢先使用私信我,目前售价68,改进点20+个⭐⭐⭐

⭐⭐⭐专栏涨价趋势 99 ->199->259->299,越早订阅越划算⭐⭐⭐


http://www.niftyadmin.cn/n/5452310.html

相关文章

知识图谱推理算法综述(上):基于距离和图传播的模型

背景 知识图谱系统的建设需要工程和算法的紧密配合,在工程层面,去年蚂蚁集团联合 OpenKG 开放知识图谱社区,共同发布了工业级知识图谱语义标准 OpenSPG 并开源;算法层面,蚂蚁从知识融合,知识推理&#xff…

oslo_policy学习小结

0 公共方法 0.1 Enforcer.load_rules(self, force_reload False) #从policy_file加载policy规则 判断是否force_reload,若是,将self.use_conf设为True 调CONF.find_file寻找组件对应的policy.json,找到的话将self.policy_path设为找到的文…

windows@浏览器主页被篡改劫持@360篡改主页@广告和弹窗设置@极速版

文章目录 360篡改浏览器主页方法1锁定浏览器主页 方法2注册表修改 360广告和弹窗360极速版 小结 360篡改浏览器主页 如果您使用360,且不想卸载它,那么当你启动360后,它可能会篡改你的浏览器(比如edge)的主页start page为360早期可能是通过修改快捷方式的target等属性,但是现在…

MCGS学习——运行策略与脚本程序

语法讲解 运行策略:脚本的编程环境启动策略:在进入运行环境后首先运行的策略,只运行一次,一般完成系统初始化的处理循环策略:按照用户指定的周期时间,循环执行策略块内的内容,通常用来完成流程…

【华为OD机试】查找接口成功率最优时间段【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示, 数组中每个元素都是单位时间内失败率数值,数组中的数值为0~100的整数, 给定一个数值(…

pytorch中的torch.hub.load()

pytorch提供了torch.hub.load()函数加载模型,该方法可以从网上直接下载模型或是从本地加载模型。官方文档 torch.hub.load(repo_or_dir, model, *args, sourcegithub, trust_repoNone, force_reloadFalse, verboseTrue, skip_validationFalse, **kwargs)参数说明&a…

Java动态规划知识点(含面试大厂题和源码)

动态规划(Dynamic Programming, DP)是一种算法思想,用于解决具有重叠子问题和最优子结构特性的问题。通过将大问题划分为较小的子问题,并存储已解决子问题的结果(通常是在一个表格中)来避免重复计算&#x…

淘宝商品采集:优化商品上货流程的关键步骤

淘宝商品采集:优化商品上货流程的关键步骤 请求示例,API接口接入Anzexi58 在电子商务日益繁荣的今天,淘宝作为中国最大的网络购物平台之一,为商家提供了广阔的销售渠道。然而,如何有效地进行商品采集,并将…