摘自《动手学习深度学习》
图像分类会给每张图像分配一个标签或类别。但如果想知道物体在图像中的位置、物体的形状、以及哪个像素属于哪个物体等,就需要分割图像,给图像中的每个像素各分配一个标签。因此,图像分割的任务是训练一个神经网络来输出该图像对每一个像素的掩码。从更底层(像素层级)来理解图像。图像分割在例如医疗图像、自动驾驶车辆以及卫星图像等领域有很多应用。
语义分割(semantic segmentation)问题关注的是如何将图像分割成属于不同语义类别的区域。这些语义区域的标注和预测都是像素级的。
下图展示了语义分割中图像有关狗、猫和背景的标签。与目标检测相比,语义分割标注的像素级的边框更加精细。
图像分割和实例分割
另两个相似问题。
- 图像分割(image segmentation):常利用图像中像素之间的相关性,将图像分割成若干组成区域。在训练时不需要有关图像像素的标签信息,在预测时也无法保证分割出的区域具有我们希望得到的语义。只是将图像分割不分类
- 实例分割(instance segmentation):不仅需要区分语义,还要区分不同的目标实例。分类还要识别具体身份
全卷积网络(fully convolutional network,FCN)
采用CNN实现了从图像像素到像素类别的变换。
通过转置卷积(transposed convolution)层将中间层特征图的高和宽变换回输入图像的尺寸,从而令预测结果与输入图像在空间维(高和宽)上一一对应:给定空间维上的位置,通道维的输出即该位置对应像素的类别预测。
转置卷积层得名于矩阵的转置操作;而卷积运算可以通过矩阵乘法来实现
卷积运算的矩阵描述
设输入向量为
,权重矩阵为
,卷积的前向计算可看作:
。反向传播需要依据链式法则。由于
,卷积的反向传播函数可看作乘以
。转置卷积层交换了卷积层的前向计算函数与反向传播函数:可看作将函数输入向量分别乘以
和
。所以转置卷积层可以用来交换卷积层输入和输出的形状。设权重矩阵是
的矩阵,对于长度为16的输入向量,卷积前向输出长度为4的向量。将此输出送至形状为
的转置权重矩阵,输出长度为16的向量。
转置卷积层常用于将较小的特征图变换为更大的特征图。在全卷积网络中,当输入是高和宽较小的特征图时,转置卷积层可以用来将高和宽放大到输入图像的尺寸。
全卷机网络模型
全卷积网络先使用卷积神经网络抽取图像特征,然后通过
卷积层将通道数变换为类别个数,最后通过转置卷积层将特征图的高和宽变换为输入图像的尺寸。模型输出与输入图像的高和宽相同,并在空间位置上一一对应:最终输出的通道包含了该空间位置像素的类别预测(猫、狗、背景)(可能是因为网络都是卷积层而得名吧)