论文提出可变形卷积帮助模型高效地学习几何变换能力,能够简单地应用到分类模型和检测模型中,思想新颖,效果显著,十分值得学习
来源:晓飞的算法工程笔记 公众号
论文: Deformable Convolutional Networks
Introduction
常规卷积操作的感受域是固定的,但不同大小的目标应该需要不同大小的感受域,甚至是不规则的感受域。为此,论文提出两个模块来使CNN具备几何变换的建模能力:
- deformable convolution,在常规的卷积中增加2D偏移值,可以将采样区域自由变形,如图1(d)。偏移值是可学习的,通过额外的卷积层获得,取决于输入的特征。
- deformable RoI pooling,为RoI pooling中的每个bin添加一个偏移值做整体的移动,能够自适应不同形状目标的局部定位。同样,偏移值是可学习的,取决于输入特征和RoI区域。
Deformable Convolutional Networks
Deformable Convolution
2D卷积包含两个步骤,首先采样输入特征的规则区域 ,然后求和采样值与权重 间的乘积,区域 由卷积核大小和膨胀(dilation)决定,如上为 、膨胀为1的卷积区域。
输出特征图 中的点 的值计算如公式1, 为 中所有采样点。
在可变性卷积中,使用偏移 将区域 的每个点进行位移,公式1转换成了公式2
由于 通常为小数,使用公式3的双线性插值计算偏移位置的值, 为双线性插值权重, 为特征图 上所有的点,
如图2所示,偏移特征图通过旁路的卷积层获得, 为主干的卷积核大小,对输入特征进行变形卷积时取偏移特征图上对应点的偏移值向量组合成完整的offsets。训练时,同时学习两条路径,对于偏移值,通过公式3进行梯度的回传。
Deformable RoI Pooling
对于输入特征图 和RoI区域 ,左上角坐标为 ,RoI pooling将区域分为 个bin,输出大小 的特征图
对于序号为 的bin,输出的计算如公式5, 为bin中的像素总数,范围为 和
类似于公式2,可变形RoI pooling采用偏移值 对bin进行整体移动,输出计算如公式6,由于 是小数,同样需要公式3和公式4进行双线性插值计算
可变形RoI pooling的逻辑如图3,偏移值通过旁路卷积层获得,旁路的输入为RoI区域池化后的特征,接一个fc层输出归一化的偏移值 ,与RoI的尺寸无关,然后根据RoI区域大小转换为偏移值 , 为预设的幅值,偏移值在RoI区域内所有channel共用,取对应的位置。
可变形PS RoI pooling遵循RFCN的全卷积理念,先用一个卷积层获得channel为 的偏移特征图,单图大小与主干的score map一样,然后通过PS RoI pooling得到归一化的偏移值 ,然后根据RoI大小转换为最终的偏移值 。在实际实现中,一般会在PS RoI Pooling后接一个输出为 全连接层,与可变形RoI pooling类似。
Deformable Convolution/RoI Pooling Backpropagation
公式2可变形卷积的偏移值 的梯度就算如公式7, 由公式4计算, 是2D的, 实际表示 和
可变形RoI pooling的偏移值计算如公式8,而归一化偏移值 则可以通过计算 的导数获得。
Understanding Deformable ConvNets
如图5所示,可变形卷积将原本固定的感受域根据目标自适应地调整,随着可变形卷积地叠加,高维像素点对应的感受域将会有很大的差异。
图6为图5中高层像素对应的低维像素的对应图,可以看到高层像素的感受域大都跟物体的位置相关。
图7为RoI区域对应的bin的位置,可以看到bin移动到了与物体更相关的位置。
Experiments
Ablation Study
表1测试了在不同的位置加入可变形卷积的效果,不同的网络的效果不一致,整体都是可以提升的。而表2则是统计了不同大小物体的平均偏移值,偏移值跟物体大小相关,而背景的偏移介于中大物体之间,说明背景需要更大的感受域进行识别。表3与空洞卷积进行了对比,更大的膨胀值能有更好的性能,说明原来的感受域太小了,而不同的任务最优的膨胀值不太一样,说明可变形卷积是有存在意义的。
如表3,可变形RoI Pooling搭配可变形卷积能够达到最优的模型。
可变形卷积只增加了少量参数量和计算耗时,说明可变形卷积是通过提升模型的几何变化能力来提高性能,而不是堆参数。
Object Detection on COCO
Conclusion
论文提出可变形卷积帮助模型高效地学习几何变换能力,能够简单地应用到分类模型和检测模型中,思想新颖,效果显著,十分值得学习
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】