识别图像对人类而言是件相对容易的事儿,不过对机器而言,它经历了漫长岁月。
在计算机视觉领域,图像识别这几年的发展突飞猛进。比如,在PASCAL VOC物体检测基准测试中,检测器的性能从平均准确率30%飙升到了今天的高于90%。对于图像分类,在极具挑战性的ImageNet数据集上,目前先进算法的表现甚至高于了人类。
图像识别技术的高价值应用就发生在你我身边,比如视频监控、自动驾驶和智能医疗等,而这些图像识别最新进展的背后推动力是深度学习。深度学习的成功主要得益于三个方面:大规模数据集的产生、强有力的模型的发展以及可用的大量计算资源。对于各种各样的图像识别任务,精心设计的深度神经网络已经远远超越了以前那些基于人工设计的图像特征的方法。
尽管到目前为止深度学习在图像识别方面已经取得了巨大成功,但在它进一步广泛应用之前,仍然有很多挑战需要我们去面对。与此同时,我们也看到了很多具有将来价值的研究方向。
挑战一:如何提高模型的泛化能力
图像识别技术在可以被广泛应用之前,一个重要的挑战是,怎样才能知道一个模型对未曾出现过的场景仍然具有很好的泛化能力。
在目前的实践中,数据集被随机划分为训练集和测试集,模型也相应地在这个数据集上被训练和评估。需要注意的是,在这种做法中,测试集拥有和训练集一样的数据分布,因为它们都是从具有相似场景内容和成像条件的数据中采样得到的。
然而,在实际应用中,测试图像或许会来自不同于训练时的数据分布。这些未曾出现过的数据可能会在视角、大小尺度、场景配置、相机属性等方面与训练数据不同。
一项研究表明,数据分布上的这种差异会导致各种深度网络模型的准确率产生明显的下降 。目前模型对数据分布自然变化的敏感性可能成为自动驾驶等关键应用的一个严重问题。
挑战二:如何利用小规模和超大规模数据
我们需要面对的另一个重要的挑战是如何更好地利用小规模训练数据。虽然深度学习通过利用大量标注数据在各种任务中都取得了巨大的成功,但现有的技术通常会因为只有很少的标记实例可用而在小数据情景中崩溃。这个情景通常被称为“少样本学习(few-shot learning)”,并需要在实际应用中仔细考虑。比如,一个家庭机器人被期望可以完成这样的任务:向它展示一个新物体,且只展示一次,之后它便可以识别这个物体。一个人可以很自然地完成这个任务,即使这个物体之后又被操作过了,比如一个毛毯被折叠起来了。如何赋予神经网络像人类这样的泛化能力是一个开放的研究问题。
另一个极端是如何利用超大规模数据有效地提高识别算法的性能。对于像自动驾驶这样的关键应用,图像识别的出错成本非常高。因此,研究者们创造出了非常庞大的数据集,这些数据集包含了数以亿计的带有丰富标注的图像,并且他们希望通过利用这些数据使模型的准确度得到显著提高。
然而,目前的算法并不能很好地利用这种超大规模数据 。在包含了3亿张标注图片的JFT数据集上,各种深度网络的性能伴随训练数据量的增加,仅仅呈现出对数级的提高(图一)。在大规模数据的情况下,继续增加训练数据带来的收益会变得愈来愈不明显,这是一个有待解决的重要问题。
图一目标检测在JFT-300M数据集上的性能随训练样例的增多呈对数倍的提高。x轴是对数尺度下的数据大小。y轴是目标检测的性能。左图使用COCO minival测试集上的mAP@[0.5,0.95] 指标,右图使用PASCAL VOC 2007测试集上的mAP@0.5指标 。红蓝两条曲线分别代表两种不同的模型。
挑战三:全面的场景理解
除了这些与训练数据和泛化能力相关的问题外,还有一个重要的研究课题是全面的场景理解。除了识别和定位场景中的物体之外,人类还可以推断物体和物体之间的关系、部分到整体的层次、物体的属性和三维场景布局。
获得对场景的更广泛的理解将会帮助比如机器人交互这样的应用,因为这些应用通常需要物体标识和位置以外的信息。这个任务不仅涉及到对场景的感知,而且还需要对现实世界的认知理解。要实现这一目标,我们还有很长的路要走。全面的场景理解的一个例子为全景分割,见图二。
图二 (a)原图;(b)语义分割:识别天空、草地、道路等没有固定形状的不可数材质(stuff),标记方法通常是给每个像素加上标签 ;(c)实例分割:分割人、动物或工具等可数且独立的物体实例(object instance),通常用包围盒或分割掩码标记目标;(d)全景分割:生成统一的、全局的分割图像,既识别材质,也识别物体。
挑战四:自动化网络设计
最后一个值得一提的挑战是使网络设计自动化。近几年,图像识别这一领域的重心从设计更好的特征转向了设计更新的网络架构。然而,设计网络架构是一个冗长乏味的过程,它需要处理大量的超参数和设计选择。调优这些元素需要有经验的工程师花费大量的时间和精力。
更重要的是,一个任务的最优架构和另一个任务的最优架构可能是完全不同的。尽管我们对自动神经架构搜索的研究已经开始了,但它们仍然处于早期阶段并且仅适用于图像分类任务。目前方法的搜索空间非常狭窄,因为它们寻找的是现有网络模块的局部最优组合(比如深度可分离卷积和恒等连接),并且无法发现新的模块。目前还不清楚这些现有的方法是否足以胜任更复杂的任务。
图三 神经架构搜索算法的抽象图解。搜索策略首先从事先定义好的搜索空间中选择一个架构A,这个构架接着被评估策略进行评估,并将评估的A的性能传递给搜索策略 。
尽管在图像识别领域存在上述诸多挑战,但我们仍然相信深度学习在图像识别领域的巨大潜力。解决这些问题的机会比比皆是,下面我们看看这其中的几个研究方向:
方向一:整合常识
图像识别领域有一个重要的研究方向是将常识融入到深度学习中。目前,深度学习主要作为一种纯粹的数据驱动技术被使用。在深度学习中,神经网络利用训练集中的标注样本学习一个非线性函数,之后在测试时则将这个学习到的函数作用到图片像素上。训练集之外的信息则一点也没有被用到。
相比之下,人类识别物体不仅基于已经看到的样本,还基于他们有关真实世界的常识。人们能够对他们所看到的东西进行推理,以避免不合逻辑的识别结果。另外,当遇到新的或超出预期的东西时,人类可以迅速调整他们的知识来解释这次的新经历。如何在深度网络中获取、表示常识以及利用常识进行推理是一个挑战。
方向二:几何推理
联合执行图像识别和几何推理则是另一个有潜力的方向。图像识别的主要模型只考虑了二维外观,而人类可以感知三维场景布局以及推断其内在的语义类别。三维布局不仅可以从双目视觉中获得,还可以从二维输入的几何推理中得到,就像人们看照片时所做的那样。联合图像识别和几何推理为双方都提供了好处。
从几何推理中确定的三维布局可以帮助在看不见的视角、变形和外观的情况下引导识别。它还可以消除不合理的语义布局,并帮助识别由其三维形状或功能定义的类别。比如,沙发中存在着巨大的类内外观差异。然而,它们拥有共同的属性,可以帮助识别它们。譬如它们都有一个水平面用来坐,一个背面用于支撑。另一方面,识别出来的语义可以规范化几何推理的解空间。比如,如果一只狗在一个场景中被识别,它相应的三维结构应该符合狗的三维形状模型。
图四 从视频的两个不同视角的帧重建出复杂动态场景的点云
方向三:对关系建模
关系建模也有很大的研究潜力。想要全面理解一个场景,对场景中存在的目标实体之间的关系和相互作用的建模非常重要(图四)。考虑两张图片,每个图片都包含一个人和一匹马。如果一张展示的是骑着马的人,另一张展示的是踩着人的马,显然这两张图片表达了完全不同的意思。另外,通过关系建模提取的底层场景结构可以帮助补偿目前深度学习方法因数据有限而出现的模糊不确定等问题。尽管人们已经在努力解决关系建模这个问题,但这项研究仍然是初步的,并且还有很大的探索空间。
图五 目标检测中的关系网络。表示物体的外表特征,表示物体的几何特征
方向四:学习如何学习
这里还有一个值得一提的方向是元学习,它的目标是学习学习过程。这个课题最近引起了相当多的关注,而且神经架构搜索也可以被认为是它的一种应用。
然而,由于目前对学习过程建模的机制、表示和算法还比较初级,元学习的研究仍处于早期阶段。以神经架构搜索为例,它只局限于现有网络模块的简单组合。元学习者无法捕捉到创作新网络模块所需的微妙的直觉和敏锐的洞察力。伴随元学习的进步,自动架构设计的潜力可能会被完全释放出来,进而得到远超手工设计的网络结构。
图六 元学习近期的进展。自左至右分别为元学习的超参数优化 、神经架构搜索 、少样本图像分类
这是一个激动人心的从事图像识别的时代,一个充满了推动领域发展、影响将来应用的机会时代。我们热切盼望即将到来的进步,并期待这些新技术以深刻而神奇的方式改变我们的生活。