Computer Vision (CV)
探索计算机视觉如何让机器理解图像和视频。了解核心任务、行业应用,以及如何开始使用 Ultralytics YOLO。
计算机视觉 (CV) 是人工智能 (AI)领域,使计算机和系统能够从数字图像、视频及其他视觉输入中提取有意义的信息。如果说 AI 让机器能够思考,那么计算机视觉就让它们能够看见、观察和理解。与基于规则的图像处理工具不同,现代系统直接从数据中学习:它们不会被明确告知汽车或肿瘤是什么样子,而是从数千个带标注的示例中识别底层模式,并将这些知识泛化到从未见过的图像上。通过应用机器学习 (ML)和深度学习 (DL),计算机视觉将非结构化视觉数据转化为软件可以执行的决策。
计算机视觉的工作原理#
计算机将图像视为表示像素的数值数组。将这个数组转化为行动需要经过五个阶段的流程。

图像采集。 工作流程从硬件开始——CMOS 传感器、红外摄像头或 LiDAR 扫描仪捕获光线,并将其转换为数字像素网格。在开始分析前,相机标定会校正镜头几何形状。
预处理。 对采集的数据进行归一化,使模型接收一致的输入:调整尺寸、降低噪声并调节对比度。
特征提取。 系统识别边缘、梯度和角点等低级特征。随着数据在网络中逐层深入,这些基本元素会组合成高级特征——纹理、模式和复杂几何形状。系统可能先检测到垂直线,将其识别为栅栏柱,然后理解整个场景是一个边界围栏。这一过程称为特征提取。
模型推理。 现代计算机视觉的核心引擎是卷积神经网络 (CNN)。与将图像视为数字平面列表的标准神经网络不同,CNN 能保留像素之间的空间关系,并使用在图像上滑动的滤波器来检测模式,无论这些模式出现在画面中的什么位置。近年来,视觉 Transformer (ViTs)成为一种强大的替代方案,将自然语言处理中的注意力机制应用于图像数据。
输出和行动。 模型返回结构化结果——标签、一组边界框或像素掩码——周围系统据此采取行动:剔除有缺陷的零件、为车辆制动或发出警报。
模型如何学习#
模型的表现取决于它所使用的数据。监督学习需要大量训练数据,而ImageNet和COCO等基准数据集提供了数百万个带标注的示例。在训练过程中,模型进行预测,将预测结果与真实标签进行比较,并调整内部权重以降低误差。训练完成后,同一个模型就会执行上文所述的推理步骤。
从基于规则的系统到深度学习的转变#

早期计算机视觉依赖人工特征工程:工程师定义严格的几何参数,帮助机器识别物体。这些系统非常脆弱,光照变化或物体以不熟悉的角度出现时就会失效。2012 年发布的 AlexNet 在超过一百万张带标注的 ImageNet 图像上进行训练,证明卷积网络能够大规模超越人工设计的方法,成为一个转折点。深度学习用能够自主学习特征的架构取代了人工调优的规则——即使在永远无法完全受控的真实环境中,也足够灵活并能保持稳定表现。
计算机视觉与图像处理、机器视觉的区别#
区分计算机视觉与经常被混淆的相邻领域非常重要。
- **图像处理**会对图像进行操作,以增强图像或提取信号,例如调整亮度、对比度或应用滤波器。它的输出通常仍是一幅图像。计算机视觉以图像为输入,并输出一种解释(“这个房间里有三个人”)。计算机视觉通常会将图像处理作为准备步骤。
- **机器视觉**指的是在光照固定、零件位置已知等严格受控环境中运行的工业检测系统。计算机视觉是更广泛的学科,旨在应对不可预测且不受控的条件。
- 自然语言处理处理文本和语音。计算机视觉完全以视觉数据为中心,不过视觉语言模型正日益成为连接这两个领域的桥梁。
计算机视觉的核心任务#
计算机视觉并非单一功能,而是一组各不相同的任务,每项任务解决不同的问题。要深入了解每项任务,请参阅完整的计算机视觉任务指南。
- **图像分类:**为整幅图像分配一个标签,回答“这张图片里有什么?”例如,将产品分为有缺陷或无缺陷。与之密切相关的是图像识别,用于识别图像中存在的内容。
- **目标检测:**识别不同的物体,并在每个物体周围绘制一个边界框,使系统能够在单个画面中计数并定位多个物体。
- **实例分割:**为每个检测到的物体生成像素级掩码,从而区分同一类别中的不同实例。语义分割则为每个像素分配类别,但不区分实例。
- **姿态估计:**检测物体上的关键点,例如人体关节,以跟踪运动和姿态。
- **定向边界框:**为不与坐标轴对齐的物体拟合旋转框,在航空和卫星图像中必不可少。
- **目标跟踪:**在视频流中持续跟踪物体,并在不同画面之间保持一致的 ID。光流通过分析连续画面之间的表观运动进一步扩展了这一能力。
- **光学字符识别 (OCR):**将印刷或手写文本的图像转换为机器可读数据,从而大规模自动化文档处理。
选择合适的任务#
从一开始就让技术任务与业务目标保持一致,可以避免代价高昂的返工。
| 业务目标 | 应使用的任务 |
|---|---|
| 将产品分类 | 图像分类 |
| 计算物品数量或定位其位置 | 目标检测 |
| 分析物体的精确形状或边界 | 实例分割 |
| 跟踪视频画面中的运动 | 目标跟踪 |
| 测量身体位置或关节角度 | 姿态估计 |
| 检测航空图像中的旋转物体 | 定向边界框 |
| 读取文档或标签中的文本 | 光学字符识别 |
实际应用#
如今,计算机视觉已成为大多数主要行业生产系统的基础。

- **制造业和质量控制。**现代生产线的运行速度超过人类视觉能力。视觉系统执行即时的质量检测,能够以生产线速度识别微小裂纹或错位组件,不会出现人工检查员积累的疲劳。监控机械的磨损模式还可以实现预测性维护——在故障导致非计划停机之前发现故障特征。请参阅制造业中的计算机视觉和缺陷检测。
- 医疗与诊断。医学图像分析算法处理 X 射线、MRI 和 CT 扫描,以检测早期肿瘤、微骨折和视网膜异常,这些问题在时间压力下很容易被忽略。在手术室中,视觉系统可在微创手术期间提供实时空间映射。请参阅医疗领域中的计算机视觉。
- **零售。**无人结账商店使用传感器融合和视觉算法跟踪离开货架的商品,并自动向顾客计费。这些系统还会实时监控货架库存水平,触发补货提醒,支持库存管理和零售损耗防控。请参阅零售领域中的计算机视觉。
- **自动驾驶交通。**感知层是自动驾驶汽车中对安全最关键的组件。视觉系统实时识别车道线、交通标志、行人和其他车辆,并将摄像头输入与雷达和 LiDAR 结合,通过3D 目标检测构建车辆周围环境的 360 度模型。请参阅自动驾驶车辆。
- **安全与监控。**安全基础设施已从被动记录转向主动干预——检测受限区域内的逗留行为,及时标记异常行为模式,并支持公共场所的队列管理。异常检测是其底层能力。
- **农业。**无人机和拖拉机在单株植物层面评估作物健康状况,分析多光谱图像以检测脱水、虫害或营养缺乏。随后只在需要的地方施用水、农药和肥料,而不是覆盖整个田地。请参阅农业领域中的计算机视觉。
边缘计算中的计算机视觉#
实时视觉分析越来越多地在边缘侧运行——直接在摄像头或本地网关上运行——而不是将视频传输到集中式云服务器。这主要有两个原因。
延迟会降至接近于零,这对于自动驾驶机器人或工业生产线检测而言不可妥协,因为几毫秒的延迟就可能产生错误。此外,由于网络传输的只是元数据而不是原始视频,带宽需求会大幅下降,隐私性也会提高,因为敏感影像始终不会离开本地设备。边缘 AI和实时推理使这一切成为可能,而 ONNX 和 TensorRT 等模型部署选项则让同一个训练好的模型能够在各种硬件上运行。
挑战与局限#
**数据质量。**模型的表现反映了训练数据的质量。低分辨率、标注不佳或缺乏代表性的数据集会产生不可靠的模型,而构建多样化的带标注数据集往往比设计算法更加耗费人力。请参阅数据标注。
**环境变量。**大雨、镜头光晕、局部遮挡和物体尺度变化都会降低性能。稳健的系统依靠训练期间的数据增强来模拟这些条件,在部署前建立适应能力,并通过仔细验证避免过拟合。
**伦理考量与偏差。**在缺乏人口统计多样性的数据集上训练的模型,在不同人群中的表现会不均衡。部署用于分析人员的系统的组织——无论应用于医学成像、工作场所安全还是公共空间——都必须审核数据集的公平性,并遵守涵盖自动化决策的新兴法规。
计算机视觉的未来#
视觉 Transformer 正在重塑需要理解图像中相距较远部分之间关系的任务所能达到的效果。此外,多模态学习将视觉数据与文本、音频和深度信息结合起来,构建具备更丰富上下文理解能力的系统——能够回答有关图像问题的视觉语言模型就是早期示例。
生成式 AI正在直接应对数据稀缺问题。合成数据使创建罕见场景的超逼真图像成为可能,例如具体的故障模式和不常见的疾病表现,而这些图像在现实世界中无法以足够数量采集。与此同时,深度感知摄像头和 LiDAR 正在推动系统超越平面图像分析,迈向空间计算:将数字信息叠加到物理世界上,用于 AR 引导维护和结构映射等应用。
使用 Ultralytics 实现计算机视觉#
对于正在试行计算机视觉项目的团队,Ultralytics YOLO26是实时目标检测的实用起点——开源、文档完善,并且运行速度足以支持边缘部署。不同硬件上的准确率和延迟数据发布在基准测试页面上,文档中还提供了模型并排对比。更广泛的生态系统包括用于经典图像处理的 OpenCV,以及作为主要训练框架的 PyTorch。
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Run inference on a standard example image
# The model identifies objects and their locations
results = model("https://ultralytics.com/images/bus.jpg")
# Display the resulting image with bounding boxes
results[0].show()此脚本仅用几行代码就能使用预训练模型执行推理。希望从试点项目迈向生产环境的团队,可以使用Ultralytics Platform标注数据集、在云端训练模型并管理部署,也可以应用迁移学习,使用远少于从头训练所需的带标注数据,将预训练模型适配到自定义数据集。
常见问题#
**计算机视觉和机器学习有什么区别?**机器学习是构建能够从数据中学习的系统这一更广泛的学科。计算机视觉则是这一学科的应用——通常通过深度学习处理图像和视频等视觉输入。如今几乎所有计算机视觉系统都建立在机器学习之上,但机器学习也涵盖文本、音频和表格数据。
**计算机视觉和图像识别是一回事吗?**不是。图像识别是计算机视觉中的一项任务,用于识别图像中出现的内容。计算机视觉还涵盖目标检测、分割、姿态估计、跟踪和场景理解。
**训练计算机视觉模型需要多少数据?**这取决于任务的复杂程度以及模型需要处理的变化范围。使用 Ultralytics YOLO26 等预训练模型进行迁移学习可以显著降低数据需求;实用的自定义检测器通常每个类别使用几百到几千张带标注图像即可训练,而基础模型的训练则使用了数百万张图像。
**计算机视觉可以在没有互联网连接的情况下运行吗?**可以。模型能够直接部署到边缘设备上并完全离线运行;当延迟、带宽或数据隐私规定不允许将视频发送到云端时,这是一种标准做法。
**计算机视觉使用哪种编程语言?**Python 占据主导地位,这得益于其成熟的生态系统——ultralytics 包、PyTorch 和 OpenCV。需要最高推理性能的场景会使用 C++,通常用于嵌入式系统和汽车系统。









