计算机视觉,通常缩写为CV,被定义为一个研究领域,旨在开发帮助计算机“看”并理解数字图像(如照片和视频)内容的技术。
计算机视觉问题看起来很简单,因为人类,甚至是幼小的儿童,都能轻而易举地解决它。然而,由于对生物视觉的理解有限,以及在动态且几乎无限变化的物理世界中视觉感知的复杂性,它在很大程度上仍然是一个未解决的问题。
在这篇文章中,您将了解计算机视觉领域的简要介绍。
阅读本文后,你将了解:
- 计算机视觉领域的目标及其与图像处理的区别。
- 是什么让计算机视觉问题充满挑战。
- 计算机视觉中常见的任务。
通过我的新书《深度学习在计算机视觉中的应用》启动您的项目,书中包含所有示例的分步教程和Python源代码文件。
让我们开始吧。

计算机视觉温和入门
照片由Axel Kristinsson拍摄,保留部分权利。
概述
本教程分为四个部分;它们是
- 计算机视觉的渴望
- 什么是计算机视觉
- 计算机视觉的挑战
- 计算机视觉中的任务
计算机视觉的渴望
我们沉浸在图像中。
智能手机配备摄像头,拍照或录像并分享从未如此简单,这导致了Instagram等现代社交网络的惊人增长。
YouTube可能是第二大搜索引擎,每分钟都有数百小时的视频上传,每天有数十亿视频被观看。
互联网由文本和图像组成。索引和搜索文本相对简单,但为了索引和搜索图像,算法需要知道图像包含什么。长期以来,图像和视频的内容一直不透明,最好通过上传者提供的元描述来描述。
为了最大限度地利用图像数据,我们需要计算机“看”懂图像并理解其内容。
对于人类,甚至是幼小的儿童来说,这都是一个微不足道的问题。
- 一个人可以描述他们只看过一次的照片内容。
- 一个人可以总结他们只看过一次的视频。
- 一个人可以认出他们只见过一次的面孔。
为了解锁我们的图像和视频,我们至少需要计算机具备相同的能力。
想通过深度学习实现计算机视觉成果吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
什么是计算机视觉?
计算机视觉是专注于帮助计算机“看”的问题的研究领域。
在抽象层面,计算机视觉问题的目标是利用观察到的图像数据来推断世界的一些信息。
— 第83页,《计算机视觉:模型、学习和推理》,2012年。
它是一个多学科领域,广义上可称为人工智能和机器学习的子领域,可能涉及使用专门的方法和利用通用学习算法。

人工智能与计算机视觉的关系概述
作为一个多学科研究领域,它可能看起来很混乱,技术从各种不同的工程和计算机科学领域借用和重用。
视觉中的一个特定问题可能很容易通过手工统计方法解决,而另一个问题可能需要大量复杂的通用机器学习算法集成。
计算机视觉作为一个领域是一个知识前沿。像任何前沿一样,它令人兴奋且杂乱无章,并且通常没有可靠的权威可供参考。许多有用的想法没有理论基础,有些理论在实践中毫无用处;发达的领域广泛分散,通常一个看起来完全无法从另一个访问。
— 第xvii页,《计算机视觉:现代方法》,2002年。
计算机视觉的目标是理解数字图像的内容。通常,这涉及开发试图重现人类视觉能力的方法。
理解数字图像的内容可能涉及从图像中提取描述,这可能是一个对象、一个文本描述、一个三维模型等等。
计算机视觉是自动从图像中提取信息。信息可以指从3D模型、摄像机位置、物体检测和识别到图像内容分组和搜索的任何内容。
— 第ix页,《用Python编程计算机视觉》,2012年。
计算机视觉与图像处理
计算机视觉与图像处理是不同的。
图像处理是从现有图像创建新图像的过程,通常以某种方式简化或增强内容。它是一种数字信号处理,不关注图像内容的理解。
一个给定的计算机视觉系统可能需要对原始输入应用图像处理,例如图像预处理。
图像处理的例子包括:
- 规范图像的光度属性,例如亮度或颜色。
- 裁剪图像边界,例如将照片中的对象居中。
- 去除图像中的数字噪声,例如低光照条件下的数字伪影。
计算机视觉的挑战
帮助计算机实现“看”的功能,结果证明非常困难。
计算机视觉的目标是从图像中提取有用信息。这被证明是一项出人意料的挑战性任务;在过去的四十年里,它吸引了成千上万的聪明和富有创造力的人才,尽管如此,我们距离构建一台通用“视觉机器”仍然遥远。
— 第16页,《计算机视觉:模型、学习和推理》,2012年。
计算机视觉似乎很容易,也许是因为人类能够毫不费力地完成它。
最初,人们认为这是一个微不足道的问题,一个学生将摄像头连接到电脑上就能解决。经过数十年的研究,“计算机视觉”仍然没有解决,至少在达到人类视觉能力方面是如此。
在六十年代,人工智能领域的顶尖专家认为,让计算机拥有视觉与一个暑期学生项目的难度相当。四十年后,这项任务仍然没有解决,并且似乎令人生畏。
— 第xi页,《计算机视觉中的多视图几何》,2004年。
一个原因是,我们对人类视觉的工作原理没有深入的理解。
研究生物视觉需要理解眼睛等感知器官,以及大脑对感知的解释。在描绘过程和发现系统使用的技巧和捷径方面都取得了很大进展,尽管像任何涉及大脑的研究一样,还有很长的路要走。
知觉心理学家花了数十年时间试图理解视觉系统如何运作,尽管他们可以设计光学错觉来区分其某些原理,但这一难题的完整解决方案仍然难以捉摸
— 第3页,《计算机视觉:算法与应用》,2010年。
造成这个难题的另一个原因是视觉世界固有的复杂性。
一个给定的物体可能会从任何方向、在任何光照条件下、被其他物体以任何类型的遮挡等方式被看到。一个真正的视觉系统必须能够在无限多的场景中“看”并仍然提取出有意义的信息。
计算机擅长解决严格受限的问题,而不是像视觉感知这样开放无边界的问题。
计算机视觉中的任务
然而,该领域已经取得了进展,尤其是在最近几年,随着用于光学字符识别和相机、智能手机人脸检测的商业系统。
计算机视觉正处于其发展的非凡时期。该学科自20世纪60年代就已经存在,但直到最近才有可能利用计算机视觉的思想构建有用的计算机系统。
— 第xviii页,《计算机视觉:现代方法》,2002年。
2010年出版的计算机视觉教科书《计算机视觉:算法与应用》列举了一些计算机视觉取得成功的顶级问题。
- 光学字符识别 (OCR)
- 机器检测
- 零售(例如自动化结账)
- 三维模型构建(摄影测量)
- 医学影像
- 汽车安全
- 匹配移动(例如在电影中将CGI与真人演员合并)
- 动作捕捉(mocap)
- 监控
- 指纹识别与生物识别
这是一个广泛的研究领域,拥有许多专门的任务和技术,以及针对特定应用领域的专业化。
计算机视觉有着广泛的应用,包括旧有的(例如,移动机器人导航、工业检测和军事情报)和新兴的(例如,人机交互、数字图书馆中的图像检索、医学图像分析和计算机图形学中合成场景的逼真渲染)。
— 第xvii页,《计算机视觉:现代方法》,2002年。
考虑到大量可用的数字照片和视频,缩小范围,关注一些您可能遇到或有兴趣解决的更简单的计算机视觉任务可能会有所帮助。
许多流行的计算机视觉应用都涉及尝试识别照片中的事物;例如
- 对象分类:这张照片中属于哪一类别的对象?
- 对象识别:这张照片中是特定对象的哪种类型?
- 对象验证:照片中是否存在该对象?
- 物体检测:照片中的物体在哪里?
- 对象地标检测:照片中对象的关键点是什么?
- 对象分割:图像中哪些像素属于该对象?
- 物体识别:这张照片里有什么物体,它们在哪里?
其他常见示例与信息检索相关;例如:查找与图像相似的图像,或包含某个对象的图像。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
- 计算机视觉:模型、学习和推理, 2012.
- 用Python编程计算机视觉, 2012.
- 计算机视觉中的多视图几何, 2004.
- 计算机视觉:算法与应用, 2010.
- 计算机视觉:现代方法, 2002.
文章
总结
在这篇文章中,您了解了计算机视觉领域的简单介绍。
具体来说,你学到了:
- 计算机视觉领域的目标及其与图像处理的区别。
- 是什么让计算机视觉问题充满挑战。
- 计算机视觉中常见的任务。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
干得好。
谢谢。
干得好,先生,
我有两个问题。
1. 您能列举一些现代专业的计算机视觉工具(从工业角度看)吗?
例如Python with Matlav或Anaconda。
您会推荐什么?
2. 从学生水平晋升到专业水平,至少应该掌握哪些工具,以及最低数量是多少?
(也许您可以将这两个问题合并)
Python平台,OpenCV和Keras等深度学习库
https://machinelearning.org.cn/start-here/#dlfcv
尊敬的先生,
您在这里为我撰写博客文章真是太好了,感谢您的一切。但我有一个问题,如果您能回答的话,那就是在深度学习的图像分类中,有哪些特征提取器比CNN更好,以及在提取特征后用于输入的最佳分类器是什么?
谢谢
在ImageNet数据集子集上训练的高性能预训练模型可以作为一种非常有效的特征提取模型。
例子包括VGG、Inception和ResNet。
这些特征可以输入神经网络或另一种算法,例如支持向量机。
做得很好。
我们预计这本书什么时候出版?
谢谢。
我希望很快。
好文章,平衡得很好。既不太技术化也不太浮夸!
干得好!
谢谢理查德!
很棒的工作,你是一位很棒的老师。
我像你上面提到的那样,把计算机视觉和图像处理搞混了,从现有图像中检测物体属于计算机视觉,从现有图像中创建新图像属于图像处理,所以你举例的计算机视觉是OCR,ANPR(自动车牌检测)也是从现有图像中获取信息,但我们在这方面使用了图像处理。
如果你理解我的问题,请你解释一下好吗?
(抱歉我的英语,它不是我的母语)
是的,通常一个计算机视觉项目会包含图像处理的方面。
好文章,好作品。
谢谢,很高兴对您有帮助。
终于!感谢您清晰的解释……它们也将帮助我向他人解释。
谢谢,很高兴它们有所帮助!
你太棒了,老兄
谢谢。
很好的帖子,为机器学习提供了很好的信息
谢谢!
谁能告诉我它的数据?
什么数据?
嗨,
那3D建模呢?或者使用立体相机或摄影测量技术构建3D模型呢?这也算作计算机视觉吗?
是的。
读了这篇文章是为了理解我孙女正在上的一门课程。它清晰且有帮助——我确实有数学背景。
谢谢乔安娜,很高兴它有所帮助!
你好,教授
感谢您这篇精彩的文章,您能帮我如何识别手语吗?
也许这个过程会有所帮助
https://machinelearning.org.cn/start-here/#process
你好 Jason,
您有关于“医学影像机器学习”的文章吗?
谢谢
目前还没有。
您可以在此处找到计算机视觉教程
https://machinelearning.org.cn/start-here/#dlfcv
先生,我有一个问题
机器视觉中的特征选择和提取方法是否适用于所有图像?还是算法会根据图像而变化?
特征选择和提取由CNN模型学习,并由模型自动对所有图像执行。
文章解释得很好,但我有一个问题,计算机视觉的道德观是它可以帮助了解图像和图像中物体的属性,但无法提取图像的真实含义吗?
我说对了吗?
不,我们使用计算机视觉工具解决特定的工程问题。
精彩文章。
谢谢!
嗨,Jason,
非常感谢您的精彩文章。我有一个基本问题。您能帮我理解以下问题吗?
我们能说图像是来自互联网资源(Flicker、Google和许多其他来源)收集的自然图像吗?
期待您的回复。
非常感谢!
抱歉,我不太明白。也许您可以重新措辞或详细说明您的问题。
嗨,Jason,
非常感谢您的快速反馈!
我有一个数据集“MIT-Indoor-67”,其中包含从Flicker、Google和LabelMe等互联网来源收集的图像。在深度学习/图像预处理的背景下,我能称这些数据集的图像为“自然图像”吗?我对深度学习背景下的自然图像和真实图像概念感到困惑。
非常感谢!
抱歉,我以前没有听说过这些术语,我不知道它们的区别。
说计算机视觉是人工智能的一个子领域是不正确的。计算机视觉和人工智能是不同的领域,其核心与彼此无关。除了物体检测、识别等,计算机视觉还涉及相机校准、计算成像、立体深度估计等等。但确实,许多经典的计算机视觉算法已被机器学习算法取代。
感谢马丁的反馈!您可能会发现以下内容感兴趣
https://machinelearning.org.cn/how-to-get-started-with-deep-learning-for-computer-vision-7-day-mini-course/