avatar

Catalog
再探形变卷积

前一篇博文写过关于形变卷积的部分,但是写的比较粗略,故再来分析、整理一下形变卷积相关知识。

  • 因为网络最终用的形变卷积,所以是非看不可。
  • 好读书,不求甚解。 不愧是我

初衷

适应几何变换

传统卷积卷积核是正方形,扫描不规则图形也只能用方形区域,而实际任务中,很多东西都不是规则的,例如生物、汽车等。传统卷积核无法适应比较大的变换,故提出了可以变形以适应几何变换的形变卷积。


卷积过程计算

  • 传统卷积计算

其中,p0表示输出特征图的一个点;pn则是卷积核的坐标。

  • 形变卷积计算

其中。最后加了一项delta 表示偏移量, 取值从1-N,N是卷积核尺寸。

这里P0表示输出特征图的点,之所以pn要加p0,因为是3X3卷积核,原始图片9个像素对应新特征图一个像素。

2020-8-19更新

  • 采样

此时采样的点加了一项delta, 可能是小数,因此需要用插值算法来确定采样位置,此处应用的是双线性插值来确定采样的位置,如下:

大致意思是 :先枚举输入特征图x所有的点q,用插值核G做个运算再乘以x(q).

总之这一步就是确定位置。之前看过有关书上讲解双线性采样的问题,可以用公式直接算出来,这边看的不是很明白,但是没那么重要。

从形变卷积公式可以看出,需要学习的参数有两个:卷积核的weight,偏移量Delta, 偏移量显得至关重要

  • 反向传播学习

偏移量梯度即在上述计算公式中有偏移量这一项的都计算微分。


输出特征图尺寸计算

形变卷积与普通卷积无异,输出特征图尺寸计算需要先知道卷积核大小,再根据公式来计算。卷积核大小与是否使用空洞有关系。

  • 空洞卷积卷积核尺寸计算

r 为空洞率, r=1时卷积核尺寸不变,故Pytorch nn.Conv2D 默认 dilated=1.

这里吐槽一下,看了三四个人写的博客,都说dlitated=1表示注入一个空洞,这是错的。不可信!

  • 特征图尺寸计算

把空洞卷积卷积核带进去即可。


关于卷积

理论上,卷积核感受野随着卷积层的增加而线性增加;

事实上,有效的感受野是呈高斯分布,即一个卷积核中心的区域的比较有效。

因此实际中,有效的感受野随着卷积层的增加呈平方根增加,是远远不够的。空洞卷积恰好处理这个问题。

2020.7.13更新!

FRY


2020-8-19 第二次更新

Deformable Convolution V2

可形变卷积V2版本,给原始每个偏移的采样点加入了权重,即:

​ K表示采样位置;最后多了一项每个采样像素权重的控制。

有个地方需要注意

  • V1和V2版本,Offsets 输出通道数均为2K, 因为每个点偏移需要x,y两个分量来表示,故用2个通道

  • V2版本中输出通道数为K ,每个点一个权重,故一共K个权重

Author: 星星泡饭
Link: https://luoyou.art/2020/08/19/%E5%86%8D%E6%8E%A2%E5%BD%A2%E5%8F%98%E5%8D%B7%E7%A7%AF/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶

Comment