作者 | 平山海 

今天跟大家分享由Meta AI和加利福尼亚大学伯克利分校、密歇根大学共同提出的无监督目标检测和实例分割方法CutLER(Cut-and-LEaRn)。



自监督目标检测 无监督 目标检测_人工智能

开源代码:https://github.com/facebookresearch/CutLER

简要描述:作者提出了CutLER(Cut-and-LEaRn),该方法利用自监督模型找到图片中的目标,将其作为真值训练目标检测和分割模型,整个过程不需要人工标注。

效果如下图所示:

自监督目标检测 无监督 目标检测_深度学习_02

1.算法的整体流程

(1)在TokenCut的基础上,作者提出MaskCut,利用DINO模型提取的特征,使用自监督的方法产生多个目标的mask。

(2)以自监督得到的mask作为真值,训练目标检测和分割算法;针对自监督得到的真值mask会漏掉一些真实目标的问题,作者使用了动态loss下降策略DropLoss。

(3)通过多次self-training来进一步提高检测和分割模型的性能。

整体流程如下图所示:



自监督目标检测 无监督 目标检测_Mask_03

优势

(1)可应用于任意检测数据集和检测模型。

(2)可应用于zero-shot场景。

(3)在域切换(domain shift)时有很好的鲁棒性。

(4)可以作为监督学习的预训练模型。

2.MaskCut

作者参考了TokenCut,关于TokenCut的解读参考:

无需标签做显著性目标分割|腾讯、MIT、三星等提出TokenCuT,发表于CVPR2022

TokenCut的缺点是,只能分割出图片中的单个目标。作者对TokenCut做了扩展,提出MaskCut用于做图片中的多目标分割。

MaskCut的流程如下图所示:



自监督目标检测 无监督 目标检测_Mask_04

简而言之,对单张图片进行多次TokenCut。在第t次TokenCut操作后,需要抠除本次操作得到的前景,然后再进行第t+1次TokenCut。

“抠除本次操作得到的前景”的具体实现是将graph中前景对应的node之间的相似度置0,即:

在MaskCut中,一般进行3次TokenCut。

3.DropLoss

MaskCut中得到的mask,可能会漏掉某些目标的像素。若将这样的mask作为后续训练的真值,会不利于模型的性能,因为这个真值是不完美的。

为了解决该问题,作者提出了DropLoss。在训练时,如果预测区域与真值的重叠区域小于,则忽略该预测区域的loss值。

DropLoss表示如下:

上式中的表示目标检测器的原始loss;表示预测区域与所有真值的最大IoU。

4.多次self-training

作者通过实验发现,尽管在训练时使用的真值是不太完美的,但是训练后的模型,预测结果的质量超越真值。这说明使用DropLoss训练得到的检测器会对真值进行精炼(refine)。基于此发现,作者使用了多次训练,进一步精炼检测和分割结果。

在进行第t+1次训练时,还额外使用了第t次训练得到的模型得分超过的预测目标作为伪标签。为了对伪标签和真值进行去重,删除掉与伪标签的真值。因为经过多次训练得到的伪标签要比自监督得到的真值更可信。

通过实验发现,3次self-training就能得到不错的结果。如下图所示:



自监督目标检测 无监督 目标检测_目标检测_05

5.实验

实验细节

作者使用了Mask R-CNN和Cascade Mask R-CNN进行实验。



自监督目标检测 无监督 目标检测_深度学习_06

自监督目标检测 无监督 目标检测_自监督目标检测_07

实验结果



自监督目标检测 无监督 目标检测_目标检测_08

自监督目标检测 无监督 目标检测_深度学习_09

自监督目标检测 无监督 目标检测_自监督目标检测_10