FCN全卷积神经网络

该网络在前面两步跟CNN的结构是一样的,但是在CNN网络Flatten的时候,FCN网络将之换成了一个卷积核size为5x5,输出通道为50的卷积层,之后的全连接层都换成了1x1的卷积层。

我们知道1x1的卷积其实就相当于全连接操作传统的基于CNN的分割方法:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入,用于训练与预测,这种方法主要有几个缺点:

1)存储开销大,例如,对每个像素使用15 * 15的图像块,然后不断滑动窗口,将图像块输入到CNN中进行类别判断,因此,需要的存储空间随滑动窗口的次数和大小急剧上升

2)效率低下,相邻像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算有很大程度上的重复;

3)像素块的大小限制了感受区域的大小,通常像素块的大小比整幅图像的大小小很多,只能提取一些局部特征,从而导致分类性能受到限制



而全卷积网络(FCN)是从抽象的特征中恢复出每个像素所属的类别即从图像级别的分类进一步延伸到像素级别的分类。

1、对于一般的分类CNN网络,如VGG和Resnet,都会在网络的最后加入一些全连接层,经过softmax后就可以获得类别概率信息。但是这个概率信息是1维的,即只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。


2、​ 而FCN提出可以把后面几个全连接都换成卷积,这样就可以获得一张2维的feature map,后接softmax层获得每个像素点的分类信息,从而解决了分割问题。
 


FCN缺点:
(1)得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感
(2)对各个像素进行分类,没有充分考虑像素与像素之间的关系忽略了在通常的基于像素分类的分割方法中使用的空间规整步骤,缺乏空间一致性。
 

FCN优点:

对于一个各层参数结构都设计好的神经网络来说,输入的图片大小是要求固定的,比如AlexNet,VGGNet, GoogleNet等网络,都要求输入固定大小的图片才能正常工作。
FCN的精髓就是让一个已经设计好的网络可以输入任意大小的图片。


假如输入图片size为14x14x3的彩色图,如下图,

FCN全卷积神经网络_第1张图片

首先经过一个5x5的卷积层,卷积层的输出通道数为16,得到一个10x10x16的一组特征图,然后经过2x2的池化层,得到5x5x16的特征图,接着Flatten后进入两个50个神经元的全连接层,最后输出分类结果。这里由于全连接层中输入层神经元的个数是固定,这就导致反推出卷积层的输入要求是固定的,这就不利于不同尺寸的图片进行训练。

FCN全卷积神经网络_第2张图片

该网络在前面两步跟CNN的结构是一样的,但是在CNN网络Flatten的时候,FCN网络将之换成了一个卷积核size为5x5,输出通道为50的卷积层,之后的全连接层都换成了1x1的卷积层。我们知道1x1的卷积其实就相当于全连接操作。


1x1卷积作用

  1. 增加非线性:1x1的卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性,使得网络可以表达更加复杂的特征。
  2. 特征降维:通过控制卷积核的数量达到通道数大小的放缩。特征降维带来的好处是可以减少参数和减少计算量。

我们从一个实例来看:假如前一层输入大小为28 x 28 x 192,输出大小为28 x 28 x 32,如下:

1、不引入1x1卷积的卷积操作如下:

FCN全卷积神经网络_第3张图片

上图计算量为:

28 x 28 x 192 x 5 x 5 x 32 = 120,422,400次

2、引入1x1卷积的卷积操作:

FCN全卷积神经网络_第4张图片

引入1x1卷积后的计算量为:

28 x 28 x 192 x 1 x 1 x 16 + 28 x 28 x 16 x 5 x 5 x 32 = 12,443,648次

从上面计算可以看出,相同的输入,相同的输出,引入1x1卷积后的计算量大约是不引入的1/10。

3、减少权重个数

Inception的初始版本就是没有加入1x1卷积的网络,如下图:

FCN全卷积神经网络_第5张图片

假如previous layer的大小为28x28x192,那么上面网络的权重个数为:

1 x 1 x 192 x 64 + 3 x 3 x 192 x 128 + 5 x 5 x 192 x 32 = 387072个

其输出的特征图大小为:

28 x 28 x 64 + 28 x 28 x 128 + 28 x 28 x 32 + 28 x 28 x 192 = 28 x 28 x 416

加入1x1卷积的Inception网络如下图,

FCN全卷积神经网络_第6张图片

如果previous layer的大小为28x28x192,那么上面网络的权重个数为:

1 x 1 x 192 x 64 + (1 x 1 x 192 x 96 + 3 x 3 x 96 x 128) + (1 x 1 x 192 x16 + 5 x 5 x 16 x 32) + 1 x 1 x 192 x 32 = 163328个

可见加上1x1卷积后,权重个数从38.7万个左右降到16.3万个左右,同时增加了网络的非线性

其输出的特征图大小为:

28 x 28 x 64 + 28 x 28 x 128 + 28 x 28 x 32 + 28 x 28 x 32 = 28 x 28 x 256

这样,1x1卷积的增加在增加网络非线性的同时,减少了网络的计算量和权重个数。

你可能感兴趣的:(cnn,深度学习,计算机视觉)