Yolo系列——动态卷积

一、为什么要提出动态卷积?

为了更好的将模型部署在边端设备上,需要设计轻量级网络模型。轻量级卷积网络因其较低的运算而限制了CNN的深度(卷积层层数)和宽度(通道数),限制了模型的表达能力,使得模型性能下降。

如何在不增加网络宽度和深度的情况下增加模型的表达能力,成为待解决的问题。在CVPR2020年,动态卷积的概念被提出,它的设计初衷就是,在不显著增加模型参数量或计算复杂度的前提下,动态卷积可以提升模型在诸如分类、检测等任务上的准确率。

二、参数量、FLOPs的理解以及计算方式

参数量:指的是模型中所有需要学习的参数总和,这包括但不限于卷积层的权重、全连接层的权重以及偏置项等。参数量直接关系到模型的存储需求和训练时的内存消耗。

计算参数量的计算公式如下:
参数量=(Kh×Kw×Cin)×Cout+Cout参数量=(K_h\times K_w\times C_{in})\times C_{out}+C_{out}参数量=(Kh×Kw×Cin)×Cout+Cout
其中CinC_{in}Cin表示输入通道数,CoutC_{out}Cout表示输出通道数,Kh×KwK_h\times K_wKh×Kw表示卷积核的大小。(Kh×Kw×Cin)×Cout(K_h\times K_w\times C_{in})\times C_{out}(Kh×Kw×Cin)×Cout表示卷积核的权重参数。CoutC_{out}Cout表示偏置项的参数。

输入通道、输出通道数以及卷积数之间的关系图如下:
在这里插入图片描述

FLOPs: FLOPs衡量的是模型在进行前向传播时执行的浮点运算次数,包括加法、减法、乘法和除法等。它是评估模型运行时计算成

### 可变性卷积在YOLO中的应用 可变性卷积(Deformable Convolution),作为一种增强型卷积操作,在处理具有复杂形变的目标时表现出色。传统卷采样点的位置是固定的,而变形卷积允许这些位置偏移,从而更灵活地捕捉不同形状的对象边界[^2]。 #### 实现方式 为了支持对象检测中物体形态的变化,引入了额外的学习参数——偏置向量,该向量决定了每个滤波器内核元素相对于中心的具体位移情况。具体来说: - **标准卷积 vs. 变形卷积**:常规卷积采用均匀间隔的取样模式;相比之下,变形版本则加入了动态调整能力,使感受野可以自适应调节大小与方向。 - **双线性插值法**:当计算新坐标处的像素强度时,会运用此方法估计非整数值坐标的灰度级,确保转换过程平滑过渡而不失真。 以下是Python环境下基于PyTorch框架实现的一个简单例子: ```python import torch from torchvision.ops import deform_conv2d input_tensor = torch.randn(20, 16, 50, 32) # 输入张量尺寸(batch_size=20, channels_in=16, height=50, width=32) offsets = torch.rand(20, 2 * 3*3, 50, 32) # 偏移矩阵维度应匹配输入特征图及所需变换尺度 weight = torch.randn(33, 16, 3, 3) # 卷积核权重初始化 output = deform_conv2d(input=input_tensor, offset=offsets, weight=weight) print(output.shape) # 输出经过变形卷积后的数据结构信息 ``` 上述代码片段展示了如何定义并执行一次变形卷积运算。值得注意的是`torchvision.ops.deform_conv2d()`函数接收三个主要参数:原始图片批次、用于指导变形程度的二维偏移数组以及待施加的标准卷积核系数集。 #### 使用场景 对于像行人重识别(Pedestrian Re-ID),车辆姿态变化较大场合下的车牌定位等任务而言,由于目标本身存在显著的姿态差异或视角扭曲现象,此时利用变形卷积能有效提升模型鲁棒性和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值