2015 CVPR
SegNet: A Deep Convolutional Encoder-Decoder Architecture for Robust Semantic Pixel-Wise Labelling
SegNet 官方网站
SegNet 是一个encoder-decoder结构的卷积神经网络.
Cambridge提出解决自动驾驶或者智能机器人的图像语义分割深度网络基于FCN,修改VGG-16网络有两种,分别为SegNet与Bayesian SegNetend to endSegNet和FCN思路十分相似:
只是Encoder,Decoder(Upsampling)使用的技术不一致。SegNet的编码器部分使用的是VGG16的前13层卷积网络,每个编码器层都对应一个解码器层,最终解码器的输出被送入soft-max分类器以独立的为每个像素产生类概率。Convolution
通过卷积提取特征,SegNet使用的卷积为same卷积,即卷积后保持图像原始尺寸
在Decoder过程中,同样使用same卷积,不过卷积的作用是为upsampling变大的图像丰富信息,使得在Pooling过程丢失的信息可以通过学习在Decoder得到。
Batch Normalisation
RELU
SegNet作者的研究中发现,激活层越多越有利于图像语义分割。
在SegNet中的Pooling比其他Pooling多了一个indice 功能(亮点)
每次Pooling,都会保存通过max选出的权值在2x2 filter中的相对位置net中绿色的pooling与红色的upsampling通过pool indices相连,实际上是pooling后的indices输出到对应的upsamplingUpsamping就是Pooling的逆过程(index在Upsampling过程中发挥作用) max-pooling indics advantage 改进了边界划分减少了实现端到端训练的参数数量这种upsampling模式可以包含到任何编码-解码网络中(FCN、crfasrnn)Upsampling中先对输入的特征图放大两倍,然后把输入特征图的数据根据Pooling indices放入
SegNet上采样不需要训练学习(只是占用了一些存储空间)FCN则是用transposed convolution策略,即将feature 反卷积后得到upsampling,这一过程需要学习SegNet
uses the max pooling indices to upsample (without learning) the feature map(s)convolves with a trainable decoder filter bank.FCN
upsamples by learning to deconvolve the input feature mapadds the corresponding encoder feature map to produce the decoder output.( feature map is the output of the max-pooling layer in the corresponding encoder. )no trainable decoder filters in FCN.Deconvolution
除了被记住位置的Pooling indices,其他位置的权值为0。所以使用反卷积在这里用于填充缺失的内容,这里的反卷积与卷积是一样的。output
最后一个卷积层会输出所有的类别(包括other类)最后加上一个softmax层求出所有每一个像素在所有类别最大的概率,最为该像素的label先验概率
在SeNet中最后每个像素都会对每一类的概率进行计算,再通过 softmax 输出概率最大的一个,然后这个像素点就认为是这一类别,对应的概率就是这一像素属于该类的概率。(由原因到结果的推导)
problem
对于不同的样本,先验概率无法保证一定正确。需要有从结果寻找原因的贝叶斯概率,即后验概率,它能给出结果的可信程度,即置信度。different
网络:与普通比,Bayesian SegNet只是在卷积层中多加了一层DropOut在传统神经网络中DropOut层的主要作用是防止权值过度拟合,增强学习能力。
输入经过DropOut层之后,随机使部分神经元不工作(权值为0),即只激活部分神经元,结果是这次迭代的向前和向后传播只有部分权值得到学习
DropOut层服从二项分布,结果不是0,就是1
Bayesian SegNet中,SegNet作者把概率设置为0.5,即每次只有一半的神经元在工作。
Bayesian SegNet中通过DropOut层实现多次采样,多次采样的样本值为最后输出,方差为其不确定度,方差越大不确定度越大
Gaussian process & Monte Carlo Dropout Sampling
Dropout as a Bayesian approximation: Representing model uncertainty in deep learning
高斯分布
高斯过程是指任意有限个随机变量都服从联合高斯分布,同时只需要知道均值与协防差就能够确定一个高斯过程,所以高斯过程可以用于从有限维到无限维的回归问题,从已知高斯分布,增加新的随机变量分布可以求出新的高斯分布,根据新的分布可以求出其均值与方差。
如何确定一个高斯分布?
需要多次采样才能确定一个分布。蒙特卡罗抽样告诉我们可以通过设计一个试验方法将一个事件的频率转化为概率,因为在足够大的样本中,事件发生的频率会趋向事件发生的概率,因此可以很方便地求出一个未知分布。通过蒙特卡罗抽样,就可以求出一个新分布的均值与方差,这样使用方差大小就可以知道一个分布对于样本的差异性,我们知道方差越大差异越大。Use
1.对于分类的边界位置,不确定性较大,即其置信度较低。 2.对于图像语义分割错误的地方,置信度也较低。 3.对于难以区分的类别,例如人与自行车,road与pavement,两者如果有相互重叠,不确定度会增加。
卷积神经网络CNN(4)—— SegNet 论文翻译