FightingCV

V1

2022/09/13阅读:14主题:默认主题

谢凌曦:按需视觉识别的愿景和初步方案

谢凌曦:按需视觉识别的愿景和初步方案

来源:https://zhuanlan.zhihu.com/p/546510418[1]

背景和研究动机

这个工作的动机,来源于我对于视觉识别局限性的思考。我先简单地做一些铺垫。这些铺垫和这个工作没有直接联系,读者可以跳过直接看正文。

众所周知,当前基于深度学习的计算机视觉算法,与人类的学习方式具有本质不同。其根本性原因在于:人类是在一个真实的三维世界中,以任务为驱动,进行交互式学习,而计算机只能通过标注数据来学习各种分散的任务。为什么会有这样大的区别?其实早在上个世纪70年代,计算机视觉的先驱之一David Marr(Marr奖的纪念对象)就表达过他的观点:计算机视觉算法的根本目的,是建立环境的三维模型,并且在交互过程中进行学习。然而,将近半个世纪过去,人们还是没有实现这个愿景。这里的主要原因,是三维模型难以构建,例如下面的两套方案:

  1. 将真实世界建模为虚拟环境,以训练智能体。这种方式的困难之处在于,人类目前还无法构建起足够真实的虚拟环境(从虚拟环境向真实环境迁移时,通常会遇到比较大的domain gap,以致于诞生了unsupervised domain adaptation等专门的领域);即使真实性得到了解决,也无法在虚拟环境中模拟真实智能体的行为,导致无法以任务来驱动学习。在这条路上走得比较远的,是一些简单的环境,比如棋类游戏和Atari游戏等,但是它们的复杂度和真实世界相比,有非常大的差距。

  2. 将智能体放置于真实环境中进行学习。这种方式的困难之处在于,智能体在真实环境中的不可控性,将产生巨大的试错成本,包括对环境产生的危险性(如自动驾驶)和其他智能体(主要是人)与它们交互的人力成本。在这条路上走得比较远的,是一些机器人相关的研究,但是它们只能在受限环境中完成行走、抓取等相对简单的任务。

由于无法对世界建模,人们就只能退而求其次,对世界采样,并且从样本中学习。这就是为什么人们要构建、标注越来越大的图像数据集:数据集的规模越大,采样的精度就越高,就越能反映真实世界的规律。然而,这种方式是极其低效的。一方面,随着数据集的规模不断增大,上述方案产生了明显的边际效应,使得学习方法的性价比不断降低;另一方面,随着视觉概念的不断增加和细化,视觉标签的歧义性不断上升,使得评价指标的不确定性显著增加。这里所谓视觉标签的歧义性是说,随着标签种类数的增加,一个物体究竟属于什么类,哪些部分属于这个类,就会变得不确定起来——前者可以参照ImageNet,不少物体细粒度标签存在歧义性;后者参照各种part-based数据集,一只狗的头部和躯干的边界究竟在什么地方,其实是很难定义的,遑论更加细粒度的part了。

更重要的是,人类并不需要基于分类来认知世界。举一个直观的例子。在ImageNet中,存在着“家具”和“电器”两个大类;显然“椅子”属于“家具”,而“电视机”属于“家电”,但是“按摩椅”属于“家具”还是“家电”,就很难说了。然而,人类并不纠结于这件事:一个人到商场里买东西,不管商场把“按摩椅”放在“家具”区还是“家电”区,人类都可以通过简单的指引,快速找到“按摩椅”所在的区域。

综上所述,随着视觉识别的不断细化,基于分类的识别任务终将遇到不可逾越的瓶颈。这里基于分类的识别任务,包括分类、检测、分割等一切需要给目标打上明确标签的任务,因为基于分类的标注无法满足视觉信号具有的近乎无限细粒度的特性。换句话说,只要人类愿意,就可以从一张图像中识别出越来越细粒度的语义信息(如图1所示);而这些信息,很难通过有限而规范的标注,形成语义上完整的数据集,供算法学习。我在去年年中写了一篇opinion paper,整理了这些观点(见下)。经过一年的思考,我们终于在opinion paper的基础上迈出了一小步。

图1 现有数据集(如MS-COCO)距离完整地识别所有语义信息,还相差甚远。其中下划线和红色字体标出的部分,都是未在数据集中呈现,而人类能够轻易识别或描述的语义内容。

走向按需视觉识别

基于上述分析,当前基于封闭域(closed-domain)的视觉识别算法无法满足无限细粒度的要求,业界亟需基于开放域(open-domain)的视觉识别算法。当前,在视觉识别中引入文本指引(text-guided),是一种很有前景的,实现开放域的做法。与其他相关工作不同,我们的工作希望探讨识别的完整性,也就是在愿意的情况下能够无限细粒度地识别图像中的语义概念。然而,如果要达到无限细粒度的目标,当前方法存在两大负担。

  1. 一致性。当大量物体存在于一张图像上时,必须将这些物体逐一标注/识别出来,除非使用类似ignore的选项来回避这个问题。例如,如果拍摄一张人群密集场所的照片,标注其中每个“人”将是很大的负担,甚至是不可能完成的任务。我们的问题是:是否存在一种方式,能够不必标注/识别出所有的物体,只需要标注/识别重要的或者感兴趣的物体?

  2. 可扩展性。当一个新的概念被加入到数据集中,必须逐一检查已有的图像,将这个概念标注出来,并且在必要时区分它与其他概念的关系。例如,数据集中已经存在“人”的概念,如果要进一步标注“人的头部”,就需要将所有“人”的“头部”都标注出来,即使有些“人”太小了,他们的“头部”并不容易标注或者容易带来标注误差。当数据集不断增大时,这种方式将会大大增加引入新概念的标注成本。我们的问题是:是否存在一种方式,在引入新概念时,只需要标注若干与新概念相关的图像,而可以忽略已有图像?

显然,只有解决了上述问题,我们才可能构建具有无限细粒度的识别数据集。此时,虽然数据集中包含的视觉概念非常丰富,但这并不意味着我们需要在每张图像上都标注出所有的物体或者概念。这样说也许不够直观,那么重新考虑以上两个例子:

  1. 在人群密集场所标注“人”时,能不能允许标注者只标注少数几个人,而标注数量的多少,不会造成精度计算的误差?

  2. 在大数据集上标注“人”的部件(如“头部”)时,能不能允许某些“人”的“头部”被标注,某些“人”的“头部”不被标注,而标注数量的多少,不会造成精度计算的误差?

为了达成上述目标,我们需要引入按需视觉识别(visual recognition by request)的概念,即识别算法根据交互式需求,不断地从图像中识别出越来越精细的语义概念。相对地,我们将传统意义上识别任务定义为统一视觉识别(visual recognition all at once),即识别算法事先获取了一个固定的语义概念列表(字典),从而能够从图像中一次性地识别出所有预先定义好的语义概念。

图2 统一视觉识别和按需视觉识别的概念性介绍。

图2直观地对比了两种识别方式。在图中展示的复杂街景图像中,统一视觉识别定义了“人”、“车”等物体以及它们的部件,但是由于图像中某些物体尺寸太小,无法对这些物体以及它们的部件进行标注,这就产生了标注的不一致性。与之相比,按需识别并不假定图中所有物体都需要被标注出来,而是将标注任务表示为若干需求(request),标注者/算法只需要处理这些request。具体地说,request被分为两类:

  1. 第1类request:整体到部分的语义分割(输入实例、输出语义)。给定某个实例,以及该实例包含的部件列表,将该实例语义级分割为部件。注意:每张图像本身就是一个实例,而其中的第一级语义概念是统一定义的。因此,标注者或者算法在每张图像上处理的第一个request,必然是第1类request。

  2. 第2类request:实例分割(输入语义,输出实例)。给定某个语义区域和若干像素(称为probe),将这些像素对应的实例从该语义区域中分割出来。在当前设定下,这是唯一能够产生实例的方式。然而再次强调:并非所有实例都要被分割出来。

显然,上述两种request,通过递归调用的形式,可以达成无限细粒度的识别任务。例如,在“人”的基础上,可以识别它的部件“头”,进而识别“头”的部件“眼睛”,进而识别“眼睛”的部件“眼珠”,进而识别“眼珠”的部件“瞳孔”,等等。注意,为了完成第1类request,我们需要定义一个知识库(knowledge base,如图1右部所示),显式地定义每个视觉概念的部件列表。从严格定义上说,知识库是一个具有拓扑结构的图,具体定义可以参见论文。知识库可以在任何时候被更新(如加入某个物体或者在某个物体上增加部件),而由于按需视觉识别的性质,加入新概念并不需要刷新整个数据集,只需要额外加入若干包含新概念的图片,将其中的新概念标注出来即可。

为了实现按需视觉识别,神经网络的输入也略有不同。在传统的统一视觉识别中,网络的输入是图像和固定字典,输出分割结果;而在按需视觉识别中,网络的输入不仅包括图像知识库(可变字典),还包括当前识别结果当前request。神经网络需要进行调整,以适应新的输入。

总而言之,按需视觉识别希望定义一种新的评价体系,使得人们可以实现视觉识别的无限细粒度特性,从而接近视觉识别的开放性完整性目标。本文的核心思想至此已经介绍完毕。以下,我们详细叙述按需视觉识别的标注、识别、评价方法,并且给出一种基于query的解决方案。注意:如果只想了解文章的主要思想,读者并不需要仔细阅读以下的部分,因为它们都很直观,而且可以被视为某种意义上的“实现细节”。

因此,下面的部分我会写得比较简略,对细节感兴趣的读者,请参看我们的论文。

标注和评价指标

既然追求无限细粒度,我们就只考虑分割这种较为彻底的识别任务。如上所述,在知识库(数学定义见论文)的基础上,一张图像的无限细粒度分割,可以表示为一系列request任务的集合(数学定义见论文),而这些request可以分为两大类:不断调用这两类request,就可以实现任意粒度的识别。

图3 按需视觉识别对应的交互式标注。

按需视觉识别,提供了一种新的交互式标注体系。如图3所示,一张图像的标注过程(同时也是识别过程)可以表达为若干个request的列表(其中某些request有严格的先后关系)。其中,第一个request永远是全局的语义分割,而后续的request,则通常是实例分割和语义分割交替的形式。

为了评判分割结果的好坏,我们在全景分割精度指标PQ的基础上,定义了一种专门用于按需视觉识别的评价指标,即Hierarchical PQ(HPQ)。HPQ将每个语义单元视为一个节点,递归地计算每个节点上的PQ,并且最终将PQ值汇总至根节点,得到全图的PQ。具体计算方式,请参看论文。

基于query的解决方案

图4 处理第1类request的识别框架。

识别算法其实很简单。我们分开处理了两类request,其中第1类request的处理借鉴了LSeg\[1\][2](其中借用了CLIP\[2\][3]预训练模型的text encoder,以处理文本类别输入),而第2类request的处理借鉴了CondInst\[3\][4]。具体实现,可以参看论文。图4是简单的示意图。

实现细节方面,为了加速训练,我们采用了并行化处理的方式,使得每次迭代中,每张图像只需要被送入LSeg和CondInst各一次。推理时,如果request固定,我们也可以如此做,但是系统显然也可以进行交互式推理。

实验结果

我们测试了两个数据集,即Cityscapes Panoptic Parts(CPP)\[4\][5]和ADE20K\[5\][6]。CPP数据集包含19类物体,其中5类物体有共计9种部件(有重复),物体和部件的标注都较为完整。ADE20K数据集包含超过3000类物体和超过600种部件,我们选取了常用的150类物体和83种部件,物体和部件的标注有较多缺失。我们使用CPP数据集进行诊断实验,而在ADE20K数据集上验证按需视觉识别方法的通用性。

具体实验结果请参看论文。我们无意与SOTA方法对标精度(我们的精度在给定backbone下是reasonable的),只是希望说明几个点:

  1. 按需视觉识别任务,以及相应的基于query的解决方案,可以正常运行,得到reasonable的结果。

  2. 在物体和部件的标注有较多缺失时(包括在CPP数据集上刻意只采样少部分标注,以及在ADE20K数据集上),我们的方案能够几乎不受影响地照常运行,这就体现出了按需视觉识别任务的通用性。据我们所知,我们是第一个在ADE20K数据集上定量评测带有部件分割结果的工作——我们猜测,之前的方法很可能因为部件标注缺失过多,而很难利用ADE20K数据集做相应的实验。

  3. 在ADE20K数据集上的定量和定性结果表明,在如此复杂(层次化概念多)、noisy(标注很不完整)的数据集上,按需视觉识别的精度还很低。考虑到该数据集中部分标注的内容通常是比较简单的元素,因此真实精度可能更低。也就是说,完整的、无限细粒度的视觉识别问题,可能会暴露出当前深度学习方法更多的不足,值得花费更多的精力去探索。

图5展示了在CPP数据集上和ADE20K数据集上的若干可视化结果。显然,ADE20K上的结果更差,这一方面是因为ADE20K上标注的视觉概念更多,一方面也是因为ADE20K上的标注更不完整。

图5 若干可视化分割结果,注意分割结果如何随着request,渐进地变得更精细。

总结和未来方向

在这个工作中,我们探索了一种走向完整的无限细粒度的视觉识别的方法,即按需视觉识别方法。它的核心思想在于,不追求一次性地识别图像中的所有物体,而是在基本语义分割的基础上,(按照需求)交互式地处理request,并且不断细化识别结果。这样做的最大好处,是增加了标注和识别的一致性和可扩展性,从而揭示了完整的无限细粒度的视觉识别的可能性。

在此,我也希望澄清几个可能的误解。

  1. 按需视觉识别只是图文跨模态识别任务的一个变种。诚然,我们的任务和算法都建立在跨模态的基础上,但是我们的核心目的是探索一种更彻底的视觉识别方法,在此过程中语言起到了辅助作用。与visual grounding任务相比,我们不仅局限于使用一句话来refer图像中的某个物体,而是希望以一种结构化(基于知识库)的定义方式,使得标注和识别算法有能力识别无限细粒度的语义单元。

  2. 按需视觉识别可以被zero-shot任务替代。我想表达两个观点。第一,我认为这个世界上本不存在真正的zero-shot,现行的所谓zero-shot都是使用各种方式(如图文预训练)将信息泄露给算法。因此,是否具有类似zero-shot的setting并非本质,如何定义更合理的视觉识别任务才是更重要的问题。第二,CLIP的zero-shot能力并不像许多人想象的那么强:指望它学习了“人”的身体结构,就能zero-shot地迁移到“猩猩”上,其实并不容易也并不合理。因此,我们的建议是,使用CLIP配合知识库,并且在加入新概念时配合少量样本(不追求zero-shot而追求few-shot),这从直觉上要更合理一些。

  3. 我们的方法没有刷新任何SOTA。我们本无意这样做。我们感兴趣的,是揭示当前视觉识别系统的局限性,并且提出一种新的可能性。

最后,我简单展望未来的几个重要的研究方向。

  1. 按需视觉识别,应当允许引入更多request,例如允许将分类标签细粒度化,例如对物体的属性进行询问(甚至允许文本输出),又例如对物体之间的关系进行询问(包括引入scene graph等信息)。它们都需要修改知识库的基本结构,以支持更复杂的逻辑结构。

  2. 进一步地,对于知识库(knowledge base)的改进甚至优化,会成为未来研究的重要课题。尤其是,如何通过一些语料库(包括图像和文本),自主地学习、更新知识库,使其符合需求,是一个非常具有挑战性的问题。

  3. 虽然CLIP提供了很好的图文预训练模型,如何理解CLIP、利用CLIP(包括类似CLIP的模型),会成为将来一段时间的重要问题。在这个研究的过程中,我们对于CLIP的理解也得到了刷新:比如CLIP的开放域识别能力究竟有多强,能做什么、不能做什么,这些问题都需要进一步探讨。

最后的最后,我还是要强调我的观点:对于当前的视觉识别研究来说,定义更合适的评价指标,远比在现有数据集上刷SOTA更重要!这个工作只是很小的一步,希望能够为这个community带来些许启发。我们也非常欢迎大家的讨论。

参考

  1. ^[7]Li B, Weinberger K Q, Belongie S, et al. Language-driven semantic segmentation[J]. arXiv preprint arXiv:2201.03546, 2022.

  2. ^[8]Radford A, Kim J W, Hallacy C, et al. Learning transferable visual models from natural language supervision[C]//International Conference on Machine Learning. PMLR, 2021: 8748-8763.

  3. ^[9]Tian Z, Shen C, Chen H. Conditional convolutions for instance segmentation[C]//European conference on computer vision. Springer, Cham, 2020: 282-298.

  4. ^[10]de Geus D, Meletis P, Lu C, et al. Part-aware panoptic segmentation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 5485-5494.

  5. ^[11]Zhou B, Zhao H, Puig X, et al. Semantic understanding of scenes through the ade20k dataset[J]. International Journal of Computer Vision, 2019, 127(3): 302-321.

【项目推荐】

面向小白的顶会论文核心代码库:https://github.com/xmu-xiaoma666/External-Attention-pytorch[12]

面向小白的YOLO目标检测库:https://github.com/iscyy/yoloair[13]

面向小白的顶刊顶会的论文解析:https://github.com/xmu-xiaoma666/FightingCV-Paper-Reading[14]

“点个在看,月薪十万!” “学会点赞,身价千万!”

【技术交流】

已建立深度学习公众号——FightingCV,关注于最新论文解读、基础知识巩固、学术科研交流,欢迎大家关注!!!

请关注FightingCV公众号,并后台回复ECCV2022即可获得ECCV中稿论文汇总列表。

推荐加入FightingCV交流群,每日会发送论文解析、算法和代码的干货分享,进行学术交流,加群请添加小助手wx:FightngCV666,备注:地区-学校(公司)-名称

参考资料

[1]

https://zhuanlan.zhihu.com/p/546510418: https://zhuanlan.zhihu.com/p/546510418

[2]

[1]: https://zhuanlan.zhihu.com/p/546510418#ref_1

[3]

[2]: https://zhuanlan.zhihu.com/p/546510418#ref_2

[4]

[3]: https://zhuanlan.zhihu.com/p/546510418#ref_3

[5]

[4]: https://zhuanlan.zhihu.com/p/546510418#ref_4

[6]

[5]: https://zhuanlan.zhihu.com/p/546510418#ref_5

[7]

^: https://zhuanlan.zhihu.com/p/546510418#ref_1_0

[8]

^: https://zhuanlan.zhihu.com/p/546510418#ref_2_0

[9]

^: https://zhuanlan.zhihu.com/p/546510418#ref_3_0

[10]

^: https://zhuanlan.zhihu.com/p/546510418#ref_4_0

[11]

^: https://zhuanlan.zhihu.com/p/546510418#ref_5_0

[12]

https://github.com/xmu-xiaoma666/External-Attention-pytorch: https://github.com/xmu-xiaoma666/External-Attention-pytorch

[13]

https://github.com/iscyy/yoloair: https://github.com/iscyy/yoloair

[14]

https://github.com/xmu-xiaoma666/FightingCV-Paper-Reading: https://github.com/xmu-xiaoma666/FightingCV-Paper-Reading

分类:

人工智能

标签:

人工智能

作者介绍

FightingCV
V1

公众号 FightingCV