- 计算尺寸不被整除只在GoogLeNet中遇到过。卷积向下取整,池化向上取整。
- stride为1的时候,当kernel为 3 padding为1或者kernel为5 padding为2 一看就是卷积前后尺寸不变
一:转置卷积
上采样的方法举例:最近邻,双线性插值,双立方插值等
转置卷积:上采样的一种方法,也被称为分数步长卷积或反卷积
转置卷积在论文中:DCGAN
比较容易理解的解释:转置卷积
注:转置卷积会在生成的图像中造成棋盘效应(checkerboard artifacts).本文推荐在使用转置卷积进行上采样操作之后再过一个普通的卷积来减轻此类问题(需要时查一下棋盘效应)
二:空洞卷积(膨胀卷积)—— Dilated Convolution
感受野(receptive field)计算公式: R F = ( ( R F − 1 ) ∗ s t r i d e ) + f s i z e RF = ((RF -1)* stride) + fsize RF=((RF−1)∗stride)+fsize,stride 步长; fsize卷积核的大小
- 又称扩张卷积,一般用于语义分割
- 越大的感受野包含越多的上下文关系
- 膨胀卷积与普通卷积的相同点:卷积核的大小是一样的,在神经网络中即参数数量不变
- 区别:膨胀卷积具有更大的感受野
- 传统的卷积操作,感受野和层数layer成线性关系,而dilated conv的感受野是指数级的增长
- 适用情况:图像需要全局信息、语音文本需要较长的sequence(序列)信息依赖的问题中
CNN普通卷积中存在的问题(来自hinton演讲):
- 上采样/池层(例如双线性插值)是确定性的(即不可学习)
- 内部数据结构丢失;空间层级化信息丢失
- 小物体信息无法重建 (假设有四个pooling layer 则 任何小于 2^4 = 16 pixel 的物体信息将理论上无法重建)
- 在这样问题的存在下,语义分割问题一直处在瓶颈期无法再明显提高精度, 而 dilated convolution 的设计就良好的避免了这些问题
dilated convolution优点:
- 内部数据结构的保留
- 避免使用 down-sampling (下采样)这样的特性
解释几点:
- dilated conv不是在像素之间padding空白的像素,而是在已有的像素上,skip掉一些像素,或者输入不变(输入图像尺寸不变,没有信息损失),对conv的kernel参数中插一些0的weight,达到一次卷积看到的空间范围变大的目的
- 当然将普通的卷积stride步长设为大于1,也会达到增加感受野的效果,但是stride大于1就会导致downsampling,图像尺寸变小(在先减小再增大尺寸的过程中,有一些信息损失掉)
空洞卷积的问题及解决:
三:可变形卷积——Deformable Convolutional
等待补充……