视觉识别算法的延伸思考 ---- 如何更好的加深对视觉识别算法的理解

写在前面:这是一篇只有思路、没有具体实验的文章,也就是常说的opinion paper。我希望通过这篇文章,传达自己对视觉识别这个问题的思考。诚然人微言轻,我也希望将这些初步的思考分享给这个community,或许有人能够受到启发,探索出新的方向来。
水平有限,挂一漏万。如果有不同见解,或者发现我这个想法已经被前人提出过,请以任何一种方式告诉我,非常感谢!

原文:链接

一、前言

视觉识别,是计算机视觉领域最重要的任务。虽然深度学习技术给这个领域带来了深远的影响,许多任务的SOTA相比于十年前也已经是突飞猛进,但就目前来看,还没有任何一套方法能够在一般意义上解决识别问题。当前算法的不足之处有很多,而学界较为公认的未来发展方向主要分为数据、模型、知识三大方面。其中,知识是一个相对模糊的概念,迄今学界还没有准确清晰的定义。而数据和模型,则构成了当前大部分视觉算法的主要困难。

回顾过去一年,在视觉识别领域,有两类方法得到了广泛的重视。一个是自监督学习,尝试从数据的角度来提升算法的泛化性能;一个是Transformer,尝试引入新型模型设计,提升神经网络的拟合能力和泛化能力。这两类方法确实为视觉识别提供了种种新线索,但是它们也很快展现出了各自的局限性。

在拼命内卷、忙于刷新各种指标的间隙,我时常会问自己一个问题:计算机视觉领域,有没有一些被忽视,却十分重要的问题?在一段时间的思考以后,我在数据和模型层面都有了一些不成熟的idea。今天写写数据方面的想法。

二、研究动机

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

我们以上述图片为例。这是一张来自MS-COCO数据集的图片,主要包含“人”这一类别。虽然MS-COCO已经提供了像素级标注——几乎是当前能够获取的最精细级别,然而还是有大量的语义信息无法被标注出来。更加重要的事实是:即使提供足够的人力成本,我们也很难定义出一套规范的标准,完成“所有语义信息”的标注。举个例子:当我们标注出“人”以后,还可以进一步标注“手臂”,进而标注“手”、“手指”、“指节”、“指纹”,甚至是“指纹上的缺口”。即使某些语义信息已经到达“子像素级”,只要人类愿意,就可以通过语言、刻画等某种方式,将它从图像中识别出来。

通过上述例子,我们可以得出以下两个结论:

  1. 我们难以定义人类识别能力的极限 —— 虽然对大多数人而言,这个极限应当是差不太多的
  2. 当前计算机视觉能够通过标注获取的监督信号,远远低于这个极限 —— 即使投入大量人力,也很难逼近这个极限

于是我认为:要想得到完整的识别结果,就不能依靠人工标注来学习。那靠什么呢?我认为应该靠数据压缩。认知科学的实验提供了一条重要的线索:人类在识别图像时,往往倾向于最省事的做法:也就是说,人类会寻找一种最容易记忆的形式,而识别只是为了方便压缩而做的一种量化

沿着这条思路,我设计出了下面的预训练任务。

三、通过压缩来学习(learning-by-compression)

这个概念是相对于“通过标注来学习”(learning-by-compression)而言的。当然实现要说明的是,这个概念并不新:早年的autoencoder就是建立在类似的思想上的。如果想看related work,可以参考原文。这里想要强调的是,我们重新提出这个概念,是基于“标签学习”无法解决上述gap的判断。而我们的提议和autoencoder类方法最大的不同,恰恰在于我们把重心从网络结构的设计转到对图像恢复质量的评估上。

在这里插入图片描述
图2 设想的学习框架,由编码器、解码器和评估器组成,其中评估器是最难设计的模块

如上图所示,我们的设想很简单:一张图像通过编码器压缩成维度尽可能低的向量,再通过解码器恢复成与原图差距尽可能小的图像。其中编码器和解码器都可以是标准的神经网络(不限定于CNN或者Transformer),而评估器既可以是自主学习的神经网络,也可以是预先定义的函数,甚至可以通过human-in-the-loop(人类的反馈机制)的方式来设计。后面我们会说到,评估器是整个框架中最难设计的模块,也是当前阻止我们把这个idea变成现实的最大障碍。

用几个小点,来解释这样做的目的:

  1. 我们的假设是:如果能够设计出一对编码器和解码器,使得输入图像能够被压缩成尽可能短的向量,同时这个低维向量能够用于生成高质量的输出,那么我们就认为编码器和解码器只有一条路可走——学习高效的语义特征,并以此对图像进行编解码。
  2. 如果压缩率足够高,那么算法一定无法准确地恢复原图的所有细节。这看似与“完整的视觉识别结果”相矛盾,但我们可以通过调节压缩率(比如在编码器和解码器之间插入一些线性映射层,详见原文)来控制恢复的质量。于是,只要有一个合理的评估器,我们就可以在任何一对编码器和解码器上,得到一组压缩率和恢复质量的tradeoff,如下图所示。
  3. 顺便要指出:天下没有免费的午餐。追求更高的压缩率和恢复质量的tradeoff,就意味着编码器和解码器存储了更多视觉特征(可以理解为更大的视觉词典),以供算法调取。这也就为当前盛行的视觉预训练大模型提供了另一种视角。

在这里插入图片描述
图3 左图:我们设想的,压缩率和恢复质量的tradeoff; 右图:当前流行的,模型参数量和识别精度的tradeoff; 如果我们的倡议成为现实,那么业界或许会将注意力转向追求左图这样的tradeoff

最后,如果我的设想成真,那么业界的注意力会更多地转向追求上图左边的tradeoff而不是右边。虽然右边也很重要,但我认为左边或许更接近本质一些。

三、评估算法的困难

上述自监督学习算法,都建立在一个合理的评估函数上。然而我们不难想象,这个评估函数是很难设计的。我们知道,人类的对图像的理解是层次化的。在能够存储的信息很少(即压缩率很高)的情况下,人类往往倾向于关注图像的全局信息,而忽略图像的细节。仅就满足这一特性而言,要设计出合理的评估函数,就十分困难。我大胆地猜测:设计这个评估函数的难度,甚至不亚于视觉识别问题本身。也就是说,某种意义上看,设计评估函数能够提供视觉识别问题的另一种视角,或者启发些新的思路。

在这里插入图片描述
图4 评估算法是实现这一框架的最大障碍。 左图:原图和恢复图像的大部分纹理都不一样,但是应该认为恢复质量较高; 右图:大部分区域相同,只有前景物体不一致,此时应该认为恢复质量较低

这里顺带说明,以autoencoder为代表的算法,大多建立在无差别地恢复图像像素的基础上,而这并不是我们想要达到的效果。换句话说,既然已经决定压缩数据,就不应指望能够恢复出所有细节来。于是,我设想了几种评估算法的可能性

  1. 语义弱监督:如果在庞大的预训练数据集中,部分图像被赋予了语义标签,那么这些图像就可以用语义层面的监督来度量相似度。举例说,如果恢复前后的图像在某个检测算法上的结果一致,那么就可以粗略地认为,恢复算法保留了一定的语义信息。原文中,我还根据这个思路设想了一个迭代算法,此处不再展开。
  2. 利用human-in-the-loop的思路:即将人类的反馈机制引入训练过程,在需要评估恢复图像的时候,让受试者指出几张图像中恢复较好的或者恢复较差的图,或者指出一张图像上恢复较好的或者恢复较差的区域。这些反馈可以作为弱监督信息,让算法不断迭代。

当然我们要强调,上述两个方案都不是完美的。语义监督方面,从我们的研究动机就知道,所有语义信息都只能提供有偏的弱监督,因而不可能从头到尾训练一个高效模型;而利用人类反馈,则需要大量的人力劳动,同时随着训练的进行,受试者将越来越难以客观地区分恢复效果的好坏,因而导致预训练过程出现瓶颈

四、下游任务的应用

如果上述算法得以实现,那么我们将得到一个通用的视觉预训练模型。由于这一模型不偏向任何特定的识别算法,且它同时包含编码器和解码器,我们就可以用它来完成各种下游任务。

  1. 如果要做分类或者检测,直接继承编码器,加上轻量级的head做微调即可
  2. 如果要做分割,同时继承编码器和解码器,并且对解码器做微调即可——在高压缩率的驱动下,编码器和解码器将更擅长将不同物体区分开来,否则难以生成出高质量的图片
  3. 如果要做底层视觉任务(如图像超分),同时继承编码器和解码器,并且在合理的位置插入一些shortcut连接,微调解码器即可
  4. 如果要做图像生成任务,直接继承解码器的分布和解码器的权重,采样生成即可;如果是有条件的生成任务,可以事先将编码器进行微调,以适应给定的分布
  5. 最有趣的应用是视频识别:视频数据比图像数据的维度更高,也更难学习;为此可以设计两阶段的特征学习方法:利用上述的编码器逐帧抽取特征,再将序列特征送入时序模型(如seq2seqTransformer)进行进一步压缩,以期得到适合视频识别的预训练模型

在现阶段,这些都无法成为现实。

总结和展望

我们首先指出,当前所有视觉识别任务,距离完整识别还有相当大的距离,而且这一鸿沟难以通过增加标注量和标注粒度来跨越。基于这一判断,我们提出了一个新的视觉预训练任务,即通过压缩来学习(learning by compression)。这个任务的难度主要体现在评估函数上,而我们甚至认为,这也许是视觉本质问题的另一种表现形式,或许能够提供新颖的思路。

面向未来,我们认为大规模预训练模型是计算机视觉乃至整个人工智能领域的大势所趋。然而当前的预训练模型还比较笨重,除了用于抽取强有力特征外,并没有一个完整的pipeline去释放它们的能力。更重要的是,大模型预训练和小样本微调,似乎有着天然的冲突:大模型希望看到更general的数据分布,在均摊意义上追求最优解;而小样本则往往针对一个特定的领域,在单点上追求最优解于是,模型规模越大,微调的难度就越大——现在的大模型更多地是说服下游应用无需微调,而对于下游domain相差较大的场景,往往就难以取得良好的效果。这一点,也是AI部署算法需要着力解决的问题。

本文内容仅做学习分享和思考,侵权请联系删除

猜你喜欢

转载自blog.csdn.net/qq_53250079/article/details/127700417
今日推荐