首页 > 技术文章 > 语义分割Semantic Segmentation研究综述

wemo 2019-02-18 09:49 原文

语义分割和实例分割概念

语义分割:对图像中的每个像素都划分出对应的类别,实现像素级别的分类。

实例分割:目标是进行像素级别的分类,而且在具体类别的基础上区别不同的实例。

image

语义分割(Semantic Segmentation)

输入:一张原始的RGB图像

输出:带有各像素类别标签的与输入同分辨率的分割图像

image

对预测的分类目标采用one-hot编码,为每个分类类别创建一个输出的channel。
image

将分割图相加到原始图像上的效果。

image

语义分割的难点

在经典的网络中,需要经过多层卷积和池化进行提取特征工作,从而找到分类目标,这个过程会使图像尺寸逐渐减小。需要将分类后的特征图还原到原图尺寸。

通常的做法是编码和解码网络结构。

卷积核池化操作可以看图像编码的过程,也就是下采样过程

解码理解为编码的逆运算,对输出的特征图不断上采样,逐渐得到一个与原始图像同分辨率的分割图。

卷积动图

image

最大池化和最大池化的示意图(池化上采样是通过将单个值分配更高的分辨率来达到扩充的目的)

image

反卷积(转置卷积)

image

Dilated convolution(空洞卷积)

image

1. FCN全卷积网络简介

1.1 关键技术:卷积化(convolutionalization)

分类所使用的网络通常会在最后连接全连接层,它会将原来二维的矩阵(图片)压缩成一维的,从而丢失了空间信息,最后训练输出一个标量,这就是我们的分类标签。

语义分割的输出是个分割图,至少是二维的。通常是一个类别为一个通道。

image

1.2 关键技术:上采样(Upsampling)

需要得到一个与原图像size相同的分割图,需要对最后一层进行上采样。

1.3 关键技术:跳跃结构(Skip Architecture)

由于直接将全卷积的结果上采样后的结果很粗糙。采用跳跃结构,将不同池化层的结果进行上采样,然后结合这些结果来优化输出。(出发点:由于池化层会丢失信息,将不同池化层结果上采样,从而弥补部分信息)

image

2. u-net简介

u-net作为FCN的改进,通过扩大网络解码器容量来改进了全卷积网络结构,并给编码和解码模块添加了收缩路径(contracting path),从而实现更精准的像素边界定位。

image

融合之前要crop到对应的层相同尺寸。(思考:融合操作是不是对应通道的相加,具体需要看论文和代码。有没有更合理的特征融合方法)

3. v-net简介

v-net 可以理解为 3D 版本的 u-net ,适用于三维结构的医学影像分割。v-net 能够实现 3D 图像端到端的图像语义分割,加了一些像残差学习一样的trick来进行网络改进,总体结构上与 u-net 差异不大。

image

推荐阅读