FCN全卷积网络Fully Convolutional Networks

语义分割

CNN实现语义分割

FCN 实现语义分割

全连接层

注: 以下内容摘自知乎

  • 全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。 在实际使用中,全连接层和卷积层可实现相互转换。

  • 参数冗余。通过研究发现,在包含全连接的网络中,全连接的参数占据了所有参数中的大部分比例(约80%左右),这样使得精简全连接参数变得刻不容缓。一部分优秀的人们想到了使用svd等方式减少参数,另一部分优秀的人们开始寻找全连接层的替代方法,一些性能优异的网络模型如nin,squeezenet,ResNet和GoogLeNet等用全局平均池化(global average pooling,GAP)取代FC来融合学到的深度特征,最后仍用softmax等损失函数作为网络目标函数来指导学习过程。人们发现不使用全连接层,模型的检准率并没有降低,而模型的大小却极大的减少。另一方面,同样在nin,以及用于图像分类的fcn中,人们发现使用11卷积,也可以达到与全连接层同样的功效,依然能保证同样的检准率(注:11卷积的使用,对比fc并不能 减少模型参数,特此说明)

  • 在FC越来越不被看好的当下,近期的研究(In Defense of Fully Connected Layers in Visual Representation Transfer)发现,FC可在模型表示能力迁移过程中充当“防火墙”的作用。具体来讲,假设在ImageNet上预训练得到的模型为M,则ImageNet可视为源域(迁移学习中的source domain)。微调(fine tuning)是深度学习领域最常用的迁移学习技术。针对微调,若目标域(target domain)中的图像与源域中图像差异巨大(如相比ImageNet,目标域图像不是物体为中心的图像,而是风景照,见下图),不含FC的网络微调后的结果要差于含FC的网络。因此FC可视作模型表示能力的“防火墙”,特别是在源域与目标域差异较大的情况下,FC可保持较大的模型capacity从而保证模型表示能力的迁移。(冗余的参数并不一无是处。)

image.png

卷积层与全连接层转换

全连接层和卷积层之间唯一的不同就是卷积层中的神经元只与输入数据中的一个局部区域连接,并且在卷积列中的神经元共享参数。然而在两类层中,神经元都是计算点积,所以它们的函数形式是一样的。因此,将此两者相互转化是可能的

  • 卷积层 -> 全连接层
    对于任一个卷积层,都存在一个能实现和它一样的前向传播函数的全连接层。权重矩阵是一个巨大的矩阵,除了某些特定块,其余部分都是零。而在其中大部分块中,元素都是相等的。

  • 全连接层 -> 卷积层
    前一层是全连接的全连接层可以转化为卷积核为1x1的卷积;
    前一层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽。

全连接层转化为卷积层:在两种变换中,将全连接层转化为卷积层在实际运用中更加有用。对于caffenet的网络结构(5组卷积-池化-relu,3组FC),假设网络的输入是 224x224x3 的图像,经过5组卷积池化relu后图像尺寸为 7x7x512 。后面的3组fc尺寸(输出通道)分别为4096,4096, 1000(类别输出)。则这3组全连接层可转为如下3层卷积层:
针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为F=7,这样输出就为[1x1x4096]了。
针对第二个全连接层,令其滤波器尺寸为F=1,这样输出数据体为[1x1x4096]。
对最后一个全连接层也做类似的,令其F=1,最终输出为[1x1x1000]

上采样

参考

https://blog.csdn.net/fate_fjh/article/details/53446630
http://www.360doc.com/content/17/0223/12/39751066_631368613.shtml
https://blog.csdn.net/williamyi96/article/details/77415190

你可能感兴趣的:(FCN全卷积网络Fully Convolutional Networks)