Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Real-time Inference

实时推理会在下一条输入到达前返回每个预测结果,例如在 30 FPS 下,每帧的处理时间不超过 33 ms。涵盖延迟预算和加速方法。

实时推理是指在实时输入上运行训练好的模型,并在下一次输入到达前返回每次预测结果,让系统能在信息仍然有效时采取行动。摄像头以每秒 30 帧 (FPS) 的速度流式传输时,每帧有 33.3 毫秒用于从读取图像到生成最终结果的所有操作;帧率达到 60 FPS 时,时间预算会缩短至 16.7 ms。每种应用都有自己的截止时间:汽车的感知系统、传送带检测摄像头和视频通话背景滤镜都需要实时运行,但时间预算各不相同。

延迟预算#

需要关注的是端到端推理延迟:捕获帧、通过调整尺寸和归一化进行预处理、模型前向传播,以及解码边界框和非极大值抑制 (NMS)等后处理。总时间超过帧间隔时,尚未处理的帧就会堆积起来,输出会越来越落后于实时画面,因此实时流水线通常会丢弃过时帧,始终处理最新帧。实时计算会区分硬实时系统和软实时系统:对安全气囊控制器等硬实时系统来说,错过截止时间就意味着失败;软实时系统则能容忍偶尔错过截止时间。大多数计算机视觉应用都属于软实时系统:丢帧会让输出质量短暂下降,下一帧就能恢复。

此代码片段将录制的视频流传入小型检测器,并将每帧平均耗时与 30 FPS 的时间预算进行比较:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
video = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"

# stream=True yields each frame's result as soon as it is ready
frame_times = []
for result in model(video, stream=True):
    # Preprocess, inference, and postprocess time for this frame, in milliseconds
    frame_times.append(sum(result.speed.values()))

mean_ms = sum(frame_times) / len(frame_times)
print(f"{mean_ms:.1f} ms per frame ({1000 / mean_ms:.0f} FPS); a 30 FPS camera allows 33.3 ms")

平均耗时低于 33.3 ms,意味着模型能在运行它的硬件上跟上 30 FPS 的摄像头。

实时推理与批量推理对比#

  • 实时(在线)推理: 输入到达后立即处理,通常一次处理一张图像,评估标准是每次预测的延迟。驾驶辅助、机器人控制和实时视频分析都依赖实时推理。
  • 批量(离线)推理: 收集多个输入并一并处理,评估标准是每秒处理的输入数量(吞吐量)和成本。夜间为照片档案重新编制索引或分析上个月的录像都属于批量任务;较大的批次能让 GPU 更充分地工作,但每个输入都要等待更久才能得到结果。

处理多个摄像头流的服务器通常介于两者之间:将不同摄像头的帧分成小批次,以提高吞吐量,同时确保不超出每个视频流的帧时间预算。

实际应用#

  • 自动驾驶汽车: 汽车以 100 km/h 行驶时,每 100 ms 会前进 2.8 米,因此感知延迟会直接增加制动距离。
  • 制造业检测: 传送带上方的摄像头会检测每个零件是否存在缺陷,并且必须在缺陷零件经过剔除装置前触发剔除机制。
  • 机器人: 障碍物检测和姿态估计在机器人的控制循环中运行;感知速度越慢,机器人就必须移动得越慢。
  • 视频特效和增强现实: 视频通话背景模糊和 AR 叠加效果会在每一帧上运行分割或跟踪;任何延迟都会让叠加效果落后于移动的人物。

让模型达到所需速度#

  • 缩小模型或输入尺寸: 较小的模型变体每张图像所需的运算更少;由于卷积计算量大致随像素数量增长,将输入的宽度和高度减半,会使计算量降至约四分之一,但小目标准确率可能会有所下降。
  • 模型量化: 使用 FP16 或 INT8 而非 FP32 存储权重和激活值,可减少内存流量并使用更快的运算单元。INT8 通常需要一组校准图像,以尽量减小准确率损失。
  • 推理引擎: 针对某类硬件构建的运行时会融合层,并为设备选择经过调优的内核,例如用于 NVIDIA GPU 的 TensorRT,或用于 Apple 设备的 Core ML。
  • 边缘 AI: 在摄像头或嵌入式模块上运行模型,可以免去云端调用的网络往返延迟;在连接速度较慢时,这种延迟可能超过整个帧时间预算。

运行时和硬件会让延迟相差十倍以上:nano YOLO26 模型在搭配 ONNX的CPU上处理一张 640 像素图像需要 38.9 毫秒,而在搭载 TensorRT 的 NVIDIA T4 GPU上仅需 1.7 毫秒。Ultralytics 的导出模式可将训练好的 YOLO26 模型转换为 TensorRT、OpenVINO、LiteRT等格式;其 quantize=16 或 quantize=8 参数可为目标设备生成 FP16 或 INT8 权重。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来