全景FPN(全景分割)学习笔记
1.简介
何为全景分割?简而言之就算把语义分割和实例分割统一到一起。然而,以前的state of the art都是把这两个任务分开,单独进行的,没有将能够统一的计算统一到一起。而本文就对带FPN的Mask R-CNN进行了稍微的修改,在实例分割的基础上增加了语义分割的功能。
具体而言,Mask R-CNN的FCN分支已经实现了实例分割。而语义分割,(1)需要能够看到整张图片的信息,(2)需要利用多尺度特征,并且能够进行特征融合,将低层次的特征图concatenate到高层次的特征图上,以保持细节信息,如FCN、U-Net等。因为语义分割,作为一种密集预测,对细节信息是十分注重的。而FPN刚好满足能满足上述两个要求,故可以从FPN扩充出语义分割分支。
2.网络结构
实例分割部分:就单纯是由原本的Mask R-CNN网络来完成,特别地,Mask由FCN分支提供。这里不再累述。语义分割部分:由FPN扩充出来一条语义分割的分支出来。因为FPN有着与生俱来的语义分割潜质,就其结构图都与U-Net很像。
左边是上采样部分。每经过一次上采样,feature map size减半,最终下采样倍数为1/32,而channels一直保持为256。右边为特征融合和上采样部分。每一个交界处,先进行上采样,输出的特征图的size恒为1/4,channels恒为128;然后进行特征融合,在相同层次处,先对左侧的特征图进行卷积或放大(双线性上采样),使得其size与右侧特征图的size相等,然后将两部分特征图concatenate起来,作为下一个交界处的输入。最后输出的特征图的size下采样倍数为1/4,通道数为128,为了对应到原始图像的size,得到最终的掩模图,对该特征图进行卷积核放大,使得其输出的size为原始输入图像的size,通道数为1。
3.inference and training
3.1.解决重叠
实例分割和语义分割的输出结果可能会产生重叠,如何解决这个问题?通过一个类似于NMS的后处理操作来解决这个问题:
(1) resolving overlaps between different instances based on their confidence scores
(2) resolving overlaps between instance and semantic segmentation outputs in favor of instances
(3) removing any stuff regions labeled 'other' or under a given area threshold(这里的stuff regions是指背景区域)
3.2.损失函数
对于实例分割,损失值有3个部分,分别是: Lc (classification loss), Lb(bounding-box loss), 和Lm (mask loss),所以实力分割的损失值为Lc+Lb+Lm。对于语义分割,损失值只有一个部分,就是Ls( a per-pixel crossentropy loss between the predicted and the ground-truth labels)。
显然。模型最终的损失函数由实例分割损失和语义分割损失两部分组成,为了调和两部分损失所占的比重,引入两个参数λi和 λs。最终的损失函数为: L = λi (Lc + Lb + Lm) + λsLs。其中λi和λs两个超参数需要自己调整来找到适合的值。
posted on 2020-08-15 23:06 ZhicongHou 阅读(687) 评论(0) 编辑 收藏 举报