查看原文
其他

【源头活水】BoxInst—只用bbox标注进行实例分割

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

作者:知乎—左育莘

地址:https://www.zhihu.com/people/zuo-yu-xin-8

Paper Link:https://arxiv.org/abs/2012.02310


01

总览
使用只有bbox标注的数据进行实例分割的训练。
Core idea:重新设计实例分割中learning mask的loss设计,没有对分割网络进行改进。
新的loss可以监督mask的训练,并且不会依赖于mask的annotation。
两个loss项:
1)最小化gt box的投影和pred mask之间的差异
2)Pair-wise Loss,利用先验:具有相似颜色的相邻像素之间很有可能来自于同一类。
在CondInst的方法基础上换新的Loss项:
CondInst:
原来的Loss:
其中:
可以看到这里需要用到Mask annotation。
文章将其换成2个新的loss:
1)Projection Loss
这个loss会利用box annotation来监督预测的Mask的水平和垂直投影,来保证生成的Mask prediction在GT box框内。
令GT Box b在水平和垂直方向上的投影为lx,ly(都是二值向量),mask prediction也有对应投影,那么Loss为:
其中L为CondInst中的Dice Loss。
2)Pairwise affinity Loss
首先,假设知道GT mask。
Consider图像中有一个无向图G = (V, E),其中V代表图像中的像素的集合,而E代表边的集合。每个像素和它的 K x K - 1 相邻元素相连。
定义边e的label为0或1。其中:1:这个边的两个节点有相同的GT Label;0则相反。
因为GT mask已知,因此边e的label也是已知的。
设某条边的两个节点为(i, j)和(l, k),实例分割网络进行预测的时候,每个像素的输出可以看成是像素点属于前景的概率,因此,根据网络的输出,这条边的label为1的概率为:
网络利用边的预测和边的gt(边的gt可以通过mask annotation得到,前面提到这里是已知mask annotation的)做Loss:
因此,在Fully supervised的设置下,网络的Loss为:

02

Mask learning without mask annotation
一个重要的发现:如果两个pixel有相似的颜色,那么他们很可能有相同的label(边的label很可能为1)
因此,文章使用一个color similarity threshold τ,如果两个像素点的color similarity 超过 τ,那么对应的边的label就很大概率为1。
连接(i, j)和(l, k)的边对应的Color similarity的定义为:
文章使用LAB颜色空间来得到对应的颜色向量(θ=2)。
然后就可以根据这个similarity来计算Loss:(只考虑color similarity > τ的边)
文章统计了在不同的τ下,
根据颜色相似度得到的“positive edge在所有S > τ的edge的比例”;
以及“supervised positive edge占所有positive edge”的比例,如图:


03

实验
方法只需要修改CondInst的mask loss。
COCO训练:batch size:16(8x2),iteration:90k,Backbone:ResNet-50
评价指标:COCO style mask-AP
1)两项Loss的作用:
把网络的Loss换掉以后的性能对比:
2)计算Pair-wise Loss时,color similarity thr的变化带来的影响:
就算τ=0(认为所有在Ein里的边连接的点都是positive),准确率也达到了94.1%(94.1%的点确实是positive点)
但是AP 很低,GT box里面的所有点都被预测为positive。(仔细思考Ein的定义就知道这样的assign法则会使得网络输出的mask占满GT box,而不是instance。)
当把 τ 调到0.1,准确率达到 98.3%,模型性能也提升到了30.7的AP。
继续提高 τ 会掉点,因为positive数量减少了。
3)计算pair-wise loss时,相邻元素的提取方式对比:( τ 取 0.1 )
4)每个Loss项的贡献:
5)Compare with SOTA:
这也太狠了
6)在Pascal VOC数据集上(val 2012)的实验:


04

扩展:半监督实例分割
首先把COCO里的80类分成2组:一组包含20类;另一组包含60类;
数据策略:一组数据包含mask annotation,另一组只含有box annotation(unseen classes data)。
模型的评估:在没有mask annotation的类别上计算mask AP并平均。
在没有用到文章的Loss之前,需要用到mask annotation进行Loss的计算,这样的话就只能用到20类的数据,因此在只含有box annotation的数据上,效果差( AP 19.9 )
加上文章的Loss以后,文章的Loss就可以利用mask annotation计算Loss对网络进行训练。
效果提升:
(1)20类的数据组含有mask annotation,60类的数据组只含有box annotation:
(2)60类的数据组含有mask annotation,20类的数据组只含有box annotation:

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存