剪辑自: https://mp.weixin.qq.com/s/A4r1BzkMny_rsgZf8uTYOQ
原文:https://bdtechtalks.com/2020/03/02/geoffrey-hinton-convnets-cnn-limits/,2020 AAAI中的keynote,Hinton
早期的计算机视觉利用符号人工智能(symbolic artificial intelligence),但需要人类制定每条规则,该方式难以成功。另一种方法是使用机器学习,与符号AI相反,机器学习算法具有一般结构,并通过训练样本学到它们自身的行为。但早期的机器学习算法仍然需要大量的人工设计来检测图像中的相关特征。
CNNs是一种端到端的AI模型能自动学习特征提取的机制。训练好的多层CNN模型可以以分层的方式自动识别特征,从简单的边缘、角到像脸、椅子、狗等复杂的目标。CNNs最早由当时还在Hinton实验室的LeCun在1980年代提出,但尤其当时缺少计算能力和数据,没有得到快速发展,当然现在已是今非昔比。
CNNs以端到端的方式学习所有事情,如果一个特征在某个位置是有效的,那在其他某些位置也是有效的,那么CNNs就可以跨位置整合这些信息并很好地归纳。但与人类感知有很大不同。
CV的一个关键挑战是处理现实世界的数据波动(variance of data)。人类的视觉系统可以在不同角度、不同背景和不同光照条件下识别目标。当被部分遮挡或颜色变化,人类视觉系统可以利用线索或其他知识来填补缺少的信息,解释我们所看到的内容。
创造对相同目标具有识别能力的AI是很困难的。(Creating AI that can replicate the same object recognition capabilities has proven to be very difficult.)
CNNs旨在处理翻译(translations)。意味着一个训练好的卷积网络可以识别一个物体,无论它出现在图像中的什么位置(具有空间不变性?)。但是不能很多地处理视点变化(viewpoints)的影响,如旋转和缩放(所以数据增强中有这样的操作)。
解决上述问题的一个方法是使用4D或6D图(4D or 6D maps)训练AI,然后再执行目标检测,但这样做的代价很大。
目前最好的解决方式是收集大量图像,每个目标在图像以不同的位置显示(gather massive amounts of images that display each object in various positions),也就是说收集的数据,图像中目标的位置是多种多样的,ImageNet数据集就起到了这样的作用。事实上ImageNet作为CV领域的基准数据集已经展现出了一些问题。尽管数据量巨大,但无法包含所有可能的角度和目标位置。数据通常是在理想光照和已知角度下获得的。
对于人类视觉系统,从几个角度观察目标就可以相信出其他不同的情况。但是CNNs训练时需要各自情况的样本,它不具备人类的这种相信能力。通常使用数据增强(data augmentation)解决这个问题,进行翻转或旋转图像。CNNs在每个图像的多个副本上训练,它们之间稍有不同,一定程度上提高系统的鲁棒性。但是数据增强也不能涵盖所有的角度情况,现实生活中可能存在的奇怪的情况,如放倒的椅子,床上的T恤,这些CNNs和其他神经网络就难以处理。下图是一个新的数据集ObjectNet中的样本和ImageNet中的比较。但是跨视角、光照、颜色等问题依然影响着现有模型。
上述差异导致的影响不仅局限于模型的泛化能力以及对更多数据的需要。CNNs产生的目标表示形式也与人脑的生物神经网络非常不同。对于一幅图像,施加人类无法察觉的微小扰动或噪声,CNNs就会识别成完全不同的目标。这种增加微小扰动的图像就是所谓的对抗样本(adversarial examples),是目前的研究热点。对于像自动驾驶等应用,对抗扰动就是很危险的。只要我们的计算机视觉系统以与人类视觉以根本不同的方式工作,除非得到激光雷达和雷达测绘等互补技术的支持,否则它们将是不可预测且不可靠的。
CNNs无法根据目标和它的部分理解图像,而是以不同模式的图像块识别目标,缺少对于实体和其关系的显式内部表征。CNNs观测不同的像素位置,根据越来越多的上下文信息,得到关于像素位置发生什么越来越丰富的描述。最后获得的如此丰富的描述使网络识别出图像中的目标,但没有明确地解析图像。对物体组成的理解有助于理解世界和前所未见的事物,如下面这个奇怪的茶壶。
CNNs也缺少坐标系统,而这是人类视觉的重要部分。当人类观测一个目标时会在心里构建一个方向,以帮助解析不同的特征。如下图,将左图上下翻转就是右图。但是人类没有必要真的翻转,对于左图只需在心里挑战观察的坐标就能看的右图。
根据所施加的坐标系,人类会有完全不同的内部感知,而CNNs却无法完全理解这一点。CNNs对于输入的感知与坐标系无关,这可能与对抗样本有关,也可能是因为与人类视觉不机制同。
解决CV问题的一个方便方法是做逆图像学。3D计算机图形模型由目标(object对象)的层次结构组成。每个目标都有一个转换矩阵,用于定义与其父目标相比的平移、旋转和缩放。每个层次结构中顶层对象的变换矩阵定义了其相对于世界原点的坐标和方向。
例如一辆汽车的3D模型,基本目标具有4×4的转换矩阵,说明汽车的中心位于(X=10, Y=10, Z=0),旋转度数为(X=0, Y=0, Z=90)。汽车本身又由许多物体组成,例如车轮、底盘、方向盘、发动机等。每个目标都有自己的转换矩阵,这些转换矩阵定义了相对于与父矩阵(汽车的中心)的位置和方向。假如左前轮位于(X=-1.5, Y=2, Z=-0.3),左前轮的世界坐标可以通过将其转换矩阵乘以其父矩阵得到。其中一些目标可能具有自己的子集,车轮由轮胎、轮辋、轮毂、螺母等组成。这些子集中的每个子目标都有自己的转换矩阵。
使用这种坐标系层次结构,可以非常轻松地定位和可视化对象,而不管它们的姿势和方向或视点如何。当要渲染对象时,将3D目标中的每个三角形乘以其转换矩阵和父级的转换矩阵。然后将其与视点对齐(另一个矩阵乘法),再在栅格化为像素之前转换为屏幕坐标。
当你让从事计算机图形学的研究者从另一个角度展示3D目标时,他不会说因为没有从这个角度训练所以无法展示。而是会很自然地展示另外视角下的3D目标。因为他们将空间结构建模为零件和整体之间的关系,而这些关系完全不依赖于视点。
胶囊网络(capsule networks)就是尝试做逆计算机图形。尽管胶囊网络有自己的一系列文章,但其背后的基本思想:获取图像,提取其目标及部分,定义其坐标系并创建图像的模块化结构(modular structure)。胶囊网络仍在研究中,自2017年推出以来,经历了多次更新迭代。如果能成功地使发挥作用,将使网络模型更接近复制人类视觉。