前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“先粗后精”的实例分割,BPR:使用Crop-then-Refine的性能提高方法

“先粗后精”的实例分割,BPR:使用Crop-then-Refine的性能提高方法

作者头像
CV君
发布2021-08-05 13:06:19
1.1K0
发布2021-08-05 13:06:19
举报
文章被收录于专栏:我爱计算机视觉

题目:Look Closer to Segment Better:Boundary Patch Refinement for Instance Segmentation

论文:https://arxiv.org/pdf/2104.05239.pdf

源码地址:https://github.com/tinyalpha/BPR

0

动机

实例分割任务在自动驾驶和机器人领域广泛使用。近年来,深度学习的发展使得实例分割任务的性能不断提高,但仍面临挑战。实例分割任务的挑战之一是现有的分割算法对于实例边界的分割仍不够理想,如下图左边一栏所示:

观察上图左边一栏的实例分割结果,实例的主体分割结果很好,但是在细节处不太理想。作者认为造成这种现象的原因有二:

(1)网络输出feature map的分辨率过小,导致了细节信息的丢失;

(2)实例边沿处的像素在整个图像中占比很少,且在边沿处比较难区分像素的类别。

通过借鉴人工标注实例分割任务标签时的方法,即先定位整个物体,标出大概轮廓,然后放大局部图像,修正实例边界;作者提出了Boundary Patch Refinement(BPR)方法提高实例分割网络在实例边界处的分割性能。使用BPR进行instance mask边界优化的结果如上图中右边一栏所示。

01

总体结构

从直觉上来讲,高层次的信息用于定位和粗略分割物体,低层次的信息更关注物体的局部边界。作者借鉴人工标注实例分割任务标签的方法,使用“crop-then-refine”的策略。总体流程如下图所示:

先使用一个普通的实例分割方法生成instance mask,在mask边界抽取若干小的image patch,如上图中图(b)所示;然后使用NMS滤除一些冗余的image patch,得到上图中图(c)的结果;将这些小的image patch和它们对应的mask patch输入到一个refinement network中,得到二值化的精细分割结果,如图(f)所示;最后将refine mask填充到instance mask的对应位置,得到最终结果。

BPR结构可以看作普通实例分割网络的后处理部分,因此BPR可以与任何实例分割网络结合使用,不需要改变实例分割网络的结构或者微调实例分割网络的权重,达到提高物体边界区域分割效果的目的。

BPR是以image patch和其对应的instance mask patch作为输入,image patch一般比较小,因此可以通过增大image patch的分辨率,使得BPR能够提取更丰富的细节信息。在image patch中,物体边界像素所占的比例比较大,有利于BPR提取物体边界信息。

02

Boundary Patch Refinement网络

BPR将image patch和其对应的instance mask patch作为输入,输出二值语义信息;通过训练BPR网络,使得其输出的语义信息对物体边界的分割效果比较好。

无论是实例分割还是语义分割,网络都需要提取全局上下文信息以保证其分割性能。单独的image patch不包含全局信息,如果BPR网络只使用image patch作为输入特征,由于缺少全局信息,训练完成后其性能并不会很好,如下图第4列所示,下图从左到右依次为image patch的ground truth、Mask R-CNN输出的instance mask、带mask patch输入的BPR分割结果和不带mask patch输入的BPR分割结果。

由于mask也作为输入,BPR网络只需要更关注低层次的特征,从而学习到物体边界像素的位置信息。此外,若输入图像中2个物体是相邻的,会出现2个物体共用边界的情况,比如上图第二行中2辆车共用边界,这种情况下如果不使用mask作为BPR的输入,会导致网络在学习过程中出现模糊性,比如上图第二行最后一列,BPR错误地将另外一辆车分割出来。

由于BPR网络需要实现二值语义分割功能,因此可以使用任何语义分割网络作为BPR网络,只需将原网络输入图像通道数由3改为4,因为需要同时输入image patch和instance mask patch。

作者使用HRNetV2作为BPR网络,在image patch进入BPR网络之前,会进行resize操作以适当地增加其分辨率,从而使BPR能够提取更多的边界细节信息。

将BPR的输出结果resize成原image patch的尺寸,替换掉原instance mask中的对应部分。对于多个image patch的重叠区域,取结果的平均值。使用0.5作为阈值区分BPR输出的语义分割结果是前景还是背景。

03

一些实现细节

使用成熟的实例分割网络作用于训练集,得到比较粗的分割结果,从中筛选出预测结果与ground truth的IoU大于0.5的物体实例,提取边界的image patch用于训练BPR。

在训练BPR时,使用二值交叉熵损失函数。在训练时,过滤image patch的NMS阈值设为0.25,在推理时,NMS阈值设置为0.55。

选取HRNetV2-W48作为BPR网络,使用MMSegmentation为基础构建,使用随机水平翻转和随机像素扰动用于数据增强。在选取image patch时,尺寸为64x64,然后将其resize为256x256作为BPR的输入。

04

实验结果

在Cityscapes训练集上训练,在验证集和测试集上测试,在Mask R-CNN和PolyTransform两种不同的实例分割方法的输出结果中使用BPR方法,性能提升情况如下表所示:

从上表中可以看出,在Mask R-CNN实例分割网络后面加入BPR算法,能够极大地提高实例分割性能。

此外,使用Mask R-CNN作为实例分割模型训练的BPR,也能直接结合其他实例分割模型一起使用,比如结合上表中的PolyTransform模型使用,同样能够达到提高性能的效果。

说明BPR不仅能够结合不同的实例分割模型使用,而且结合实例分割模型A训练的BPR能够直接结合模型B使用,不需要重新训练。

在Mask R-CNN基础上,使用BPR方法与否的可视化对比如下图所示:

从上图可以看出,使用BPR方法后的分割结果在物体边界上分割得更准确。

05

总结

  • 借鉴人工标注实例分割任务标签的思想,使用“crop-then-refine”的模式,设计出BPR方法;BPR将instance mask边界的image patch和对应的mask patch作为输入,预测更精细的物体边界。
  • BPR模型需要结合实例分割模型一起使用,在现有的实例分割模型的基础上使用BPR,能够极大地提升模型对物体边界的分割效果。
  • 训练好的BPR模型能够和所有的实例分割模型搭配使用,且在更换实例分割模型时不需要改变BPR模型的权重。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一些实现细节
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档