yolov10卷积层改进:基于DDWConv(空洞深度可分离卷积)的轻量化多尺度特征优化

发布时间:2026/6/8 13:19:27

yolov10卷积层改进:基于DDWConv(空洞深度可分离卷积)的轻量化多尺度特征优化 一、简介DDWConv空洞深度可分离卷积主要解决替换卷积层带来的过多额外参数开销「参数量大、感受野固定」的问题核心优势集中在零参数增长扩感受野、降参、多尺度全覆盖1.深度卷积降参DDWConv 将标准卷积拆分为Depthwise 深度卷积 Pointwise 1×1逐点卷积。Depthwise卷积设置groupsin_channels实现单通道单核独立卷积各通道特征互不干扰仅提取空间纹理特征。相比标准卷积参数量降低2.空洞卷积零增参无成本扩大感受野DDWConv 仅在深度卷积层引入空洞率d1/3/5通过间隔采样的方式扩大感受野整个过程不新增任何卷积参数、不增加计算量。区别于传统增大卷积核扩感受野的方式实现零参数成本、多尺度感受野覆盖3.1×1逐点卷积补全通道融合针对深度卷积无法跨通道交互的缺陷通过无空洞的1×1逐点卷积完成通道融合与维度变换既保留轻量化优势又弥补了深度卷积通道信息缺失的问题公式架构图代码import torch import torch.nn as nn class DDWConv(nn.Module): DDWConv Dilated空洞 DepthwiseSeparable深度可分离(DWPW) :param in_c: 输入通道 :param out_c: 输出通道 :param d: 空洞率 di ∈ [1,3,5] k固定3论文默认卷积核3×3 def __init__(self, in_c, out_c, d): super().__init__() # 1.Depthwise Conv每个通道独立卷积 Dilated空洞(仅DW加空洞) self.dw nn.Conv2d( in_channelsin_c, out_channelsin_c, kernel_size3, # k3 stride1, paddingd, # paddingd保证尺寸不变 dilationd, # 空洞只加在DW层 groupsin_c, # 单通道单核Depthwise核心 biasFalse ) # 2.Separable拆分第二步Pointwise 1×1无空洞 self.pw nn.Conv2d( in_channelsin_c, out_channelsout_c, kernel_size1, stride1, padding0, dilation1, # PW永远不加空洞 biasFalse ) self.bn nn.BatchNorm2d(out_c) self.act nn.ReLU() def forward(self, X0): # X0是输入特征输出Xi Xi self.dw(X0) Xi self.pw(Xi) Xi self.bn(Xi) Xi self.act(Xi) return Xi class MultiScale_DDW_Block(nn.Module): def __init__(self, in_c, total_out_c): super().__init__() # 通道均分3分支 c1 total_out_c // 3 c2 total_out_c // 3 c3 total_out_c - c1 - c2 # 3个DDWConv对应d1小、d3中、d5大 self.branch_d1 DDWConv(in_c, c1, d1) self.branch_d3 DDWConv(in_c, c2, d3) self.branch_d5 DDWConv(in_c, c3, d5) def forward(self, X0): # 同输入X0分别送入3个不同d的DDWConv得到X1,X2,X3 X1 self.branch_d1(X0) X2 self.branch_d3(X0) X3 self.branch_d5(X0) # 通道拼接融合 out torch.cat([X1, X2, X3], dim1) return out二、yolov10主干网络P4层修改方案对P4层的C2f中 Bottleneck 内部cv2层卷积进行替换修改后网络修改后参数和计算量修改单层的参数和计算量变化参数量下降1.5%计算量下降1.6%

相关新闻