(1)全连接层转化为全卷积层 : 在传统的CNN结构中,前5层是卷积层,第6层
和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,
分别对应1000个不同类别的概率。FCN将这3层表示为卷积层,卷积核的大小
(通道数,宽,高) 分别为 (4096,1,1)、(4096,1,1)、(1000,1,1)。看上去数字上并
没有什么差别,但是卷积跟全连接是不一样的概念和计算过程,使用的是之前
CNN已经训练好的权值和偏置,但是不一样的在于权值和偏置是有自己的范
围,属于自己的一个卷积核。
(2)CNN中输入的图像大小是统一固定成227x227大小的图像,第一层pooling
后为55x55,第二层pooling后图像大小为27x27,第五层pooling后的图像大小为
13x13, 而FCN输入的图像是H * W大小,第一层pooling后变为原图大小的1/2,
第二层变为原图大小的1/4,第五层变为原图大小的1/8,第八层变为原图大小的
1/16。
(3)经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低。其
中图像到H/32 * W/32的时候图片是最小的一层时,所产生图叫做heatmap热
图,热图就是我们最重要的高维特征图,得到高维特征的heatmap之后就是最重
要的一步也是最后的一步对原图像进行upsampling,把图像进行放大几次到原
图像的大小。
相较于使用被转化前的原始卷积神经网络对所有36个位置进行迭代计算优化模
型,然后再对36个位置做预测,使用转化后的卷积神经网络进行一次前向传播计
算要高效得多,因为36次计算都在共享计算资源。这一技巧在实践中经常使用,
通常将一张图像尺寸变得更大,然后使用变换后的卷积神经网络来对空间上很多
不同位置进行评价得到分类评分,然后在求这些分值的平均值。
9.2.7 反卷积层理解
Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的参数和
CNN的参数一样是在训练FCN模型的过程中通过bp算法学习得到。反卷积层也
是卷积层,不关心input大小,滑窗卷积后输出output。deconv并不是真正的
deconvolution(卷积的逆变换),最近比较公认的叫法应该是transposed
convolution,deconv的前向传播就是conv的反向传播。
反卷积参数: 利用卷积过程lter的转置(实际上就是水平和竖直方向上翻转
lter)作为计算卷积前的特征图。
反卷积的运算如下所示:
蓝色是反卷积层的input,绿色是反卷积层的outputFull padding, transposed
Full padding, transposed。