启发:
论文名称:GroupViT: Semantic Segmentation Emerges from Text Supervision
论文链接:https://arxiv.org/abs/2202.11094v4
分割中存在的背景类问题,Group VIT在推理过程中是如何考虑背景类的呢?
在做zero-shot推理的过程之中,不光是选择最大的那个相似度,因为有的时候,最大的那个相似度可能也比较小,可能最后就只有0.2或者0.3左右。作者为了尽可能的提高前景类的分割性能,因此就设置了一个相似度的阈值,比如说对于pascal voc这个数据集来说,它的阈值就设置成了0.9和0.95 ,也就是说grouping embedding和文本的相似度必须超过0.9,而且是取得最大的那一个,这样才能说grouping embedding属于这一类。如果说grouping embedding跟所有的文本特征的相似度都没有超过0.9,那么这个模型(Group VIT)就认为其属于背景类,就不是一个前景。
但是这套方案对于pascal voc来说还好,因为本来的类别数就少,而且这个数据集里面就是实打实的物体,这个物体有非常明确的语义信息,因此不太存在这个背景类的干扰的问题。但是把这套框架移植到pascal context或者做COCO数据集的时候,这个问题就非常的显著。因为这个时候数据集里面的类别非常的多,那么这个置信度或者说相似度一般就会比较低,就很容易出现前景物体的置信度和背景物体差不了多少。那这个时候怎么设置这个阈值就成为一个很关键的问题。如果把阈值设得很高,那么基本上大多数都变成了背景物体,那么前景类别的这份mIou分数(mIoU (Mean Intersection over Union),也被称为平均交并比,是用于评估图像分割、边界框检测和语义分割等计算机视觉任务中模型性能的一个重要指标。它衡量的是预测结果与真实标签之间的重叠部分相对于它们联合覆盖区域的比例的平均值。)就会变得很低。如果将阈值设的很低,就会造成错误分类的问题,就是有可能其相似度最高的那一类并不是真正正确的那一类。
作者通过肉眼的观察发现:Group VIT这个group token学的挺好的,即真正的分割做的很好了。比如他是真的把那个人啊或者桌子或者其他类别都分割出来了,但是只不过最后的分类给分错了。作者为了验证到底是不是因为分类的错误导致这个COCO和这个context数据集性能这么低。作者做了一个上线的实验,如果说Group VIT给他输出了一个prediction mask,作者就拿着这个mask去跟所有的Ground Truth mask去做对比。一旦他大仙那个Iou最大,那么他就把Ground Truth的label直接就给这个Group VIT prediction mask当成它的标签。那这样一来,只要你这个分割做的好,那么这个分类就肯定不会错。因为你就相当于是直接从Ground Truth那边拿过来的标签。作者就发现无论是对于voc来说,还是对于后面两个更难的数据集来说,这个上线的mIou一下就增加了20、30个点。现在就和有监督的那边模型的最高的性能差不多了。这就验证了Group VIT的这个结构,尤其是group token和grouping block其实是非常的有效。因为其已经把Segmentation mask生成的很好。它分割做的很好,它只是没有把语义分割做的很好,因为其分类错了很多。
这个现象归根到底的原因在于CLIP这个训练方式。因为CLIP的这个训练方式只能学到那种物体的语义信息非常明确的东西,它学不到这种很模糊的,比如说什么是背景。因为背景可以代表很多很多类,他是一个很模糊的概念。所以说CLIP的这种训练方式就没有办法学到这种背景类。
对于这个限制的解决方案有很多,比如说阈值怎么设置,是不是应该根据每一个类别去设置,是不是应该可以有一个可学习的阈值,或者说把整个这个zero-shot的推理过程给改了,或者说在训练的时候再加上一种约束,能把背景类这种概念融入到训练之中。这里有许多可以挖掘的东西,请读者自行研究和探索。