DCN_可变形卷积_Deformable Convolutional Networks

原文链接: link.

Deformable Convolutional Networks


动机:
视觉识别中的一个关键挑战是如何在目标尺度,姿态,视点和部件变形中适应几何变化或建模几何变换。

现有方法:
1.增加现有的数据样本来实现,例如通过仿射变换。
缺点:以昂贵的训练和复杂的模型参数为代价;几何变换被假定是固定并且已知的,阻止了对具有未知几何变换的新任务的泛化能力。

2.不变特征: SIFT(尺度不变特征变换)和基于滑动窗口的目标检测。
缺点:复杂的变换可能是困难的或不可行的。

3.卷积神经网络(CNNs):大量的数据增强,一些简单的手工设计模块(最大池化可以对小的平移有不变性)
缺点: CNN模块的固定几何结构,缺乏处理几何变换的内部机制。

在这里插入图片描述
顶部:两个激活单元在顶部特征图上,在两个不同尺度和形状的物体上。激活来自于3×3滤波器。
中间:在前面的特征图上的3×3滤波器的采样位置。另外两个激活单元被高亮显示。
底部:在前面的特征图上两个级别的3×3滤波器的采样位置。突出显示的位置对应于上面突出显示的单元。
本文方法
引入了两个新的模块
在这里插入图片描述
1.可形变卷积:偏移量通过附加的卷积层从前面的特征图中学习。
因此,变形以局部的,密集的和自适应的方式受到输入特征的限制
(c)(d)是(b)的特例,表明可变形卷积泛化到了各种尺度(各向异性)、长宽比和旋转的变换
2. 可变形的RoI池化: 它为前面的RoI池化的常规bin分区中的每个bin位置添加一个偏移量。类似地,从前面的特征映射和RoI中学习偏移量,使得具有不同形状的目标能够自适应的进行部件定位

在这里插入图片描述
在这里插入图片描述
可变形卷积的流程为:

1、原始图片batch(大小为bhwc),记为U,经过一个普通卷积,卷积填充为same,即输出输入大小不变,对应的输出结果为(bhw2c),记为V,输出的结果是指原图片batch中每个像素的偏移量(x偏移与y偏移,因此为2c)。
2、将U中图片的像素索引值与V相加,得到偏移后的position(即在原始图片U中的坐标值),需要将position值限定为图片大小以内。position的大小为(bhw*2c),但position只是一个坐标值,而且还是float类型的,我们需要这些float类型的坐标值获取像素。
3、例,取一个坐标值(a,b),将其转换为四个整数,floor(a), ceil(a), floor(b), ceil(b),将这四个整数进行整合,得到四对坐标(floor(a),floor(b)), ((floor(a),ceil(b)), ((ceil(a),floor(b)), ((ceil(a),ceil(b))。这四对坐标每个坐标都对应U中的一个像素值,而我们需要得到(a,b)的像素值,这里采用双线性差值的方式计算(一方面得到的像素准确,另一方面可以进行反向传播)。
4、在得到position的所有像素后,即得到了一个新图片M,将这个新图片M作为输入数据输入到别的层中,如普通卷积。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其实所谓的learning offset,这个思想在faster RCNN中已经用过了,这个针对每一个像素的receptive field得到一个offset,而faster RCNN是对每一个anchor box得到offset,意思是一样的,就是input大小不一样罢了。为什么会偏移向目标呢,原因参与到训练中,这样的输入可以使得loss变小,因此offset就是往loss变小的方向偏移。这个思想在Mask RCNN中得到了进一步优化,

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值