图像语义分割
图像语义分割是计算机视觉中十分重要的领域,它是指像素级地识别图像,即标注出图像中每个像素所属的对象类别
语义分割对图像中每一个像素点进行分类,确定每个点的类别
与实例分割的区别
语义分割没有分离同一类的实例;我们关心的只是每个像素的类别,如果输入对象中有两个相同类别的对象,则分割本身不将他们区分为单独的对象。而实例分割会对每一个个体进行单独划分。
应用
- 自动驾驶汽车
- 医学图像诊断
- 无人机着陆点判断
图像语义分割实质
语义分割的目标
一般是将一张RGB图像(height * width * 3)或是灰度图(height * width *1)作为输入
输出的是分割图,其中每一个像素包含了其类别的标签(height * width *1)
1、全卷积网络(FCN)的简单介绍
1.1、CNN与FCN的比较
CNN: 在传统的CNN网络中,在最后的卷积层之后会连接上若干个全连接层,将卷积层产生的特征图(feature map)映射成为一个固定长度的特征向量。一般的CNN结构适用于图像级别的分类和回归任务,因为它们最后都期望得到输入图像的分类的概率,如ALexNet网络最后输出一个1000维的向量表示输入图像属于每一类的概率。如下图所示:
在CNN中, 猫的图片输入到AlexNet, 得到一个长为1000的输出向量, 表示输入图像属于每一类的概率, 其中在“tabby cat”这一类统计概率最高, 用来做分类任务。
FCN: FCN是对图像进行像素级的分类(也就是每个像素点都进行分类),从而解决了语义级别的图像分割问题。与上面介绍的经典CNN在卷积层使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷基层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后奇偶在上采样的特征图进行像素的分类。如下图所示:
简单的说,FCN与CNN的区别在于FCN把CNN最后的全连接层换成卷积层,其输出的是一张已经标记好的图,而不是一个概率值。
感受域
在卷积神经网络中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野。通常来说,大感受野的效果要比小感受野的效果更好。由公式可见,stride越大,感受野越大。但是过大的stride会使feature map保留的信息变少。因此,在减少stride的情况下,如何增大感受野或使其保持不变,成为了分割中的一大问题。
RFl+1=RFl+(kernel_size-1)x stride
2、FCN上采样理论讲解
FCN网络一般是用来对图像进行语义分割的,于是就需要对图像上的各个像素进行分类,这就需要一个上采样将最后得到的输出上采样到原图的大小。上采样对于低分辨率的特征图,常常采用上采样的方式将它还原高分辨率,这里陈述上采样的三种方法。