计算机视觉是人工智能 (AI) 的一个领域,是指让计算机和系统能够从图像、视频和其他视觉输入中获取有意义的信息,并根据该信息采取行动或提供建议。 如果说人工智能赋予计算机思考的能力,那么计算机视觉就是赋予发现、观察和理解的能力。
计算机视觉的工作原理与人类视觉类似,只不过人类起步更早。 人类视觉系统的优势是终身可以在适当的环境下训练分辨物体、物体距离、物体动静与否以及图像是否存在问题等能力。
计算机视觉训练机器来执行这些功能,但它们依靠摄像头、数据和算法在更短的时间内完成工作,而不像人类是依靠视网膜、视神经和视皮质。 经过训练用于检验产品或监控生产资产的系统每分钟能够分析数千个产品或流程,并且会发现极其细微的缺陷或问题,因此计算机视觉的能力迅速超越人类。
计算机视觉广泛用于许多行业,例如能源、公用事业、制造和汽车行业等等,并且市场仍在不断拓展。 预计到 2022 年,市值将达到 486 亿美元。1
计算机视觉需要大量数据。 它一遍又一遍地运行数据分析,直到能够辨别差异并最终识别图像为止。 例如,要训练一台计算机识别汽车轮胎,计算机视觉需要为其输入大量的轮胎图像和轮胎相关数据,供其学习轮胎差异和识别轮胎,尤其是没有缺陷的轮胎。
这个过程会用到两种关键技术:一种是机器学习,叫做 深度学习,另一种是卷积神经网络 (CNN)。
机器学习使用算法模型,让计算机能够自行学习视觉数据的上下文。 如果通过模型馈入足够多的数据,计算机就能"查看"数据并通过自学掌握分辨图像的能力。 算法赋予机器自学的能力,而无需人类编程来使计算机能够识别图像。
CNN 将图像分解为像素,并为像素指定标记或标签,从而使机器学习或深度学习模型能够"看"到物体。 它使用标签来执行卷积运算(用两个函数产生第三个函数的数学运算)并预测它"看到"的东西。 该神经网络运行卷积运算,并通过一系列迭代检验预测准确度,直到预测开始接近事实。 然后它以类似于人类的方式识别或查看图像。
就像人类辨别远距离的图像一样,CNN 首先辨别硬边缘和简单的形状,然后一边运行预测迭代,一边填充信息。 CNN 用于理解单个图像。 循环神经网络 (RNN) 以类似的方式在视频应用程序中帮助计算机理解一连串帧中的图片关系。
60 多年来,科学家和工程师一直在尝试开发各种方法,让机器能够看到和理解视觉数据。 在 1959 年的第一次实验中,神经生理学家向一只猫展示一组图像,试图唤起猫大脑的反应。 他们发现猫会先对硬边缘或线条做出反应,从科学角度来说,这意味着图像处理从简单的形状开始,例如直边。(2)
大约在同一时期,第一个计算机图像扫描技术成功地开发出来,使计算机能够将图像数字化并获取图像。 1963 年,计算机能够将二维图像转换为三维形式,标志着第二个里程碑的实现。 在 20 世纪 60 年代,人工智能作为一个学术域研究诞生了,同时也标志着人们开始探求依靠人工智能解决人类视觉问题的方法。
1974 年,光学字符识别 (OCR) 技术走向市场,它能够识别以任何字体或字型打印的文字。(3)同样,智能字符识别 (ICR) 能够使用神经网络辨认手写文字。(4)此后,OCR 和 ICR 广泛地运用到文件和发票处理、车牌识别、移动支付、机器翻译和其他常见领域。
1982 年,神经系统科学家 David Marr 证实了视觉分层工作原理,并推出了使机器能够检测边缘、角落、曲线和类似的基本形状的算法。 与此同时,计算机科学家 Kunihiko Fukushima 开发了一个能够识别模式的细胞网络。 这个网络称为 Neocognitron,它在一个神经网络中包含了多个卷积层。
到 2000 年,物体识别成为研究重点,2001 年,第一个实时人脸识别应用诞生。 在 21 世纪初,逐渐形成了视觉数据集标记和注释的标准化实践。 2010 年,ImageNet 数据集公开可用。 该数据集包含上千种物体的数百万张标记的图像,为如今使用的 CNN 和深度学习模型奠定了基础。 2012 年,来自多伦多大学的团队带着一个 CNN 模型参加了图像识别竞赛。 这个名为 AlexNet 的模型显着降低了图像识别的错误率。 在这一次突破后,错误率已经下降到仅仅百分之几的水平。(5)
计算机视觉领域充斥着大量研究,但它不仅仅只是一项研究。 现实世界的应用展示了计算机视觉对商业、娱乐、运输、医疗保健和日常生活的重要性。 推动这些应用增长的一个关键因素是智能手机、安全系统、交通摄像头和其他视觉检测装置源源不断地输出大量视觉信息。 这些数据在各行各业的运营中发挥着巨大的作用,但目前还没有得到充分利用。 这些信息为训练计算机视觉应用打造了试验台,同时也是助力这些应用融入广泛的人类活动的发射台:
许多组织没有资源资助计算机视觉实验室以及创建深度学习模型和神经网络。 他们可能还缺乏处理海量视觉数据所需的算力。 IBM 等公司正在通过提供计算机视觉软件开发服务,助他们一臂之力。 这些服务交付预先构建的学习模型,可以从云端获取,因此还可以缓解对计算资源的需求。 用户通过应用程序编程接口 (API) 连接到服务,并使用它们来开发计算机视觉应用程序。
IBM 还推出了一个计算机视觉平台,解决开发和计算资源这两大问题。 IBM Maximo Visual Inspection 中的计算机视觉工具使主题专家能够标记、训练和部署深度学习视觉模型,而不必编写代码或掌握深度学习的专业知识。 视觉模型可以部署在本地数据中心、云和边缘设备中。
虽然现在更容易获得开发计算机视觉应用所需的资源,但首先仍需要思考一个重要问题:这些应用究竟用来干什么? 理解和定义具体的计算机视觉任务可以确定项目和应用的重点并加以验证,从而更轻松地开始开发工作。
以下示例展示了一些常见的计算机视觉任务:
1. https://www.forbes.com/sites/bernardmarr/2019/04/08/7-amazing-examples-of-computer-and-machine-vision-in-practice/#3dbb3f751018 (连接位于 ibm.com 外部)
2. https://hackernoon.com/a-brief-history-of-computer-vision-and-convolutional-neural-networks-8fe8aacc79f3 (连接位于 ibm.com 外部)
3. 光学字符识别,维基百科 (连接位于 ibm.com 外部)
4. 智能字符识别,维基百科 (连接位于 ibm.com 外部)
5. 计算机视觉(和卷积神经网络)发展简史,Rostyslav Demush,Hacker Noon,2019 年 2 月 27 日 (链接位于 ibm.com 外部)
6. 计算机和机器视觉的 7 个令人叹服的实践范例,Bernard Marr,Forbes,2019 年 4 月 8 日 (链接位于 ibm.com 外部)
7. 5 个计算机视觉技术将改变您眼中的世界,James Le,Heartbeat,2018 年 4 月 12 日 (连接位于 ibm.com 之外)