NeurIPS 2022 - SlotCon: 以对象为中心的自监督表征学习


Object discovery旨在无监督地发现图像中的物体,而此前该领域中的工作长期局限于合成数据集。在发表于NeurIPS 2022的工作Self-Supervised Visual Representation Learning with Semantic Grouping (SlotCon)中,我们试图传达这样的消息:在大规模真实世界图像数据上,无监督且可学习的object discovery是可行的,并且可以与object-centric自监督表征学习结合,互利彼此。



Context:基于场景数据的自监督预训练


左:object-centric数据与scene-centric数据对比;右:建立在不同粒度feature上的对比学习范式。


这篇工作主要面向的问题是基于场景数据的自监督视觉表征学习(预训练)。传统的视觉预训练框架往往局限于类似ImageNet的object-centric数据集:每张图往往聚焦于一个醒目而单一的物体;而我们希望将这种范式推广到更为general的场景数据上(如COCO):每张图片上可能有多个物体,大小各异,且分布多样。这种推广的好处是显而易见的:对收集数据有更低的要求、预训练数据与下游(检测与分割)数据有更小的gap、单张图片包含的信息更为丰富。然而,直接将先前的图像级对比学习框架应用到场景数据上并不自然,因为现在代表一个图像的vector不再表示一个物体,而是一整个场景。


在上图右侧我们对比了三种不同的对比学习范式:两个view间对比学习loss的一致性关系建立在图像级、像素级,还是对象级表征之间。图像级表征对于场景数据过于粗糙,而像素级表征又过于精细,这条线的工作往往还要加一个图像级的loss来补充high-level的信息。最右这种对于每种物体/语义单独表示,再在object-level representation之间进行对比学习的范式较好地平衡了表征的粒度,也更适合场景数据。然而,这里引出了一个关键问题:如何无监督地找到这些物体(object discovery)?



Object Discovery


Objectness priors


往期工作为了获取objectness prior,往往采用一些hand-crafted method,例如saliency, selective-search, 传统分割方法, k-means clustering等。然而这里有一个concern:手工设计的objectness prior可能会限制所学representation的upperbound,那么我们是否可以让object discovery这部分也end-to-end地学习呢?


Object discovery其实也是个挺热门的领域(详细的review见paper related work),但是这方面的工作一直主要局限于合成数据集(如CLEVER),学习范式基本也是autoencoder+重建。在真实场景数据work的工作往往基于视频,且依赖motion或depth作为condition。概括来讲,它们的philosophy都是基于bottom-up的策略(texture, motion, depth, ...)去获得objectness,对于合成数据怎么搞都行,但是真实场景中low-level cue的组合就太过复杂,难以从单张图像中compose出object。这里我们转而采用top-down的策略,从整个dataset中总结high-level的共性:如上图右侧所示,我们学习一些含有语义的prototype(每个prototype绑定到不同语义),这样对于feature map中的每个pixel,只需要assign它最近邻的prototype作为label,单张图中label相同的pixel即构成了一个object(严格意义上应当称为semantic object)。


OK,听上去好像不错,那么这些semantic prototype从哪来?我们采用的技巧可以简单概括为pixel-level deep clustering。Deep clustering旨在于采用可学习的方式得到有意义的prototypes,其核心insight为:同一张图的不同增广版本应当有同样的prototype assignment(pseudo label),另外需要一些正则项来保证prototypes的多样性。这个套路应用到pixels上也同样有效,并且在unsupervised semantic segmentation上也有成功的先例(PiCIE) 。我们的方法可以理解为综上技巧的有机结合。



方法概述


SlotCon整体框架


我们的框架完全随机初始化,在没有任何label的情况下,end-to-end地同时学习解决object discovery以及object-centric representation learning两个task。技术上,最最简单的理解可以认为是pixel-level DINO+object level MoCo v3。对于object discovery,我们在pixel-level assignment maps上将两个view中的overlap区域切出来并在空间上align好,对于每个位置相同的pixel-pair,要求其对prototypes的assignment一致;对于representation learning,我们在feature map上将语意相同的pixels聚合到一起(称为slot, 即object-level representation),在不同view间的slots上进行contrastive learning。两个objective相互促进,共同优化。



实验

对representation learning的评估


这里和其他做pretrain的工作类似,只取backbone然后在object detection/instance segmentation/semantic segmentation任务上做transfer learning来做评估。


COCO pretrain结果


我们在场景数据pretrain的基准setting为COCO pretrain 800 epochs。在不采用multi crop这种trick以及不采用objectness prior的情况下,我们的方法相对于先前工作在所有下游任务上都体现了显著的提升。


COCO+ pretrain结果


更进一步,我们把COCO unlabeled子集也加进来,构成COCO+(大概两倍COCO大小),效果进一步显著提升。



更为激动人心的是,COCO+只有ImageNet-1K的1/5大小,而我们却可以得到和ImageNet-1K近似的表现,这说明我们的方法成功利用到了场景数据中蕴含的更为丰富的信息。


ImageNet-1K pretrain结果


我们也汇报了在经典的object-centric数据集ImageNet-1K上pretrain的结果。在不针对检测任务做特别设计(带FPN head一起pretrain),以及不利用objectness prior的情况下,我们的方法也有着不错的表现。


对object discovery的评估


Unsupervised semantic segmentation结果


需要注意的是我们的框架focus在representation learning,所以采用了很低的分辨率(7x7)。这里在unsupervised semantic segmentation上的评测只是为了对网络的object discovery能力有定性和定量的认识,而非在该task上提出一个新的SOTA。这里prototype和真实class的匹配采用了hungarian matching。尽管boundary并不太好,这个质量对于pretraining来说已经完全够用了。


prototype可视化


我们进一步可视化了每个prototype的nearest neighbors,如上图,prototypes可以绑定到一系列不同的语义上,它们范围广泛,而且对物体大小或遮挡与否并不敏感。这个结果可以说非常有趣了。


消融实验



比较值得注意的消融实验有两个:一是要把prototype的数量设定在一个比较接近pretrain数据集真实语义数量的值(COCO设256);二是data augmentation中geometric augmentation非常重要,如果一直采用两个identical crops,模型就学不到objectness,representation质量也会明显下降。更详细的ablation study请参见paper。



其他discussions

如何学到有意义的objects


经验上我们总结了3个关键点:


1. geometric covariance和photometric invariance:前者对应resize, flip等变换,后者对应color jitter, gaussian blur等变换。


2. 避免坍缩:follow deep clustering中避免prototypes坍缩的技巧。


3. 把prototype数量设定在一个比较小,接近数据集真实semantic数量的数值(默认COCO采用256,ImageNet采用2048)。


模型的bias


作为一个learnable的方法,总是要有些bias的。我们发现模型对COCO中的头部类别:human相关概念有特别的偏好,会慷慨地分配很多prototype给与人相关的运动以及身体部位。我们分析是网络认为这样会更容易解决pretext task。而对于更少出现的其他动物,分配一个prototype就好。如何更好的引入类别粒度的先验会是一个值得讨论的问题。


模型学到的human-related prototypes


而在更为极端的pretrain数据,例如自动驾驶场景上,模型表现也有一定程度降低。在这种长尾且多样性较差的场景数据上如何进行更有效的pretrain也是值得进一步研究的问题。



一些关于slots的数据


我们也统计了一些关于slots的数据。在训练过程中,随着模型表征能力与object discovery能力逐渐增强,每张图上的slot数量逐渐降低,最终收敛到与真实的平均单图物体数(7.3)接近的水平。至于每个prototype被激活的频率,则与真实类别分布类似(因为每个prototype绑定到一种语义)。




总结


我们的方法说明:自然场景的分解(scene decomposition)可以和representation一起learn from scratch;semantic grouping的范式让大规模真实场景图像数据中的object discovery成为可能;二者的结合促生了一种在场景数据上进行自监督预训练的有效方法。

展开阅读全文

页面更新:2024-04-21

标签:表征   范式   语义   物体   场景   图像   对象   真实   方法   数据   工作   中心

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top