可变形卷积Deformable convolution过程学习记录

可变形卷积Deformable convolution过程学习记录


首先,特征图要经过两条路径,一条学习offset,一条根据offset实现可变形卷积。

我们可以从可变形卷积的最终结果倒退整个过程。
根据论文内容,以3x3卷积为例,标准的3x3卷积核就是3x3的正方形感受野,而可变形卷积,卷积核的采样位置是“变形的”,是不固定位置的。从标准卷积到可变形卷积很明显需要一个偏移来引导卷积核采样位置去变性。如下图所示,卷积核的采样位置发生变化,但是它必须知道向哪个方向移动,这就是需要学习的offset。这也是可变形卷积的关键。
可变形卷积Deformable convolution过程学习记录_第1张图片
具体过程根据参考许多博客:
1、在得到特征图之后,在特征图上依旧使用标准3x3卷积核进行卷积。只不过卷积之后得到的特征图(论文中的offset field),它的维度除了通道数之外,其余size和卷积之前的特征图一致。但是通道数变为18,也就是2 * kernel size * kernel size,这里可以直接从代码中找到,图中的2N并不是原特征图通道数的两倍,而是卷积核采样数9的两倍18
在这里,我的理解是,首先,一个像素位置的偏移包括x偏移和y偏移(占两个通道)。也就是说,offset field 与原特征图相比,分辨率一致,所以每一个像素都能与原特征图对应。而在每一个像素点,都有18个通道,也就有9个偏移。这9个偏移应该是卷积核每个采样点的偏移。也就是卷积核的每个采样位置在每个像素点都有自己的偏移(根据特征图的各种参数暂时只能这样理解了。。)
所以在图中,offset field 画出来的那个绿色方格代表一个像素点,后面虚线指出来的,就是9个偏移,是针对3*3卷积核每个采样点位置的。
在得到offset之后就可以执行蓝色路径实现可变形卷积。

至于双线性差值以及反向传播还没仔细去看,只能先理解offset产生的大概过程了

如有错误,及时纠正。
可变形卷积Deformable convolution过程学习记录_第2张图片

你可能感兴趣的:(pytorch,深度学习,神经网络,计算机视觉,目标检测)