【YOLOv8改进 - 卷积Conv】DCNv3: 可变形卷积,结合稀疏注意力机制与卷积的创新算子

YOLOv8目标检测创新改进与实战案例专栏

专栏目录: YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLOv8基础解析+创新改进+实战案例

介绍

image-20240725100945813

摘要

与近年来大规模视觉Transformer (ViTs) 的巨大进步相比,基于卷积神经网络 (CNNs) 的大规模模型仍处于早期阶段。本工作提出了一种新的大规模基于CNN的基础模型,称为InternImage,它能够像ViTs一样,通过增加参数和训练数据来获得提升。与最近关注大密度卷积核的CNNs不同,InternImage以可变形卷积作为核心运算符,因此我们的模型不仅具有下游任务(如检测和分割)所需的大有效感受野,还具有根据输入和任务信息自适应的空间聚合能力。结果是,所提出的InternImage减少了传统CNNs的严格归纳偏差,使其能够从大规模参数和海量数据中学习更强大、更鲁棒的模式,类似于ViTs。我们模型的有效性在包括ImageNet、COCO和ADE20K在内的挑战性基准上得到了验证。值得一提的是,InternImage-H在COCO test-dev上达到了新的记录65.4 mAP,在ADE20K上达到了62.9 mIoU,超越了当前领先的CNNs和ViTs。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

  1. 借鉴了可分离卷积的思想,将原始卷积权重 w k w_k w
### 集成和使用 Deformable Convolution v2 (DCNv2) 在 YOLOv5 #### 安装依赖库 为了在YOLOv5中集成并使用Deformable Convolution v2 (DCNv2),首先需要安装必要的依赖项。这可以通过克隆特定的GitHub仓库来完成,该仓库包含了实现DCNv2所需的源码[^2]。 ```bash git clone https://gitcode.com/gh_mirrors/py/PyTorch-Deformable-Convolution-v2 dcnv2 cd dcnv2 python setup.py install ``` #### 修改YOLOv5模型定义文件 接下来,在YOLOv5中的`models/yolov5s.yaml`或其他相应的网络配置文件里引入支持DCNv2的新层定义。具体来说,可以在backbone部分指定某些卷积层替换为带有偏移量学习机制的变形卷积操作[^1]。 对于想要应用DCNv2的具体位置,通常会选择在网络较深的地方或是特征融合模块之前的位置进行增强处理。这是因为随着网络加深,普通固定核难以捕捉到复杂的空间关系;而通过自适应调整感受野形状大小的方式,则有助于提高检测精度[^4]。 #### 编写自定义层代码 根据实际需求编写或修改Python脚本以创建新的类继承自nn.Module,并重载forward函数用于执行DCNv2计算逻辑。下面是一个简单的例子: ```python import torch.nn as nn from torchvision.ops import deform_conv2d class DCNV2(nn.Module): def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, padding=1, dilation=1, groups=1, bias=True): super(DCNV2, self).__init__() self.offset_conv = nn.Conv2d(in_channels, 2 * kernel_size ** 2, kernel_size=kernel_size, stride=stride, padding=padding, bias=bias) self.dcnv2 = deform_conv2d.DeformConv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=(kernel_size,kernel_size), stride=stride, padding=padding, dilation=dilation, groups=groups, bias=False if not bias else True) def forward(self,x): offset = self.offset_conv(x) output = self.dcnv2(input=x,offset=offset) return output ``` 此段代码展示了如何构建一个基于torchvision版本deform_conv2d包下的DCNV2类实例化对象。 #### 更新训练流程 最后一步是在训练过程中启用新加入的功能。确保数据加载器、损失函数以及优化算法都已正确设置好之后,就可以开始尝试不同参数组合下含有DCNv2组件后的YOLOv5性能表现了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YOLO大师

你的打赏,我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值