YOLO11改进 | 模块融合 | C3k2融合Ghost+ DynamicConv 【二次融合 + 独家改进】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转


💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡


本文给大家带来的教程是将YOLO11的C3k2替换为融合结构来提取特征。文章在介绍主要的原理后,将手把手教学如何进行模块的代码添加和修改,并将修改后的完整代码放在文章的最后,方便大家一键运行,小白也可轻松上手实践。以帮助您更好地学习深度学习目标检测YOLO系列的挑战。 

专栏地址:YOLO11入门 + 改进涨点——点击即可跳转 欢迎订阅

目录

1.论文

2. C3k2_DynamicConv代码实现

2.1 将C3k2_DynamicConv添加到YOLO11中

2.2 更改init.py文件

2.3 添加yaml文件

2.4 在task.py中进行注册

2.5 执行程序

3.修改后的网络结构图

4. 完整代码分享

### C3K2网络结构中的Bottleneck 在C3K2网络结构中,瓶颈(Bottleneck)模块是一个重要的组成部分。该模块旨在减少计算量的同时保持较高的表达能力。具体来说,在YOLOv7及其变体的设计中,瓶颈模块通常由一系列卷积层组成,这些卷积层负责逐步压缩和解压特征图的空间维度。 对于C3K2而言,瓶颈设计借鉴了ResNet系列的经典做法,并进行了优化: - **输入阶段**:接收来自前一层的特征映射作为输入。 - **降维处理**:首先通过1×1卷积降低通道数至原有一半甚至更低的比例,以此达到减少后续运算负担的目的[^1]。 ```python import torch.nn as nn class Bottleneck(nn.Module): expansion = 0.5 def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): super().__init__() c_ = int(c2 * e) # 中间层通道数量 self.cv1 = nn.Conv2d(c1, c_, kernel_size=1, stride=1, padding=0) self.bn1 = nn.BatchNorm2d(c_) self.cv2 = nn.Conv2d(c_, c2, kernel_size=3, stride=1, padding=1, groups=g) self.bn2 = nn.BatchNorm2d(c2) self.act = nn.SiLU() self.add_shortcut = shortcut and c1 == c2 def forward(self, x): residual = x if self.add_shortcut else None out = self.act(self.bn1(self.cv1(x))) out = self.act(self.bn2(self.cv2(out))) if self.add_shortcut: out += residual return out ``` - **核心操作**:接着利用3×3大小的标准卷积进一步提取局部特征;此过程中可能会加入深度可分离卷积等高效机制以提升性能表现[^2]。 - **升维恢复**:最后再经由另一个1×1卷积将通道数目还原回初始状态,准备传递给下一层继续加工。 值得注意的是,为了提高效率并简化实现难度,某些版本可能省去了最后一个升维步骤,转而在其他地方做相应调整来维持整体平衡。此外,当涉及到跨尺度连接时,则会采用类似于FPN(Feature Pyramid Network)的方式来进行多级信息交互[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kay_545

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

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

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

打赏作者

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

抵扣说明:

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

余额充值