一、语义分割
将一张图片中的像素按类别区分。示例如下:
语义分割不区分同类事物的不同实例。
语义分割的思路:
-
- 使用滑动窗方法,每次取图像的一部分,使用神经网络判断此部分的中心像素属于哪一类。缺点:低效,未能复用重叠窗口之间的共有特征。
-
- 使用全卷积(
Fully Convolutional
)网络:使用补零方法保证卷积的输出结果的尺寸与源图像尺寸一致,不使用任何降采用方法(如池化)。缺点:计算量巨大。
- 使用全卷积(
-
- 使用全卷积网络,同时使用降采样与升采样技术。
- 降采样:如池化、跨立间隔大于1的卷积操作。
- 升采样:逆池化,转置卷积。
1. 逆池化
平均池化层对应的逆池化操作为:将池化结果扩展到池化接触域。图示如下:
最大池化对应的逆池化操作为:将池化结果按照其原始位置放置,其余位置填充为0。图示如下:
2. 转置卷积
卷积总可以表示成矩阵相乘的形式。而转置卷积,顾名思义,就是将其系数矩阵进行转置。其之所以可以进行升采样,说明如下。
考虑一维情形。使用一个长度为3的卷积核对一个长度为4的数据,进行跨立为2的卷积操作,最终可得长度为2的卷积结果,如下图所示:
而若将卷积矩阵转置,作用在长度为2的向量上,最终可得一个较长的向量,图示如下:
相比于逆池化的升采样方法,转置卷积引入了可通过训练数据进行学习修正的参数,使模型具有了更强的灵活性。
3. 语义分割+目标定位
图像中的目标位置由一个包围该目标的方框标识,该方框由其起始坐标 ( x , y ) (x, y) (x,y),和尺寸 ( w , h ) (w,h) (w,h)限定。在语义分割的同时,确定目标位置,这属于一个多目标学习问题。一种方法是将多个目标的损失函数,加权求和,作为整个问题的优化目标,然后进行训练求解。
二、目标检测
目标检测问题,是在依附图片中判定多类目标的不同个体。图示如下:
1. 使用Region Proposal
技术的解决方案
使用深度神经网络实现目标检测的思路:
R-CNN
:使用Region Proposal Network
获取目标可能存在的区域,然后使用卷积神经网络判断这些区域是否包含目标,同时对区域的位置尺寸进行修正,使得对目标的定位更加精确。Fast R-CNN
:R-CNN
的一大缺陷是其计算量大,一个解决思路是在图像的卷积特征空间获取目标可能存在的位置。这样做的好处是消除了R-CNN
算法中重叠区域的卷积特征的重复计算。Faster R-CNN
:将Region Proposal
任务容纳到CNN
网络中。
2. 不使用Region Proposal
的方法
如YOLO
(You Only Look Once)和SSD
(Single Shot Detection),其思想是将目标检测问题转换成一个回归问题:将图像划分为若干基本网格,然后使用深度神经网络预测这些基本网格如下参数:其相对于目标方框的偏离,以及隶属于各个分类的得分。
3、实例分割
实例分割出要求输出图片中各类别目标的各个实体的区域。图示如下:
实现方案—mask R-CNN
:在目标检测的同时,输出各个Region
的语义分割结果。