
目标检测只需要预测图像中每个对象的位置和类别,语义分割还要把每个像素都进行分类,实例分割要进一步把每个对象的不同实例都区分开来。
为了对一个像素分类,传统的分割方法是是:使用该像素周围的一个图像块作为CNN的输入用于训练和预测。这种方法有几个缺点:1、存储开销大,每个像素使用15*15的图像块,存储空间为原来的225倍;2、计算效率低下,对每个图像块计算存在大量重复计算,3、像素大小限制了感知区域的大小,分类性能受限。
全卷积网络FCN
利用FCN网络进行语义分割,需要对每个像素进行所属实物类别分类标记。需要建立一个端对端的网络,输入是整幅图像,输出是每个像素的类别标签。
FCN网络特征:1、是一种没有全连接层的卷积网络,把传统卷积网络的所有全链接层都改造成相应大小的密集卷积层。2、除了卷积层和下采样层,另外还包括上采样层和反卷积层等其它具有空间平移不变形式的层。
FCN对图像进行像素级分类,采样反卷积层对最后一个卷积层的feature map进行上采样,使它能恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测,同时保留了原始输入图像中的空间信息,最后在上采样的特征图上继续宁逐像素分类。逐个像素计算softmax分类的损失,相当于每个像素对应一个训练样本。
CNN模型构造的实质是网络最后一层的输出跟我们要求的参数格式一致。这样就可以利用样本标记的参数值对模型进行拟合训练。SSD输出最优选框的类别及位置值(x,y,w,h);而FCN需要保留原始的图像空间信息输出每个像素的类别值,对FCN的训练样本需要人工标记每个像素的类别矩阵。反卷积的操作只是恢复了像素点的尺寸大小,并不能恢复每个元素值。
FCN的优点:1、可以接受任意大小的输入图像,没有全链层;2、避免了由于使用像素块带来的重复存储、计算,更高效。
FCN的缺点:1、得到的结果还不够精细,8倍上采样比32倍效果好,还是比较平滑;2、只对各像素分类,没考虑像素间关系。
FCN的扩展:在得到像素分类结果后使用了全连接的条件随机场。1、忽略下采样过程,用稀疏卷积核增加感知范围。2、使用了全链条件随机场(fully connected conditional random fields)。
CRF的能量函数中包含数据相和平滑项两部分。数据项:与各个像素属于各类别的概率有关;平滑项:控制像素间类别的一致性。传统的平滑项只考虑相邻像素类别的关联性。Fully connected CRF考虑任意两个像素类别关联性。CRF是对CNN或FCN输出的一种后处理技术。Shuai zhang等将Fully connected CRF表示成回流神经网络的结构CRNN,与CNN放在同一的框架中,可以一步到位对两者同时训练。将图像分割中的三个步骤全部自动化:特征提取、分类器预测、空间归整CRNN与CNN相结合。
掩膜区域卷积网络Mask R-CNN 实例分割
实例分割实际上是目标检测与语义分割的结合,是在目标边框特征图的基础上对每个像素进行分类训练。是在检测到的目标物的范围内对目标边缘进行提取。
目标:既要正确检测出图像中的所有对象,又要将不同对象精准区分开来。详细描绘出物体边缘。比如区分不同的人,不同的杯子。
模型:Mask R-CNN是在扩展Faster R-CNN的基础上建立起来的,关键在于创建掩膜分支,掩膜分支是一个用在ROI上的小型全卷积网络结构,包含两个不同的部分:脊柱结构、头部结构。“脊柱结构”称为“网络深度特征”,用来从整幅图像中提取特征;“头部结构”用来进行边框识别,并单独用来对每个ROI进行掩膜预测。
脊柱结构可以用残差网络ResNet或更有效的金字塔网络FPN来实现。头部结构就是在脊柱结构上增加的分支部分,包括原来Faster R-CNN的边框头部和新增的掩膜头部。

测试时,推荐候选区的数量与脊柱有关,ResNet结构为30个,FPN结构为1000个。每个推荐区域都要运行边框预测分支,然后进行非极大值抑制。掩膜分支只应用于得分最高的100个检测边框,目的是利用更少更精确的ROI加快速度。掩膜分支能够给每个ROI预测k个掩膜,但只用根据分类分支预测决定的第k个掩码。最后,m*m浮点数大小的掩膜输出被归一化到ROI的大小,并以0.5为阈值进行二值化。(由于Mask R-CNN只在前100个检测边框计算掩膜,增加编辑运行成本不多,约20%)
输出:目标物类别,定位参数,m*m掩膜像素级二值(每个像素是否为该目标物)。
多任务损失:L=Lcls(分类损失)+Lbox(边框损失)+Lmask(掩膜损失)
掩膜分支在每个ROI上产生一个km2维输出,为k个类别各编码一个m*m的二值掩膜。Lmask是一个用像素级sigmoid定义的平均二值交叉熵损失。如果一个ROI关联的真实类别为k,那么Lmask只在第k个掩膜上有定义,不受其他掩膜输出的影响。


