语义分割
语义分割的含义
语义分割是在像素级别上的分类,属于同一类的像素都要被归为一类,
如图所示,属于人类的像素归为一类,属于摩托车的像素归为一类,除此之外,属于背景的像素也归为一类。语义分割与实例分割是不同的。如果一张照片中不同的人,实例分割需要把不同的人的像素归为不同的类,相当于是在语义分割的基础上更进一步。
语义分割的研究方法
传统方法
- TextonForest分割法
- 基于随机森林分类器分割法
深度学习下的思路
- ** Patch classification **:这是最初的深度学习方法应用于图像分割中。
因为全连接层需要固定大小的图像。所以图像是切成块交给深度模型处理的,然后对像素进行分类。 - 全卷积方法(FCN):FCN将网络全连接层用卷积取代,因此使任意图像大小的输入都变成可能,而且速度比Patch classification方法快很多。CNN模型用于语义分割还存在一个问题,就是下采样操作(比如,pooling)。pooling操作可以扩大感受野因而能够很好地整合上下文信息(context中文称为语境或者上下文,通俗的理解就是综合了更多的信息来进行决策),对high-level的任务(比如分类),这是很有效的。但同时,由于pooling下采样操作,使得分辨率降低,因此削弱了位置信息,而语义分割中需要score map和原图对齐,因此需要丰富的位置信息。
- encoder-decoder架构:encoder-decoder是基于FCN的架构。encoder由于pooling逐渐减少空间维度,而decoder逐渐恢复空间维度和细节信息。
- 空洞卷积:dilated/atrous (空洞卷积)架构,这种结构代替了pooling,一方面它可以保持空间分辨率,另外一方面它由于可以扩大感受野因而可以很好地整合上下文信息
- 条件随机场:
深度学习下的语义分割
现在的深度学习语义分割模型基本上是基于FCN发展而来的。下图可以概括FCN的延伸方法。图片来自链接