论文名称为:用于有效推理的有条件地参数化卷积。
读完摘要以后的个人想法:作者认为现在的神经网络卷积核的参数一致都保持一致而不发生变化,而作者提出的CondConv可以对每一张图片有特定的参数。作者认为自己提出的CondConv卷积一下能顶好几个卷积核的卷积,所以使用这个卷积能增加网络的大小和容量。
对于这张图的解释:对于图1(a),可以认为是输入的张量,是 ,,每个卷积核的权重,,,经过COMBINE操作得到一个新的卷积核来进行卷积,后面就是BatchNorm和ReLU。对于图1(b),与(a)不同的是这里对 ,,卷积完之后得到的结果再与ROUTE FN权重进行乘积得到结果,这样会比(a)多增加了两次卷积操作。
对于是如何计算的,下面就是每个卷积核参数权重如何计算的公式:
首先假设有n个专家,这是认为决定的。 代表输入数据格式为[C,H,W],的数据格式为[C,1,1],接下来与相乘可以理解为经过一个全连接层得到数据格式为[n,1,1]的数据,之后经过sigmoid激活函数最后得到n个权重,这样便得到了。
想法:
读这篇论文时,读的时候云里雾里,给的图片示例看的不是很懂,然后在网上找到了CondConv的pytorch实现的代码(还好比较简单,环境也正好)调试了一下,最后对这篇论文的逻辑基本顺通了。
这篇的想法是想要通过几个卷积核的线性组合来实现针对特定数据的卷积核来实现有条件的参数化卷积。但感觉可能仅靠几个卷积核的线性组合不一定能得到适合输入数据的卷积核,还有在训练的时候是不是可以考虑让每个expert代表的卷积核之间尽量不同这样每个expert组合就更有多样性。