YOLOv11改进 | Conv/卷积篇 | 利用ModulatedDeformConv二次创新C3k2(降低网络层数 + 计算量)

一、本文介绍

本文给大家带来的改进机制是ModulatedDeformConv来替换我们模型的下采样操作,同时含二次创新C3k2机制,其主要思想是通过引入可学习的空间偏移量,实现感受野的动态调整,增强卷积神经网络对图像中几何变换的适应能力。不同于其它的Conv这种可变形Conv主要就是通过学习下采样的位置来进行提高检测精度,但是这种方法可以减少计算量,网络层数所以这个方法还是比较推荐大家在自己数据集上尝试一下的,能够减少网络层数的机制不多。

欢迎大家订阅我的专栏一起学习YOLO!    

训练信息1:YOLO11-C3k2-MDConv-1 summary: 315 layers, 2,616,209 parameters, 2,616,193 gradients, 6.4 GFLOPs
训练信息2:YOLO11-C3k2-MDConv-2 summary: 314 layers, 2,668,612 parameters, 2,668,596 gradients, 6.4 GFLOPs
训练信息3:YOLO11-MDConv summary: 313 layers, 2,718,804 parameters, 2,718,788 gradients, 5.4 GFLOPs
基础版本:YOLO11 summary: 319 layers, 2,591,010 parameters, 2,590,994 gradients, 6.4 GFLOPs

专栏回顾:YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备


目录

一、本文介绍

二、原理介绍

三、核心代码 

四、手把手教你添加本文机制 

4.1 修改一

4.2 修改二 

4.3 修改三 

4.4 修改四 

五、正式训练

5.1 yaml文件1

### YOLOv11 和 C3K2改进方法与实现细节 #### 一、YOLOv11 中的改进概述 YOLOv11 是一种基于卷积神经网络的目标检测算法,在其基础上引入多种优化策略可以进一步提升性能。其中,C3k2 结构和 EffectiveSE 卷积模块被广泛应用于模型结构设计中以增强特征提取能力。 通过融合 **EffectiveSE-Convolutional** 模块[^1],可以在不显著增加计算量的情况下提高模型的感受野并加强通道间的依赖关系。这种改进主要体现在以下几个方面: - **感受野扩展**:通过调整卷积核大小以及堆叠多层轻量化卷积操作来扩大有效感受野。 - **注意力机制应用**:利用 Squeeze-and-Excitation (SE) 技术调节不同通道的重要性权重,从而突出关键区域的信息。 ```python import torch.nn as nn class EffectiveSELayer(nn.Module): """ Effective Squeeze-Excite """ def __init__(self, channels, act_layer=nn.ReLU): super(EffectiveSELayer, self).__init__() self.fc = nn.Conv2d(channels, channels, kernel_size=1, padding=0) self.act = act_layer() def forward(self, x): x_se = x.mean((2, 3), keepdim=True) x_se = self.fc(x_se) return x * self.act(x_se).sigmoid() ``` 上述代码展示了如何构建一个简单的 Efficient SE 层用于后续集成至主干网路之中。 --- #### 二、C3k2_EffectiveSE 添加到 YOLOv11 的具体过程 为了将 C3k2_EffectiveSE 集成进 YOLOv11 架构内部,需完成如下几个核心环节的操作说明: 1. 替代原有基础组件中的标准卷积单元; 2. 修改配置文件定义新的连接逻辑路径; 3. 更新训练脚本支持新增加的功能特性参设置。 以下是部分 Python 实现片段展示如何自定义 C3k2_EffectiveSE 类型节点实例化流程: ```python def conv_bn(in_channels, out_channels, kernel_size, stride, padding, groups=1): result = nn.Sequential() result.add_module('conv', nn.Conv2d( in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding, groups=groups, bias=False)) result.add_module('bn', nn.BatchNorm2d(num_features=out_channels)) return result class C3k2_EffectiveSEBlock(nn.Module): expansion = 1 def __init__(self, inplanes, planes, stride=1, downsample=None): super(C3k2_EffectiveSEBlock, self).__init__() norm_layer = nn.BatchNorm2d self.conv1 = conv_bn(inplanes, planes, kernel_size=1, stride=1, padding=0) self.conv2 = conv_bn(planes, planes, kernel_size=3, stride=stride, padding=1, groups=planes) self.se = EffectiveSELayer(planes) self.conv3 = conv_bn(planes, planes * self.expansion, kernel_size=1, stride=1, padding=0) self.relu = nn.ReLU(inplace=True) self.downsample = downsample self.stride = stride def forward(self, x): identity = x out = self.conv1(x) out = self.conv2(out) out = self.se(out) out = self.conv3(out) if self.downsample is not None: identity = self.downsample(x) out += identity out = self.relu(out) return out ``` 此段落描述了创建一个新的复合残差块 `C3k2_EffectiveSEBlock` ,它集成了常规卷积运算同有效的挤压激励功能于一体。 --- #### 三、SAconv 模块在 YOLOv11 上的应用分析 除了前述提到的技术手段外,《YOLOv11 改进 [CONV]》文章还介绍了另一种名为 Spatial Attention Convolution (SAconv)[^2] 的创新思路。该技术旨在捕捉空间维度上的上下文关联模式,进而改善边界框预测精度水平。 下面给出一段关于 SAconv 初始化函的设计样例: ```python class SAConv2d(nn.Module): def __init__(self, in_planes, out_planes, kernel_size=(7, 7)): super(SAConv2d, self).__init__() assert isinstance(kernel_size, tuple) self.kernel_size = kernel_size pad_x = int((kernel_size[0]-1)/2) pad_y = int((kernel_size[1]-1)/2) self.spatial_attention_conv = nn.Conv2d( in_planes, out_planes, kernel_size=self.kernel_size, stride=1, padding=(pad_x,pad_y), bias=False ) def forward(self, input_tensor): spatial_atten_map = self.spatial_attention_conv(input_tensor) output_feature_maps = input_tensor * spatial_atten_map.sigmoid() return output_feature_maps ``` 这里实现了带有空间注意力建模特性的二维卷积算子类对象构造器及其前向传播行为定义。 --- ### 总结 综上所述,针对 YOLOv11 及其组成部分 C3k2 进行针对性改造可以从多个角度出发考虑实施途径。一方面借助于 EffectiveSE 提升局部敏感度;另一方面采用 SAconv 增强全局视野感知力均能取得不错的效果表现。实际项目开发过程中可根据需求灵活选用合适方案加以实践验证效果差异情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Snu77

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值