目标检测之网络篇(1)【FCN-全卷积网络】

前言

第一篇论文题目为《Fully Convolutional Networks for Semantic Segmentation》,该文章是是全卷积网络用于图像分割的开山之作,提出将传统卷积神经网络的全连接层转化成卷积层,并使用反卷积上采样恢复原图大小。相比于CNN,FCN可以接受任意大小的图像,且更加高效。首先,梳理一下CNN的相关知识。

CNN-卷积神经网络

1.神经网络

在这里插入图片描述
神经网络结构分为三个部分:

  1. 输入层:众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。
  2. 隐藏层:是输入层和输出层之间众多神经元和链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。
  3. 输出层:讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息称为输出向量。

其中,神经元的传递过程是g(wx+b)的形式,
w : 权重,有几个输入就有几个权重,每个权重代表着每个输入的分量(举个栗子,我今晚吃不吃鸡取决于:1.有没有时间吃鸡(0.2);2.有没有人陪我吃鸡(0.8),其中2的分量重一点,那么今晚吃鸡的概率就是0.2有时间吃鸡+0.8有人陪我吃鸡。)
b : 偏置bias,为更好达到目标而做调整的偏置距离。
g(z) : 激活函数,一开始为了简单定义成了线性的,而后逐渐引入非线性激活函数如sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。

2.传统CNN的层级结构

  1. 数据输入层:CNN只对数据进行去均值操作(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)。
  2. CONV(卷积计算层):线性乘积求和,提取特征。
    对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的卷积操作,也是卷积神经网络的名字来源。不同的滤波器会得到不同的输出数据,比如颜色深浅、轮廓。相当于如果想提取图像的不同特征,则用不同的滤波器,提取想要的关于图像的特定信息:颜色深浅或轮廓。
    其中滤波器有三个参数:
    depth:深度,表示神经元(滤波器)个数
    stride:步长,每次移动的距离。
    zero-padding:填充值,一般边缘补0。
  3. RELU(激励层):使用RELU激活函数,收敛快,求梯度简单。(对于输入的负值,输出全为0,对于正值,原样输出。)
    如图所示是RELU激励函数
    左图经过激活函数后变成右图
  4. POOL(池化层):取区域内的平均值或最大值,缩小图像。
    如上图所示,是取区域的最大值,而图像从4*4缩小到了2*2
  5. FC(全连接层):在我的理解里,全连接层就是把前面经过卷积、激励、池化后的图像元素一个接一个串联在一起,作为判决的投票值,最终得出判决结果。下面的一组图是大神的可视化讲解:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

这些层都可以合并到一起,如下图:
在这里插入图片描述
组成卷积神经网络,通过特征提取和学习得到标签的置信值,最终得出分类结果。

3.FCN相比CNN的改进

OK回顾完CNN之后,我们引入FCN-全卷积网络。顾名思义,全卷积网络就是将传统CNN的全连接层变成一个个的卷积层。看下面的一张图:
在这里插入图片描述
在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,1,1)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。为什么要这样做呢?因为传统CNN的全连接层使得图像变成一维,丢失了一些信息,而采用FCN后仍为三维。
为了使得经过层层结构后越来越小、分辨率越来越低的图像恢复到原图分辨率,FCN采用了反卷积方法进行上采样。(这里会先进行上采样,即扩大像素;再进行卷积——通过学习获得权值)

在这里插入图片描述
对第五层的输出进行反卷积,得到放大32倍(原图大小),即为FCN-32s;对第四层的输出进行反卷积,得到放大16倍(原图大小),即为FCN-16s;对第三层的输出进行反卷积,得到放大8倍(原图大小),即为FCN-8s。下图是实验结果:
在这里插入图片描述
可见,精细度:32s<16s<8s。

4.FCN优缺点

与传统用CNN进行图像分割的方法相比,FCN有两大明显的优点:一是可以接受任意大小的输入图像,而不用要求所有的训练图像和测试图像具有同样的尺寸。二是更加高效,因为避免了由于使用像素块而带来的重复存储和计算卷积的问题。

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

5.参考文献

  1. 《Fully Convolutional Networks for Semantic Segmentation》
  2. https://blog.csdn.net/taigw/article/details/51401448
  3. https://www.jianshu.com/p/fe428f0b32c1
  4. https://blog.csdn.net/v_JULY_v/article/details/51812459
  5. https://blog.csdn.net/qq_37274615/article/details/73251503
  6. http://brohrer.github.io/deep_learning_demystified.html

猜你喜欢

转载自blog.csdn.net/weixin_38708130/article/details/83591054