计算机视觉是指为计算机赋予人类视觉这一技术目标,从而赋能装配线检查到驾驶辅助和机器人等应用。计算机缺乏像人类一样凭直觉产生视觉和画面的能力。我们必须给予计算机一些算法,以便处理领域特异性任务。
本文着眼于使计算机能够像人类一样通过“看”来感知世界,从这一视角对人工智能 (AI) 进行了探讨。我将简要比较每一类计算机视觉,尤其关注在本地而不是依赖基于云的资源收集和处理数据,并根据数据采取行动的嵌入式系统。
什么是计算机视觉?
20 世纪 60 年代,计算机视觉已经能够执行从页面上读取文本(光学字符识别)和识别圆形或矩形等形状这类任务。从那时起,计算机视觉便成为 AI 的核心领域之一,它包括了任何从数据中感知、综合或推断含义的计算机系统。
计算机视觉有三种方法>
传统计算机视觉是指用来处理诸如运动估计、全景图像拼接或直线检测等任务的编程算法。传统计算机视觉使用标准信号处理和逻辑来处理任务。工程师需要手动选择用于从图像中提取含义的函数,然后在处理任务的算法中使用所生成的特征。Canny 边缘检测算法可以找出运动的轮廓,光流算法可以找出运动的矢量,这有助于在图像或运动跟踪后续图像中分离出物体。对于需要根据此任务或环境进行校准的参数,需要手动或通过辅助算法做出调整。
经典机器学习计算机视觉需要由专家来“打造”特征集,供机器学习模型进行训练。其中许多特征是与传统计算机视觉应用所共有的。并非所有特征都有用,因此需要进行分析以去除无信息特征;机器学习算法将使用这些特征进行训练,以便找出可能难以手动分离的模式。若要有效地实现这些算法,需要具备图像处理和机器学习方面的专业知识。
深度学习计算机视觉属于机器学习,但使用的是非常庞大的神经网络模型,对大量未经处理的“原始”数据进行运算。深度学习对计算机视觉产生了重大影响,它将特征提取操作拉入模型之中,使得算法可以学习信息最丰富的特征,而无需专业知识来手动打造特征集。深度学习甚至能够更好地分离出微妙的模式,但对计算和内存的要求更高。
那么,哪一类计算机视觉最好呢?,这最终取决于表 1 中概述的几个因素。此表只是笼统地进行概括,其中的准确性和任务复杂性等指标依赖于具体用例。
表 1:计算机视觉技术比较
经典机器学习计算机视觉介于传统方法和深度学习方法之间;与其他两种方法相比,能够从中受益的应用集合规模较小。在简单直接、高通量或安全攸关的应用中,传统计算机视觉可能准确而高效。深度学习通用性超强、开发难度超低,并且在复杂应用中的准确性超高,如在高密度设计的印刷电路板 (PCB) 装配验证期间用于发现微小的缺失元件。
一些应用可以通过同时采用多种类型的计算机视觉算法而受益,相互取长补短。这种方法常用于环境非常多变的安全攸关型应用中,如驾驶辅助系统。例如,您可以并行采用基于传统计算机视觉方法的光流和深度学习模型来跟踪附近的车辆,并且使用一种算法对结果进行融合,从而确定两种方法是否一致。如果不一致,系统可能会警告驾驶员或启动安全操控。
替代方法是依次使用多种类型的计算机视觉。条形码读取器可以使用深度学习来定位感兴趣区域,对这些区域进行裁剪,然后使用传统计算机视觉算法进行解码。
深度学习在计算机视觉应用中的益处
与传统计算机视觉和经典机器学习相比,深度学习由于在研究、开源和商业社区中非常受欢迎,因此始终具有较高的准确性,并且在迅速改进。图 1 从开发者的角度总结了这三种技术在数据流方面的差异。
图 1:各种计算机视觉方法的数据流
深度学习是一种计算密集型方法。然而,由于处理能力、速度、加速器(如神经处理单元和图形处理单元)的改进,以及对矩阵和向量运算的软件支持的提升,计算要求增加的问题得以缓解,即使在嵌入式系统上也是如此。诸如 AM62A7 等微处理器可以利用硬件加速器,以很高的帧率运行深度学习算法。
计算机视觉实践
TI AM6xA 产品组合(如 AM62A7)中的处理器包含深度学习加速硬件和辅助软件,有利于传统及深度学习计算机视觉任务。在 TDA4VM 和 AM68PA 等处理器上,数字信号处理器内核(如 C66x)以及用于光流和立体声深度估计的硬件加速器还能为高性能传统计算机视觉任务赋能。
借助能够同时支持传统计算机视觉和深度学习计算机视觉的处理器,将有可能打造出与科幻梦想相媲美的工具。自动购物车将会简化购物过程;手术和医疗机器人将指导医生发现早期疾病征兆;移动机器人将会修剪草坪和递送包裹。请参阅 TI 的边缘 AI 视觉页面,探究嵌入式计算机视觉如何改变世界。
审核编辑 黄宇