deformable convolutional networks
来源:互联网 发布:数据挖掘的案例分析 编辑:程序博客网 时间:2024/05/22 09:50
转自:点击打开链接
上一篇我们介绍了:深度学习方法(十二):卷积神经网络结构变化——Spatial Transformer Networks,STN创造性地在CNN结构中装入了一个可学习的仿射变换,目的是增加CNN的旋转、平移、缩放、剪裁性。为什么要做这个很奇怪的结构呢?原因还是因为CNN不够鲁棒,比如把一张图片颠倒一下,可能就不认识了(这里mark一下,提高CNN的泛化能力,值得继续花很大力气,STN是一个思路,读者以及我自己应该多想想,还有什么方法?)。
今天介绍的这一篇可变形卷积网络deformable convolutional networks,也算是在STN之后的一个新的变换——STN是说CNN Kernel放死了(比如3*3大小),但是可以通过图片变换让CNN效果更好;而deformable是说既然图片可能各种情况,那我索性CNN的Kernel本身是不规整的,比如可以有dilation,也可以旋转的,或者看起来完全没有规则的。如下图,(a)是常规的一个3*3卷积窗口,(b)蓝色点就是原来的卷积窗口加上了一个offset的情况,(c)表示可以对进行窗口进行scale和aspect ratio的变换,(d)表示旋转;
论文引入了两种新的模块来提高卷积神经网络 (CNN) 对变换的建模能力:可变形卷积 (deformable convolution) 和可变形兴趣区域池化 (deformable ROI pooling),下面逐一介绍。
(1)可变形卷积 Deformable Convolution
图1 可变性卷积示意图
先看传统卷积的一个定义:
R代表一个receptive field的grid:
对于输出中每一个像素position P0,一般的卷积就是
而可变形卷积做的是:
再看图1,把原来的卷积过程分成两路,上面一路学习offset
就是这样简单吗?其实还相差一点,原因是
实际上做的就是找到小数的p所在的图像4像素grid,然后做双线性插值。上面公式这样写了以后可以和STN(参考上一篇)中做法一样,就通过BP端到端来训练了。
(2)可变形兴趣区域池化 Deformable RoI Pooling
思路和前面一样,一路学习offset,一路得到真正的pooling结果。
区别在于用的是FC,原因是ROI pooling之后的结果是固定大小的k*k,直接用FC得到k *k个offset。但是这些offset不能直接用,因为ROI区域大小不一,并且input feature map的w和h也是大小不一。作者提出的方法是用一个scale r:
下面是roi pooling原来的公式(用的是average?这个比较奇怪,一般都是用max的,当然按照这个逻辑,max pooling也很容易推出)
有了offset之后就可以这样做:
和前面一样,因为offset是带小数的,不能直接得到像素,需要用双线性插值算法得到每一个像素值。注意,这里的offset只有k*k个,而不是每一个像素一个。
实验结果
下面贴一些实验说明图,看起来有点道理,有点聚焦的意思:
这张图蛮难看懂的,论文也没有细讲,网上还没有详细分析的资料,我谈下我的理解,希望对读者有帮助,如果有不对的欢迎指正——做3*3卷积的时候,对任意一个像素(绿点)都会有9个offset,然后在三层带deformable的卷积中,就会通过叠乘效应产生9*9*9=729个offset坐标,然后画在图上。可以看到聚焦的目标周围。
图6是ROI pooling的结果,可以看到3*3个bin都偏向了目标周围,而避免了矩形框的backgroud影响,这个还是蛮有道理的。
结果看这个deformable的插件可以用在很多地方,效果也都还OK。
回过头细想一下,其实所谓的learning offset,这个思想在faster RCNN中已经用过了,这个针对每一个像素的receptive field得到一个offset,而faster RCNN是对每一个anchor box得到offset,意思是一样的,就是input大小不一样罢了。为什么会偏移向目标呢,原因参与到训练中,这样的输入可以使得loss变小,因此offset就是往loss变小的方向偏移。这个思想在另外一个最新的工作Mask RCNN(作者He Kaiming)中得到了进一步优化,后面有机会总结目标检测算法的时候,再具体展开,有兴趣的读者可以去看看,我当是先抛砖引玉了。
其它几个介绍deformable convolutional networks的链接:
https://www.zhihu.com/question/57493889
http://nooverfit.com/wp/msra微软亚洲研究院-cvpr最新卷积网络-deformable-convolutional-networks可变形卷/
https://mp.weixin.qq.com/s/Ulu8Kw4FDty-dMOu7qNxxQ
- 顶
- deformable convolutional networks
- Deformable Convolutional Networks解读
- deformable convolutional networks论文阅读理解
- Deformable Convolutional Networks 的caffe实现
- Deformable Convolutional Networks论文翻译——中英文对照
- Deformable Convolutional Networks论文翻译——中文版
- MSRA微软亚洲研究院 最新卷积网络: Deformable Convolutional Networks(可变形卷积网络)
- Convolutional Networks
- 论文阅读:End-to-End Learning of Deformable Mixture of Parts and Deep Convolutional Neural Networks for H
- 深度学习方法(十三):卷积神经网络结构变化——可变形卷积网络deformable convolutional networks
- 论文阅读-《Deformable Convolutional Network》
- Convolutional Neural Networks
- Convolutional Neural Networks (LeNet)
- Convolutional Networks(要点)
- Convolutional Neural Networks Posts
- Convolutional neural networks
- FCN(fully convolutional networks)
- Convolutional Neural Networks学习
- Linphone-android 登录过程增加自定义消息头流程分析
- 各种排序算法总结
- java html转pdf 中文乱码
- Markdown
- 正定矩阵、负定矩阵、半正定矩阵、半负定矩阵
- deformable convolutional networks
- Redis集群
- python自学2
- 整合spring session 用redis 做缓存
- ④NuPlayer播放框架之Renderer源码分析
- 分享Kali Linux 2017年第24周镜像文件
- 从零开始使用Eclipse搭建NDK项目
- 17 《一条改变世界的鱼:鳕鱼往事》 -豆瓣评分8.9
- 010--swift函数