全卷积网络

概念

概念相信对卷积网络不太陌生的人都知道,几个著名的网络LeNet-5,AlexNet,VGGNet,GoogLeNet,它们在重复了数次“卷积-池化”后,最后总要Flatten一下,得到一个长向量,然后用MLP,最后再softmax也好,SVM也好,做出最后分类。这就是我们常说的全连接。

这种结构有个特点,就是最后总需要以“加和”或者“压缩”的结果作为分类器的输入,在单个目标分类的时候自然是没问题的,但如果要分类图像中的多个目标的时候就有困难了。毕竟“一对多“的分类不好分,于是作者就想出了”多对多“的分类方法,这就是全卷积。

全卷积结构一副图就可以说明,就是把全连接部分换成卷积。

这里写图片描述

全卷积要实现像素级分类得益于3个主要的技巧:

shift-and-stitch

因为要对每个像素分类(准确来说是每幅图产生多个分类结果,对应多个区域,这些区域可以是像素级的),所以必须对每个像素产生一个类别,作者介绍了3种方法。

其一,叫做OverFeat> http://blog.csdn.net/hjimce/article/details/50187881

简单来说就是如果卷积网络降采样了f倍(输出比输入在宽或高减小了f倍),则认为输出的每个神经元应该对应输入的一个f*f大小的区域,这些方框是不重叠的,每个输出神经元的分类就对应了f*f大小的区域的分类。

其二,是一个比较直观的方法,是方法一的等价

考虑卷积网络中的一个子块——”移动步长为s的卷积或池化+卷积层“,为了使得最后卷积后的输出尺寸不缩小,那么就用一个尺寸为s的卷积核(稀疏的,有很多0),以步长1做对前面层的输出做卷积。这里写图片描述

其三,是作者采用的方法,Upsampling上采样。

上采样可以看成反卷积,以f上采样相当于以1/f的步长反卷积(并不包含反池化),唯一的区别在于这个反卷积的核不是原核的转置,而是可训练的。

Pixelwise loss

因为要对每个像素做分类,自然每个像素都要有一个损失函数(这样才能训练)。
输入图像尺寸为h*wN个类别的分类问题。

对全卷积网络的最后输出结果用1*1的N个核做卷积,作为分类的预测(这个时候每个卷积后的结果对应一个类别)。

然后这N个预测结果通过上采样/反卷积到和输入一样的h*w尺寸(其中还有skip layer这个过程,之后会说到)。

N个图的每个图的相同空间坐标位置(像素)做softmax分类,得到h*w个分类结果。训练过程是从反卷积部分的网络做的,而卷积部分则保持不变。

skip architecture/skip layer

原文的描述很复杂,其实就是一个目的,当把卷积网络的最后输出作为上采样的输入得不到好的分辨率和分类精度时(图中的FCN-32s),考虑先把最后输出上采样到和次后输出相同尺寸,然后两者相加(没错,就是直接矩阵加),把相加的结果再上采样到和输入一样尺寸(FCN-16s),以此提高分辨率。以此衍生出把次次后输出也加进去的方法(FCN-8s)。

当然在作者的实验中,8s提高的分辨率很小,只有 0.X%,所以最后用的16s

这里写图片描述

作者原文

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值