深度学习之卷积、全连接、反卷积等

全连接参考1:https://zhuanlan.zhihu.com/p/32819991
全连接参考2:代码实现

神经网络前后传输
CNN中卷积、池化的前向与反向传播:
CNN卷积神经网络和反向传播(公式标出)
CNN卷积(总结)
CNN的反向传播

CNN中感受野的计算

感受野(receptive field)是怎样一个东西呢,从CNN可视化的角度来讲,就是输出featuremap某个节点的响应对应的输入图像的区域就是感受野。
在这里插入图片描述

比如我们第一层是一个33的卷积核,那么我们经过这个卷积核得到的featuremap中的每个节点都源自这个33的卷积核与原图像中33的区域做卷积,那么我们就称这个featuremap的节点感受野大小为33

如果再经过pooling层,假定卷积层的stride是1,pooling层大小22,stride是2,那么pooling层节点的感受野就是44

有几点需要注意的是,padding并不影响感受野,stride只影响下一层featuremap的感受野,size影响的是该层的感受野。

计算感受野,一般使用 top to down的方式(即从输出层往原图片方向推)。
感受野计算分两种情况:

  1. conv层: ( f e a t u r e M a p S i z e − 1 ) ∗ s t r i d e + f i l t e r S s i z e (featureMapSize - 1) * stride + filterSsize (featureMapSize1)stride+filterSsize

如,原feature map经过3 x 3conv, stride = 1后得到 1 x 1 的feature map。那输出的feature map中的一个点对应原来的区域大小为(1-1) x 1 + 3= 3(即感受野为3 x 3)

  1. pool层:
    1)若size和stride数一样,则为 f e a t u r e M a p S i z e ∗ s i z e featureMapSize * size featureMapSizesize
    如,原feature map经过2 x 2 maxpooling, stride = 2后得到 1 x 1 的feature map。那输出的feature map中的一个点对应原来的区域大小为1 x 2 = 2(即感受野为3 x 3)
    2)若不一样,则为
    ( f e a t u r e M a p S i z e ∗ f i l t e r s i z e ) − ( f e a t u r e M a p S i z e − 1 ) ∗ ( f i l t e r s i z e − s t r i d e ) (featureMapSize * filtersize) - (featureMapSize - 1) * (filtersize - stride) (featureMapSizefiltersize)(featureMapSize1)(filtersizestride)

    如:featuresize = 2x2, filtersize = 3x3,stride = 2
    则:(2 x 3) - (2 - 1) * (3 - 1) = 5

  • 计算实例:
    在这里插入图片描述
    计算最后输出层对应的不同层的感受野

pool3:1*2 = 2,故 2 x 2
conv4:(2-1)*1 +3 = 4,故 4x4
conv3:(4-1)*1 +3 = 6, 6x6
pool2:6 * 2 = 12, 12x12
conv2:(12-1)*1 +3 = 14, 14x14
pool1:14 * 2 = 28, 28x28
conv1:(28 - 1)*1 + 3 = 30, 30x30

关于CNN的一些问题
  1. CNN的优缺点:
  • 优点:
  1. 共享卷积核,参数量较少;
  2. 卷积层负责提取特征,采样层负责压缩数据和参数量,减少过拟合
  • 缺点:
  1. 当网络层次太深时,采用BP传播修改参数会使靠近输入层的参数改动较慢;
  2. 池化层会丢失大量有价值信息,忽略局部与整体之间关联性;
  3. 可解释性不强,由于特征提取的封装,为网络性能的改进罩了一层黑盒
  1. CNN中的卷积层为什么能提取特征,为什么好用?
  1. 卷积核可以刻画图像的局部特征,CNN能够提取图片的特征;
  2. 通过反向传播算法,CNN可以动态的去更改卷积核的参数,使得卷积核越来越倾向于提取更好的特征。
  1. CNN中的池化层作用?

池化层的主要作用 :保持主要特征的同时减少冗余信息,可以达到减少参数与计算量的目的,防止过拟合,提高模型的泛化能力。
池化层具有两个性质:1.平移、尺度不变形;2.特征降维

  1. Max pooling和average pooling的异同:
  • max感觉是做了特征选择,选出了分类辨识度更好的特征,提供了非线性
  • average更多保留了图像的背景信息,感觉更多体现在信息的完整传递
CNN中参数量与计算量的计算

参考:卷积中参数量和计算量

在这里插入图片描述

在这里插入图片描述

计算flops的时候,为什么要×2???


CNN中的组卷积

输入C1 X W X H,卷积核 K X K X C1 X C2,使用组卷积(分组为G)
计算量:C1/G X K X K X C2/G
解析:整体参数变为原来的1/G,使用组卷积后,输入的featuremap的channel变为1/c,卷积核变成K X K X C1/G, 输出的通道数变为C2/G


CNN中的上采样

参考:怎样通俗易懂地解释反卷积?
参考:反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)

上采样有3种常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling)。

  • FCN结构中,上采样是使用的双线性插值方式;
  • UNET结构中,上采样使用的是反卷积方式;

反卷积的大致过程:
1)根据步数strides对输入进行填充
2)使用卷积核对填充的结果进行卷积,得到反卷积结果
注:反卷积只能恢复尺度,不能恢复数值

CNN中的可变形卷积与空洞卷积
  1. 可变形卷积:
    参考1:Deformable Convolution 关于可变形卷积
    参考2:可变形的卷积网络

通过额外加入分支预测offset,使得卷积核中每个采样点发生偏移,集中于我们感兴趣的区域。从而解决CNN对几何形变建模受限都问题

  1. 空洞卷积:
    参考:空洞卷积

通过扩张卷积核之间的空隙,从而达到获得更大感受野的效果。解决了pool层下采样再上采样 导致信息损失都问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值