Advertisement

SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation 的理解

阅读量:

一、先来了解一下VGG16的网络结构
VGG网络结构图片
论文中的不同VGG的模型

注释:

输入层(input layer

224x224x3 即图像宽高为224,剩下的三个通道对应RGB

第一层卷积层,conv1_1:

由第一张图,第一层卷积层参数为224x224x64 代表第一层卷积层有224x224x64个神经元,其中,每224x224为一小层神经元,这一小层神经元参数共享,所以这224*224的神经元参数完全相同,共同形成了一个filter,每一个神经元的维度都是3,3,3 分别对应filter_hight,filter_width,channels(即RGB通道) ,所以总共有64个filter(其实总共有224x224x64个filter但是由于参数共享,每层神经元参数是一样的,所以可以理解为形成了一个单独的在整张图上移动的filter),所以64个filter的参数每个都是 3x3x3

第二张图中给出了卷积的具体运算方式,可知,每一个3X3X3的filter对一张224X224X3的图片进行一次读取计算操作之后(不移动),得到一个具体的数值,存储于对应的feature map中,移动一小步后再次进行读取计算产生下一个值,扫描一次完整的图片,每个filter 能够生成224x224大小的feature map。224x224x3的图片在经过64个filter的第一层后,生成的数据应该是,224x224x64。所以第一层的weight参数数量应该是(filter_hight x filter_width x channels) x 64(个filter)即 3x3x3x64

参考参考链接

二、语义分割的论文主体

摘要:提出实用、完全卷积、像素级别的语义分割称为segnet. 由三部分编码、解码、像素分类器组成、编码部分与vgg16前13层相同,特别之处在于解码:将低分辨率的feature map 特征映射到输入时 相同的大小,以便进行后续的分类。具体来说,解码层上采用 是采用相对应的编码器相应的池化层索引,这样避免了再次训练的过程。此时上采样的feature map 是稀疏的,然后与可训练的过滤器组想卷积 形成稠密的feature map。论文中 与 FCN /DeepLab-largeFov Deconvnet 体现进行了比较。揭示了必须在准确度与内存占用量之间的权衡。

1、介绍部分

此框架设计用于像素级别的语义分割,其发展的内在动力来源于自动驾驶中的道路中出现的不同物体之间的形状、外形、空间关系,在经典的道路场景中,路、建筑主等大的类别之间必须产生平滑的分割。此次要求必须可以基于形状进行分类甚至是小的尺寸,重要的边界信息要在抽取特征显得尤为重要。从计算的角度分析,必须是高效的和少占内存的,所以使用了随机梯度下降算法(SGD),解码部分去除了全连接层,使得网络框架相对来说比较小容易训练。当然解码的每一次对应编码的一层,解码使用适量的在编码层最大池画的索引,去上采样取得输入大小的feature map,这个灵感来自非监督学习,【18】,重复利用在编码过程中最大池化的索引,可以提高边界。减少训练的参数,只需要少量的改动对于【2】的编码解码网络。

贡献一、我们the decoding 技术的分析与全连接卷积的网络的利用,二、减少了训练的参数、
总体设计图 总体框架图

2、框架
原理图 原理图

segnet网络有一个编码层、与其对应的解码层,后面跟着一个分类层。在总体框架图可以看出来。编码层包括了13卷积层与其对用的vgg16中的卷积层,【1】应用目标检测,在大的数据中【40】因此初始化这个训练过程权重训练用于分类,文章丢弃了全连接层其用于保持高分辨率的feature map ,这也减少了参数,(134 到 14.7M)对于最近的框架【2】【4】,最终的softmax处理多类别的可能性对于每个对了的像素。在编码层的每个过滤器组用于产生一套feature map,然后进行 batch-归一化,使用Relu 函数,最大池化 2*2的窗口步长为2,输出是采样因子2的子采样,最大池化的目的得到输入图像较小空间内的不变性,自采样的结果对于输入的每个像素都在feature map中,最大采样与子采样获取空间特征鲁棒性的同时也丢失了相应的分辨率,然而丢失的边界特征是不利于图像分割的,因此有必要在子采样之前抓取丢失的边界特征,如果在编码层的过程中 子采样都可以被保存的情况下,需要不受限制的内存大小,但是这样做是 不现实的,因此提出了一种高效的方式储存这些信息。只存储最大池化的索引。例子,最大池化的索引需要用2bit记忆 相对于储存feature map 更高效,在之后的叙述中,低的存储对应的精度的缺少是在接受的范围之内。

解码网络上采样使用在编码层中的最大池化索引,产生稀疏矩阵,这个技术在原理图中有详细的介绍,这些稀疏图与可训练的过滤器组进行卷积产生稠密feature map,batch-normalization 用于每个feature map,注意 最大池化索引是一一对应的,高纬的feature 特征在编码的最后输给softmax 分离器,对于每个像素的判读是独立的,分类器的输出是K个,其代表类别的数量,预测是其相对应的最大的那个类别。

2.1 解码变量

很多框架用相同的编码阶段,不同的是解码阶段,我们选择对比全连接的解码,为了分析segnet 与全连接的性能,我们使用了更小的版本 segnet-basic,其只要四个卷积,无bias 无relu 函数应用与解码网络,更近一步,7*7 的 核函数用于编码与解码网络,提供广泛的平滑的标记,

2.2 训练过程

使用the camvid 道路理解数据集 ,这个数据集包含367训练 233测试的RGB图片,360*480像素的,11个类别,这编码解码的初始化都使用【54】中面试的技术,使用SGD 学习率0.1 momentum is 0.9,使用的是caffe 实现segnet-basic.直到训练损失汇聚一点,每个epoch 使用随机 mini-batch为12 张照片,我们选择此 是因为在验证机性能会更好 ,使用交叉熵损失作为目标函数,损失是每个mini-batch的积累并更新,对于权重在不同类的损失,使用 median frequency balancing[12] 中频平衡,其中,分配给损失函数中的类的权重是在整个训练集上计算的类频率中位数除以类频率的比率。这意味着训练集中较大的类的权重小于1,最小类的权重最高。我们还试验了不同的变体的训练,没有阶级平衡或等效使用自然频率平衡。

2.3分析

比较不同解码结构的性能,我们使用不同的性能标准 分别是:测量整体精度(每个像素的正确率),类别预测正确率,以及对所有类的平均交集,miou度量一个比类平均精度更严格的度量,是因为它惩罚错误的阳性预测,然后其并不是直接通过类平和的交叉熵损失来优化的。

全部评论 (0)

还没有任何评论哟~