一、为什么要提出动态卷积?
为了更好的将模型部署在边端设备上,需要设计轻量级网络模型。轻量级卷积网络因其较低的运算而限制了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衡量的是模型在进行前向传播时执行的浮点运算次数,包括加法、减法、乘法和除法等。它是评估模型运行时计算成