游乐游手机版
首页/AI热点日报/热点详情

计算机视觉经典机器学习应用分析详解

类型:热点整理2026-07-21
以条形码扫描为例,计算机视觉分为传统、经典机器学习和深度学习三种技术路线。传统方法简单可解释但需专家调优;经典机器学习对数据变化鲁棒但需手工设计特征;深度学习通用性强、精度高但计算量大。实际应用需根据场景权衡选择。

作者:Reese Grimsley,德州仪器系统应用工程师。本文以使用边缘AI解码条形码的扫描仪为例,探讨计算机视觉的三种技术路线及其在嵌入式系统中的应用。

计算机视觉的目标,就是把人类那种信息量巨大又直观的视觉能力,引入计算机。这样一来,装配线自动检查、安全监控、驾驶辅助、机器人导航……这些应用才能成为现实。

但计算机可没有人类与生俱来的直觉视觉,它不会“一眼看懂”画面。相反,我们必须为它提供专门的算法,让它学会处理某个具体任务。

我们常常把视觉能力当作理所当然——低头看冰箱上的保质期,抬头等红绿灯变绿,这些事对大脑来说简直不费吹灰之力。然而,要让机器做到同样的事,却是一条曲折的技术之路。

计算机视觉的历史可以追溯到1960年代,最初的任务是读取页面文字(光学字符识别)或识别简单的几何形状(圆、矩形)。从那时起,它逐渐成为人工智能的核心领域之一。所有试图从数据中感知、合成甚至推断深层含义的计算机系统,都属于这个范畴。而今天我们讨论的计算机视觉,大致可以分为三种类型:传统(或称“基于规则”)计算机视觉、经典机器学习,以及深度学习。

在这篇文章里,我们会从“让计算机像人类一样感知世界”的角度来审视AI,并重点比较这三种路径在本地处理数据(而不是依赖云端)的嵌入式系统中各自的权衡。

传统计算机视觉

所谓传统计算机视觉,就是通过编程算法来解决特定任务——比如运动估计、全景图像拼接,或是线条检测。

它依赖标准的信号处理和逻辑推理。Canny边缘检测、光流法等算法,可以找到物体轮廓或者像素运动的矢量,很适合用来隔离图像中的对象,或者追踪帧与帧之间的运动。这些算法的底层是滤波器、变换、启发式规则和阈值,从图像或视频里提取有意义的信息。很多专用的应用程序,比如解码一维条形码,就是靠一串规则——检测到单条黑色条纹后,逐条解码——来实现的。

传统计算机视觉最大的好处是简单且可解释。开发人员可以一步一步分析算法,说清楚每一步为什么这么干。这在软件审计或者安全关键的场合非常有用。但缺点也很明显:它往往需要相当深的专业知识才能正确实现。

这类算法通常只有一小撮参数,你必须针对不同场景手动调优,才能让它跑出最佳效果。在需要高吞吐量且要求优化的系统里,实现起来尤其困难。更棘手的是,某些规则或参数值一旦遇到与原始假设不符的图像,就可能产生意想不到的偏差——甚至被轻易“骗过”。而新发现的漏洞或边缘情况,往往很难在不增加算法复杂度的前提下修复。

用于计算机视觉的经典机器学习

机器学习是一类用数据来设定算法参数的方案,而不是靠直接编程或手工校准。支持向量机、多层感知器(人工神经网络的前身)、k-最近邻等算法,被用来解决传统计算机视觉搞不定的问题。例如,你想让程序“识别狗”——用传统算法来写规则会非常麻烦,尤其是场景复杂、物体姿态多变的时候。但用机器学习,只需要从几百到上千张样本图片里训练参数,就能轻松应对。边缘情况也能通过包含这些样例的数据集来解决。

训练阶段计算量很大,但一旦模型训练好,在新数据上运行所需的资源就少得多,所以完全可以实时执行。这些训练好的模型在可解释性上通常不如传统方法,但对数据中小的计划外变化(比如物体方向变化、背景噪声)更鲁棒。如果某个变体处理不好,只要用更多数据重新训练就能修复。模型越大(参数越多),精度通常越高,但训练时间更长,运行时需要的算力也更多——过去,这阻碍了超大模型在嵌入式处理器上的实时应用。

基于机器学习的经典计算机视觉方法,仍然需要专家来“手工制作”特征集。很多特征在传统计算机视觉里就很常见。但并非所有特征都有用,需要做特征筛选。有效实现这类算法,要求同时精通图像处理和机器学习。

深度学习

深度学习指的是在大部分未处理(“原始”)数据上运行的超大规模神经网络模型。它对计算机视觉的影响是革命性的——特征提取操作被直接拉入模型内部,算法可以自己学习哪些特征信息量最大。

图1. 每种计算机视觉方法中的数据流

在三种计算机视觉类型中,深度学习的通用性最强。神经网络是通用函数逼近器——只要输入和输出之间存在某种关系,它就能学会。它尤其擅长从数据中发现微妙的、甚至隐藏的模式,对输入变化的容忍度也是最高的。物体识别、人体姿势估计、像素级场景分割等应用,都是它的典型用武之地。

深度学习对直接调参和图像处理专业知识的需求最小。它依赖的是大规模、高质量的数据集——通过逐步优化损失函数或错误指标,让通用算法自己学会模式。新手开发者也能快速上手,因为重心从“如何实现算法”转移到了“如何管理数据集”。此外,大量深度学习模型是公开可用的,拿来针对特定用例重新训练就行。当然,要开发完全自定义的架构,还是需要更多专业知识。

与传统计算机视觉和经典机器学习相比,深度学习的准确性更高,而且由于研究(以及日益壮大的商业)社区的推动,它的能力还在飞速提升。但它的可解释性通常较差——模型太大、太复杂;一旦遇到与训练集截然不同的图像,就可能出现意料之外、难以预测的行为。而且,模型巨大的计算量需要专门的硬件(比如神经处理单元、图形处理单元)来加速实时运行。在大型数据集上训练大模型成本不低,管理庞大数据集也耗时费力。

好消息是,随着处理能力、速度、翻跟斗以及矩阵/矢量运算软件支持的不断进步,算力需求不再像以前那么令人望而却步——即便在嵌入式系统上也是如此。例如,德州仪器的AM6xA系列嵌入式微处理器就集成了硬件翻跟斗,能够以高帧率运行深度学习算法。

比较不同类型的计算机视觉

那么,到底哪种计算机视觉最好?

答案完全取决于具体的应用场景,如图2所示。

图2. 计算机视觉类型及其应用

简单来说,经典机器学习加持的计算机视觉,在大部分属性上都介于另外两种方法之间;真正受益的应用程序集其实并不多。传统计算机视觉在简单、高吞吐量或安全关键的应用中,已经足够准确和高效。深度学习则是最通用的,开发起来最容易,而且在复杂场景和环境里精度最高——例如在高密度PCB组装验证中,识别那些微小的缺失元件。

有些应用会同时使用多种计算机视觉算法,让它们互补短板。在安全关键且环境多变的应用中(比如驾驶辅助系统),这种做法很常见。举个例子,你可以同时用传统视觉方法和深度学习模型来跟踪附近的车辆,然后用融合算法判断两者是否一致。如果不一致,系统就警告驾驶员,或者启动安全降级操作。也可以按顺序使用:条形码阅读器先用深度学习定位感兴趣的区域,裁剪出来,再交给传统计算机视觉算法解码。

计算机视觉实践

计算机视觉的入门门槛正在不断降低。开源库OpenCV提供了边缘检测、颜色转换等常见功能的高效实现。TensorFlow Lite和ONNX Runtime等深度学习运行时,让深度学习模型能在嵌入式处理器上高效运行。这些运行时还提供了与自定义硬件翻跟斗对接的接口,简化了开发流程——你只管在PC或云端训练好算法,然后直接部署到嵌入式处理器上做推理。此外,大量深度学习架构也是公开的,可以直接复用于各种任务。

德州仪器(TI)AM6xA系列处理器(比如AM62A7)内置了深度学习加速硬件,同时还配备针对传统和深度学习计算机视觉任务的软件支持。C66x数字信号处理器内核以及用于光流和立体深度估计的硬件翻跟斗,也为高性能的传统计算机视觉任务提供了保障。

有了这种能同时执行传统和深度学习视觉任务的处理器,科幻电影里的工具正在变成现实:购物车自己结账,手术机器人辅助医生发现早期病灶,移动机器人帮你修剪草坪、送达包裹。只要你能想象出来,离真正构建它的那一天就不远了。

来源:https://m.elecfans.com/article/2304860.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。