本文首次发表于译言网,翻译自Technet.com,为[机器学习]系列文章之一。
发表地址:http://article.yeeyan.org/view/propiram/442460
文章由两部分组成,本文是第一部分,由英国剑桥和微软研究院的Jamie Shotton,Antonio Criminisi和Sebastian Nowozin合著。第二部分在这里随后发布。
计算机视觉,作为构建计算机算法以自动理解图像内容的领域,出自于20世纪六十年代的人工智能(AI)和认知神经科学。“解决”视觉在1966年麻省理工学院的暑期项目中立项而著名,但人们立即明白这个项目将会花费更长时间。一般的图像理解任务五十年后依然难解,但该领域的发展蒸蒸日上。现已经取得戏剧性的进展,随着交互式分割(用于微软Office办公中“删除背景”功能)、图像搜索、人脸检测和对准、以及Kinect的人体运动捕捉等个别项目获得商业成功,视觉算法已经开始深入广大的受众群体。几乎可以肯定的是,对近15年或20年的机器学习技术(ML)的快速理解与应用,已成为计算机视觉领域浪潮迅速推进的主因。
本文作为该系列的第一部分,将探讨计算机视觉领域的一些挑战,并谈谈强大的机器学习中为像素对比分类的决策森林技术。
图像分类
请试想一下来回答下面图像分类的问题:“在这张图片里现在有一辆车吗?”对一台计算机而言,一张图像仅仅是一个红、绿、蓝三色像素构成的网格,每一个颜色通道一般由0到255之间的一个数字来表示。这些数字的根本改变,并不仅仅取决于该对象存在与否,还取决于如摄像机视点、照明条件、背景和对象的姿势等干扰因素。此外,人们不得不解决汽车类别不同而造成外观变化的问题。例如,一辆车可能是旅行轿车、小卡车、或者小轿车,而其中的每一种车都会使得所构成的像素网格出现巨大不同。
幸好监督机器学习技术(Supervised ML)给那些试图天真地把这些无数可能结果由手写代码而完成的人提供了替代方案。通过采集图像的训练数据集以及恰当地手工标记每张图像,我们便能使用我们最爱的机器学习算法来解决,哪些像素的图案与我们识别任务有关,哪些是干扰因素。我们希望学会能概括出新出现的、先前未曾见过测试样本中我们所关心的对象,同时学会不受干扰因素的影响。在图像新型学习算法的发展和数据集收集和标号两方面,都取得了相当大的进展。
为像素对比分类的决策森林
图像包含多个级别的详细信息。正如之前提到的,我们可以问在这整张图片中,是否存在一个特定的对象类别(例如汽车)。但我们反而能够尝试解决稍微更难一些的问题,这被称为“语义图像分割”:勾勒出场景中的所有对象。下面是对一个街景分割的例子:
在照片中你能猜想到这个技术可以用来帮助你有选择地编辑你的照片,甚至合成全新的照片;我们还能立即明白这个技术的更多应用。
有很多途径能够解决语义分割,但其中一个强大的构件便是像素对比分类:训练一个分类起来预测分布于各对象类别(例如车、路、树、墙等)的每个像素。这个任务会造成机器学习中一些计算问题,尤其是在图像包含大量像素的情况下(例如诺基亚1020智能手机每张图片能捕捉4100万个像素)。这意味着在整个图像分类任务中,我们训练和测试样本的次数要比我们预想的多上几百万倍。
这个问题的规模使我们调查一个更高效的分类模型,这便是决策森林(decision forests,亦可称作随机森林或随机决策森林)。一个决策森林是分开受训森林的一个集合:
每一棵树都有一个根节点多个内部“分离”节点,和多g终端“叶子”节点。测试时期,分类起始于根节点,并基于二进制“分离函数”计算一些数据,如“这个像素是否比它的一个邻近像素的颜色要红呢?”一样的简单判断。根据这个二进制的判断,它将向左或向右分支,再对下一个节点调用分离函数,并重复该过程。当最后抵达一个叶子节点,一个存储的预测——通常是各分类标签的柱状图——便会作为结果输出。(还可参考Chris Burges近期发表的优秀文章,关于为搜索排名而增强的决策树算法的变体。)
决策树之美源自其测试时间效率:尽管从根到叶子有以指数级数量增长之多的可行路径,但任何单个测试像素都将仅仅在一条路径上传递。此外,分离函数的计算是以之前的结果为条件的:即希望分类器能够基于之前作出的回答而提出正确的问题。这恰好与“二十个问题(twenty questions)”的窍门相同:虽然只允许你提不多的问题,你却可以通过基于之前问题的答案来调整你所问的下一个问题,这样便能迅速找到正确答案。
借助于这项技术,我们在照片中的语义分割、街景分割、三维医学扫描下人体解剖分割、相机重组定位、和Kinect深层图像中分割身体各部位这些各种各样问题的处理上,已经取得了巨大的成功。对Kinect而言,决策森林的测试时间效率至为关键:我们计算的预算极为苛刻,但此条件下的计算,与Xbox的GPU(图形处理器)上像素并行化配对之后,意味着我们能够符合预期[1]。
在这个系列的第二部分,我们将围绕对图像分类的“深度学习”讨论近期值得令人振奋的东西,并凝视水晶球来看看什么即将发生。在此期间,如果你想要在云端开始机器学习,请来机器学习中心访问。
感谢您的浏览。
Jamie,Antonio和Sebastian
[1]由Xbox这个出色的工程师团队所进行的完整骨骼追踪的产品线上,身体部位分类仅仅是其中一个阶段。