当机器学习遇上计算机视觉
计算机视觉在上一个世纪60年代脱胎于人工智能与认知神经科学,旨在通过设计算法来让计算机自动理解图像的内容。为了“解决”机器视觉的问题,1966年,在麻省理工学院,这个问题作为一个夏季项目被提出,但是人们很快发现要解决这个问题可能还需要更长时间。在50年后的今天,一般的图像理解任务仍旧是不能得到完美解决。但是也已取得显著进展,并且随着机器视觉算法商业化的成功,机器视觉产品已经开始拥有广泛的用户,包括图像分割(例如微软office中去除图片背景的功能)、图像检索、人脸检测对焦和Kinect的人体运动捕捉等。几乎可以确定的是机器视觉最近的突飞猛进主要得益于最近15到20年机器学习领域的快速发展。
本主题的第一篇文章主要是探索一下机器视觉所面临的挑战和介绍一个非常重要的机器学习技术——像素级分类决策树算法。
图像分类
想像一下并试着回答下面这个有关图像分类的问题:“在这张图片中有一辆汽车吗”。对于计算机来说,一张图片仅仅是由三原色(红、绿、蓝)构成的像素组成的格子,三原色中每一个颜色通道的值的范围都是0到255。这些值的改变不仅依赖于事物对象是否在图片中呈现,也依赖于一些干扰事件,比如摄像机的视角、灯光条件、背景和对象的形态。另外,一个必须处理的问题是不同类别的汽车呈现不同的形状。例如,这辆汽车可能是辆旅行车、或者小卡车、或者是辆跑车,这些都会对图片像素造成很大影响。
幸运的是监督机器学习算法提供了替代原本需要人工编码解决这些多可能性的问题的方式。通过收集图片的训练集和适当的人工标记每一张训练图片,我们能够使用最好的机器学习算法找到哪些像素模式是同要识别的对象相关的以及哪些是干扰因素产生的。我们希望我们的算法最终能够适用于识别以前没有经过训练的新的样本,并且对于噪声保持不变性。在新的机器视觉算法的发展和数据集的收集标注两个方面我们都取得了长足的进步。
像素级分类决策树算法
图片在很多层面上包含细节。就像前面我们提到的,我们可以问一个问题——在整张图片中是否有一个特定的对象类别(比如汽车)。现在我们可以问一个更难点的问题——这张图里都包含了什么,这就变成了一个著名的问题“图像语义分割”:提取图片场景中所有的对象。例如下面街道场景的图片
你可以想象一下,这可以用于帮助你有选择的编辑一些照片,或者用于拼接一张全新的照片;我们还能马上想出更多的应用场景。
解决语义分割问题可以有很多方法,但是一个最有效的算法是像素级分类:训练一个分类器在像素级别预测每一个对象(如汽车、街道、树、墙等)分布情况。这个任务带给机器学习一些计算问题,特别是图片包括很多的像素的时候(例如,诺基亚1020智能手机拍照的像素是4100万像素)。这就意味着整个运算时间是我们分类任务全部训练和测试样本图片乘以几百万的倍数。
这个问题的规模促使我们寻找一个更有效的分类模型——决策树(也称为随机树或随机决策树)。一个决策树是一个分离训练后的决策树的集合,如下图所示。
每一决策树都有一个根节点,多个内部“分支”节点,和多个叶子节点。测试分类时,从根节点开始,并且计算二叉“分支函数”,这个函数可能就像“这个像素是否比它的邻域像素更红”一样简单。根据该二元决策,它将沿分支向左或向右,接下来查看下一个“分支函数”,一直重复这样的操作。当最终达到叶子节点,一个存储的预测——通常是一个包含类别标签的直方图——就是输出(你也可以去看一下ChrisBurges最近的一篇非常出色的论文,是关于提升变种决策树在搜索排名中的应用)。
决策树的美在于他的执行效率:虽然从根节点到叶子节点包含指数级可能的路径,但是任意一个独立的测试像素仅仅通过一个路经。此外,分支函数的计算是以此前的事件为条件的:例如,分类器只需要依赖此前分支决策的答案提出正确的问题就行了。这很像“20问”游戏:当你仅被允许去问少量问题时,你可以很快学会根据你以前问题的答案来调整自己要提出的下一个问题。
有了这项技术,我们已经能够成功处理这些不同的问题,如照片的语义分割,街头的场景分割,人体解剖学的3D医学扫描图像分割,摄像头的重定位和使用Kinect深度摄像头对人体身体部位的划分。对于Kinect来讲,决策树测试时间效率是关键:我们有一个非常严格的计算预算,但是这样的计算要求搭配XboxGPU并行处理像素的能力,意味着我们能够适应这种应用场景。
深层神经网络
在过去的几年里,我们视觉研究者所使用的测试数据集无论在质量上,还是数量上都有了快速的提高。这些进步在很大程度归因于吸收了众包的成果。众包项目允许我们把数百万张已标记图像加入测试数据集。其中一个最具挑战性的测试数据集ImageNet,就包含了数万个种类、超过百万张已标注层次的图像。
然而多年来,对ImageNet测试数据集的识别工作进展较缓慢,直到2012年,Krizhevsky等人的成果震惊了业界。他们使用通用GPU配合一些看似细微的算法改进,从而更深层次地训练卷积神经网络。最终,他们在ImageNet的1000个分类测试中显著提升了图像分类的准确性。这项成果还赢得了大众媒体的关注,甚至导致相关的初创公司被大笔收购。自从那以后,“深度学习”开始成为计算机视觉领域的热门话题,而最近发表的文章也开始涵盖到物体定位、脸部识别和人体姿势识别等与“深度学习”息息相关的内容。
展望未来
深度卷积网络毫无疑问是相当强大的,然而它真的能解决计算机视觉领域的一切问题吗?可以肯定的是,它还会继续火热下去并且推动业界未来几年的发展,同时我们也相信未来还会有新的突破性进展。谁也说不准会有哪些突破,但我们会为你预测一些我们认为很有可能实现的突破点:
语义分析:以上的网络模型只能学会理解图像内容的表意,而不能深入理解图像中各个物体、物体之间如何相互联系以及特定物体在生活情景中的作用,例如我们不能轻率地根据头发看起来会有点光泽,和他们拿着电吹风这一事实,很有把握地推断他们的头发是湿的。像微软CoCo这样的新型测试数据集就可以帮助增强语义分析。该数据集对抽象图像提供非常详尽的分类标注,例如包含多个主体的图像会被标记出不重要的部分。
运行效率:虽然对测试图片的深度网络评估过程可以通过并行计算来加速,但是神经网络的构造并没有在上一篇中提及的逻辑运算概念:每一个训练样例必须通过遍历网络中的所有节点来输出结果。再者,即使配备高速的GPU,训练网络也要花费数天甚至数周,这使得深度网络不能快速投入试用。
结构学习:经过多年的研究发展,深度卷积网络现在拥有一个设计完善、相对死板的结构。也就是说,改变某一层大小或层级的数量会对模型做出预测的能力产生不良影响。除了简单粗暴地输入特定参数来最优化网络的形态,我们希望可以真正地直接从数据中学习出更加灵活的网络结构。
近年来,我们已经开始寻找突破这些瓶颈的方案。现在,我们很高兴能向你推荐我们最新的成果,决策丛林模型:根部相连接的决策有向无环图。你可以认为决策有向无环图是子节点相通的决策树,因此一个子节点可以存在多个父节点。我们不但证明了这种模型在内存消耗上比决策树降低了一个数量级,同时还能大大提高模型的泛化能力。有向无环图起初看起来很像神经网络,但是有两个重要的不同点:第一,其结构和模型参数都是从数据中学习而来的;第二,有向无环图保留了决策树中高效的逻辑运算:一个测试样例只沿着有向无环图的一条路径传递,而不是像神经网络一样遍历所有节点。我们正在积极尝试结合其他深度学习的形态,譬如结果的复用和树节点的纠缠,使得决策丛林能够真正有效地替代深度神经网络。
如果你对运用决策丛林模型解决问题感兴趣,Azure机器学习云平台中的Gemini模块将能带你探索得更深入。
总的来说,计算机视觉的前途一片光明,其中很大程度归功于机器学习。即便近年来视觉领域的快速发展已经让人难以置信了,但我们认为计算机视觉的研究未来还会震惊世界。
原文发布时间为:2015-03-09
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号
【收藏】2018年不容错过的20大人工智能/机器学习/计算机视觉等顶会时间表 计算机科学,尤其是人工智能领域相比其他学科更重视会议,最新、最重要的工作往往先发表在相关顶会上。本文介绍了2018年值得关注的20个顶会,包括人工智能、机器学习、计算机视觉、自然语言处理、体系结构等领域。
阿里巴巴iDST+阿里视频云:计算机视觉和机器学习在消费级视频中的应用 本文邀请iDST高级算法专家刘扬,将从视频云和人工智能技术结合的由来、消费级视频的特点、iDST视频AI技术进展、iDST的VENUS视频分析平台、视频云+人工智能未来展望五个部分,来介绍iDST在视频领域的技术和在视频云上的工作成果。
为什么不去读顶级会议上的论文?适应于机器学习、计算机视觉和人工智能? 为什么不去读顶级会议上的论文?适应于机器学习、计算机视觉和人工智能? 看了版上很多贴子,发现很多版友都在问“热门研究方向”、“最新方法”等。有同学建议国内某教授的教材、或者CNKI、或者某些SCI期刊。
在我的理解里,要实现计算机视觉必须有图像处理的帮助,而图像处理倚仗与模式识别的有效运用,而模式识别是人工智能领域的一个重要分支,人工智能与机器学习密不可分。纵观一切关系,发现计算机视觉的应用服务于机器学习。
计算机视觉、机器学习相关领域论文和源代码大集合 注:下面有project网站的大部分都有paper和相应的code。Code一般是C/C++或者Matlab代码。 最近一次更新:2013-3-17 一、特征提取Feature Extraction: · SIFT [1] [Demo program][SIFT Lib...
python机器学习数据建模与分析——数据预测与预测建模 机器学习的预测建模在多个领域都具有重要的应用价值,包括个性化推荐、商品搜索、自动驾驶、人脸识别等。本篇文章将带领大家了解什么是预测建模
python机器学习——朴素贝叶斯算法笔记详细记录 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBM)。和决策树模型相比,朴素贝叶斯分类器(Naive Bayes Classifier 或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。
相关文章
- 李宏毅机器学习_10-4无监督学习-自编码器
- 李宏毅机器学习_8卷积神经网络
- 深度学习和其他机器学习方法相比有哪些关键的不同点,它为何能在许多领域取得成功?
- (《机器学习》完整版系列)第14章 概率图模型——14.10 变分推断用于EM算法
- (《机器学习》完整版系列)第9章 聚类——9.1 聚类的概念与度量
- 机器学习数学笔记|Taylor展开式与拟牛顿
- 人工智能、深度学习、机器学习常见面试题83~100
- 人工智能、深度学习、机器学习常见面试题01~20
- 机器学习笔记之前馈神经网络(二)非线性问题
- IEEE2015 可视化会议-机器学习渐呈星火燎原之势
- CMU机器学习学院院长Tom Mitchell:计算机模拟人脑才刚刚起步
- Apache Spark机器学习.2.2 数据清洗
- 关于机器学习在网络安全中的五大误解
- Apache Spark机器学习2.6 特征提取
- 《面向机器智能的TensorFlow实践》导读
- 机器学习面试题总结(在不断更新~)
- 深度学习及机器学习框架对比摘要
- Python相关机器学习‘武器库’
- 【机器学习】如何简单形象又有趣地讲解神经网络是什么?
- 《Python机器学习——预测分析核心算法》——2.3 对“岩石vs.水雷”数据集属性的可视化展示
- 入行数据分析要知道什么是机器学习优化思想
- Python机器学习零基础理解支持向量机
- 『迷你教程』 机器学习调参侠神套路模型的配置和选择
- 台湾大学 机器学习基石 扩展阅读资料
- Spark ML机器学习
- 机器学习中的流形学习算法 Manifold Learning
- 随时更新———个人喜欢的关于模式识别、机器学习、推荐系统、图像特征、深度学习、数值计算、目标跟踪等方面个人主页及博客
- windows 两台机器同步备份的部署
- 机器学习入门--MNIST(二)
- 【动图】机器学习的学习方式及学习算法的类别【转】
- 机器学习常用算法
- 机器学习课堂笔记20210923——第三次课