前言
第一篇论文题目为《Fully Convolutional Networks for Semantic Segmentation》,该文章是是全卷积网络用于图像分割的开山之作,提出将传统卷积神经网络的全连接层转化成卷积层,并使用反卷积上采样恢复原图大小。相比于CNN,FCN可以接受任意大小的图像,且更加高效。首先,梳理一下CNN的相关知识。
CNN-卷积神经网络
1.神经网络
神经网络结构分为三个部分:
- 输入层:众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。
- 隐藏层:是输入层和输出层之间众多神经元和链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。
- 输出层:讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息称为输出向量。
其中,神经元的传递过程是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的层级结构
- 数据输入层:CNN只对数据进行去均值操作(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)。
- CONV(卷积计算层):线性乘积求和,提取特征。
对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的卷积操作,也是卷积神经网络的名字来源。不同的滤波器会得到不同的输出数据,比如颜色深浅、轮廓。相当于如果想提取图像的不同特征,则用不同的滤波器&#x