我们先来看看为什么现在的计算机视觉在某些任务中这么厉害——比如人脸识别——因为它目的明确。在训练计算机的时候,我们就告诉它,你把这个事儿做了,其他不用管,跟我们小时候差不多,你把学习弄好了,其他大大小小的家务不用你管。那这个事情就简单了,我们需要做的就是把目标函数设计好,计算机的任务就是不停地学,不停地迭代,直到无限靠近这个目标。用这一套方法论,你会发现计算机视觉很简单嘛,很多任务,只要我们能清晰地设计出目标函数,并且能收集到大量的数据集,计算机视觉非常容易在某个任务中超越人眼。我说到这儿,不知道大家有没有在想一个问题?如果说计算机视觉的终极目标是让计算机拥有像人类或者动物一样看上去笨笨的但是可靠的视觉理解系统,那我就请问,
视觉的目的是什么?或者视觉的目标函数是什么?
WhatistheWillofVision
“视觉的目的是设计和匹配特征?“
“视觉的目的是大规模分类?“
分类是视觉的目的吗?
再回到我们小时候,我们的视觉系统是否是这样形成的?当我们看东西的时候,有没有一个人在边上一直告诉我们:这是猫,那是狗,这个桌子,那是椅子。如果这个不够直接,那不妨考虑一下动物,家里的宠物狗是否需要区分这些概念才能建立起它们的视觉系统?在大量的例子中我们可以发现,概念的分类可能是一个有效的途径,但并不是建立视觉系统的必要条件。进一步讲,基于人类语言的标签不是视觉系统的必要条件,换句话说,不需要“分类”,只需要“分辨”,也就是说,是猫是狗是桌子是椅子没所谓的,重要的是把这些概念区分开即可。
这里展开来阐述一下“分类”和“分辨”的差异。它们貌似差不多,但在我们今天聊的“视觉的目的”上有本质的区别。
首先,在分类问题中,所有类是完全独立的,或者说在空间中是两两正交的。但是实际情况下却并非如此,比如类别猫和老虎,猫和椅子,在分类问题的设定下,它们类之间的差异是一样的,但很显然,猫和老虎的类间差异比猫和椅子低很多。这就出来两个问题:我们如何去标注这样一个数据集,如何去训练一个模型才能够让它知道类之间的不同?
第二点,人工标注的数据集中类之间是很平衡的,猫和狗的数量一样多,但是现实情况下,类别是长尾分布的,也就是大多数类的图片是很稀有的,这里的问题是如何解决大多数类的长尾标注问题?
目前来说,训练完一个计算机模型,它能做的分类只能是数据集里面有的类而已,如果测试集中出来新的类,它是完全不知道的。那么如果说分类真的是视觉的目的,为了去真正地实现像人和动物这样的视觉系统,其中最大的难点就是去定义和标注这些类。不知道你是否认同,定义类本身这个工作,和定义特征的工作没有本质的区别。它们的目标都是让模型能更好的理解图片,但是定义类和定义特征这两个工作都是无穷尽的,并且有很多人为主观的干预,比如什么样的特征能刻画一个概念,什么样的类能帮助建立可靠的视觉系统。但是,话说回来,你是否认同分类是视觉的目的这个假设?
也许不见得吧,再回想我们小时候,监督学习,或者类别学习占的毕竟少数,特别是对动物而言,它们很少很少会出现监督学习这个情况。大多数情况下,视觉系统的建立是无监督的,靠我们自己和环境之间的互动,来理解图片和视频。这个简单的想法就促成了无监督或者自监督的视觉学习方法。其实这方面的研究开始的挺早的,为什么一直都没有像现在这么火呢?关键还是当时的实验结果没有像全监督的分类学习那么好,虽然它蛮符合我们对视觉的期望,实验结果还是硬道理。不过就这几年,自监督学习发展地特别快,某些方法已经在实验中被验证比有监督的分类学习要好。这又是我们在了解视觉系统中迈出的很大的一步。那么我们就来聊一聊自监督学习是如何回答“视觉的目的是什么”这个问题的。
我们可以先猜一猜,视觉的目的是什么?科学研究就是先提出假设,然后验证这个假设。那好,生物最基本的动机就是活着,为了活着,视觉必须学会一个很重要的功能,那就是
预判
试想一直老虎向你跑过来了,你不会等它到了才跑吧,视觉系统需要做准确的预判并且马上采取行动。对于那些不能做预判的,可能就被自然淘汰了。另一个不那么极端的例子,你看到苹果从树上掉下来,应该会躲吧,这也是一种预判。往大里说是你的视觉系统学习到了牛顿定理,其实就是它学习到了重力的表现形式。很多很多生活上的例子表明,视觉系统需要学习预判的能力。那么预判在自监督学习上体现在哪儿呢?其实有很多,最基本的就是auto-encoder,还有去噪声的auto-encoder,in-painting,out-painting,在视频处理中应用的更多,根据当前帧来预测下一帧的图片。这些方法在实验中被证明是非常有效的,并且不需要人工的标注,因为图片和视频本身就是最好的标注。
好,我们再想想还有什么是视觉系统需要自发学习的。刚刚说了一只老虎朝你跑过来,你需要预判并且躲避,那么如果一只小猫跑过来呢?注意这里需要学习的是
分辨(而不是分类)
这也引出了一个更深层的讨论,不同概念的内涵(connotation)和外延(denotation):内涵是一个概念中事物的共有属性,外延是一切属于这个概念的具体事物。分类问题事先给定了一个概念的外延的一部分,比如在所有ImageNet数据集中,“猫”这个概念的外延就是它对应的那几张图片,模型根据这个外延,来学习“猫”这个概念中图片的共有属性(内涵)。分辨则不同,它是不断地放缩一个概念的外延,来辨别两幅图片的相似点和差异性,即便是两幅“猫”,当外延只缩到每一幅图本身了,模型在承认这两幅图都有猫的同时,还需要辨别出两只猫细微的差异的,比如颜色,动作,长相,年龄。对比学习在缩放不同概念的内涵和外延之间,学习到更立体,更丰满的视觉特征。
前沿成果的比较
HowWellDoSelf-SupervisedModelsTransfer
现在我们没有办法这么直接地解决问题,还在一个探索期,视觉的目的是什么?刚刚总结了两大块主流任务,预判与分辨。计算机科学为什么是一门科学,是因为在解决工程问题的时候,我们需要做底层的分析和研究,也需要多学科的交流,比如视觉和脑科学的研究会对解决这个预训练的问题很有帮助。那我们来看看这一路走来学到了什么。从一开始的定义特征,到后来自动学习特征(但是需要定义好类别和类别数),到现在完全不需要人工的类别标签,一个趋势就是,当学习通用的视觉模型时,人为定义的东西越少越好,让计算机自主学习的东西越多越好。沿着这个思路下去,和我们的视觉系统相比,这些自监督学习的方法,至少到目前为止,我认为还有几个方面需要解决:
首先,视角是人为设计的。
其次,模型是人为设计的。
最后,任务是人为设计的。
这三个方向的研究都非常有意思,今天我没办法一一细说,我会在后续的博客中讨论。这边我展开来讨论一下最后一条,任务是人为设计的。首先我觉得在现在的阶段,人为设计预训练的任务是可以被接受的,毕竟我们人类上课学习的时候也有一个培养计划,让计算机自己给自己设计一套学习方案,我现在还不敢想。那就看看如何去设计任务,让计算机可以学到通用的视觉特征?回溯到自监督学习一开始的时候,它是先在自然语言处理领域得到突破,为什么自然语言可以做自监督呢?原因是(1)语言可以切成词汇,(2)词汇的排列是有意义的。计算机从网上的那么多语料中学习,一个很重要的点是你不能把语料中的词汇打乱,打乱了就没有语义了。比如
视·觉·的·目·的·是·什·么
一共八个字组成,是一段有意义的话,但是,这八个字有很多中排列组合的形式,绝大多数的排列是没有语义特征的,而计算机就只在这种有意义的排列中学习特征,所以是有效的。反观自然图片,猫的图片可谓说是千奇百怪什么都有,像自然语言那样的理想情况是什么?最好所有的猫都端端正正地给我坐好,一个姿势,一种表情,然后计算机去学习它的纹理,形状,或其他的抽象特征。在这种严格的规定下,我清楚地知道什么在上,什么在下,什么在左,什么在右,就像自然语言一样人为地创造了一种特定的语法。计算机就可以比较直接地学习到图片的上下文语义特征。请问这一段对理想图片的描述让你想到了什么?
医学影像
首先在拍影像的时候,医生是不会让你有天马行空的姿势的,基本上两种姿势,要不站着,要不躺着。其次,如果姿势是固定的,人体的组织器官的分布也是有序的,五脏六腑都有固定的位置。所以最后拍出来的图片都看起来差不多,就像一个句子,你反复地用不同的词汇说,但是表达的内容相似。
视觉的目的是什么?视觉的动机是什么?视觉的目标是什么?
我们来看看这个方法背后想要传达的信息和整体框架的基本假设。梳理一下刚刚的逻辑:
自然语言处理的预训练特别猛,而且不依靠人工标注,因为语料中自带了上下文语义特征
医学影像也具备相似的属性,因为拍照是的姿势固定的,人体内部的组织结构是有序的
因此,我们只需要定义医学影像中的视觉词汇,并学习它的上下文语义特征即可
可能这个时候有小伙伴会质疑,你说的这个特征确实在医学影像中表现地非常明显,但自然图像难道不具备这个特征吗?没错,自然图片也可以有这个特征,比如说人脸识别,只要能把人脸从图片中框出来,并加上一定的旋转,也可以得到一个具有固定上下文语义特征的数据集,也就是一个近似对齐的数据集,计算机同样可以通过自监督的视觉词汇学习,从图像中学到特征。只是构建这种数据集需要一定的工作,不像医学影像(比如ChestXray)那样是自带的属性。
再往上想一层,其实自然图片是包含了弱弱的上下文语义的。刚刚说的语义特征是来自于有序的词汇排列,如果打乱了,语义就没了。从这个逻辑出发,严格意义上讲,所有能被理解的自然图片都是有一定意义的,真的打乱图片中的像素才能说它是一堆乱码。一张图中这么多像素,它们能根据一定的规则拼成有意义的图片,本身就是一种语义信息。
编辑:黄飞
浏览量
原文标题:视觉的目的到底是什么?
下载发烧友APP
电子发烧友观察
长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)