利用可视化增强计算机视觉应用
了解如何使用 Ultralytics Python 包,将计算机视觉应用产生的数据转换为易于理解的图表,从而获得更有价值的洞察。
Nuvola Ladi7 分钟阅读
每时每刻都有海量数据产生,场所遍及机场航站楼、火车站和购物中心。随着 AI 的应用日益广泛,这些数据中有很大一部分正在被分析和拆解。但有时,AI 模型的输出会让人难以一眼看出模式或理解趋势。这时,数据可视化就能派上用场——它将复杂的输出转化为清晰易懂的见解。
在计算机视觉应用中,这一点尤其明显。计算机视觉是人工智能 (AI)的一个分支,它能帮助机器解读并理解周围世界中的视觉信息,例如图像和视频。像 Ultralytics YOLO11 这样的视觉 AI 模型可以分析这类视觉数据并提取信息,而数据可视化则能将这些信息转化为易于理解的形式。
简单来说,数据可视化通过有意义的分析图表,弥合原始数据与真正理解之间的差距。这很重要,因为机器光完成任务还不够——我们还需要它们讲述数据背后的故事。
正是这种讲述故事的需求推动了数据可视化的发展,预计到 2030 年,该市场规模将达到183.6 亿美元。此前,我们探讨过计算机视觉如何提供有价值的商业洞见。今天,我们将更进一步,介绍如何使用 Ultralytics 软件包为计算机视觉应用生成清晰且有洞见的分析图表。

图 1。基于 YOLO11 输出的数据可视化示例。
计算机视觉应用中的数据可视化概述#
计算机视觉应用中的数据可视化,是将计算机视觉任务(例如目标检测和跟踪)的结果转换成易于理解的图表或仪表板。这些可视化内容有助于发现模式和趋势,尤其是在处理大量视频素材时。
例如,与其手动查看数小时的监控视频,不如用一张简单的折线图展示一段时间内检测到的汽车或行人数量,从而快速发现高峰时段或异常冷清的时段。
以下是数据可视化的一些主要用途:
- 简化复杂数据:成千上万条目标检测结果可能让人应接不暇,但条形图或饼图等可视化图表能让你更轻松地掌握全局,例如哪些物体出现得最频繁。
- 揭示趋势:折线图和条形图有助于发现随时间变化的规律,例如人流通常何时、何地增多。
- 节省时间:无需逐帧查看视频,图表就能快速突出重要信息,例如车辆活动突然激增,或禁区内出现异常物体。
- 改善沟通:可视化内容便于向非技术受众分享洞见,帮助所有人更清楚地理解结果。
不同类型的数据可视化#
不同类型的分析图表可以将计算机视觉结果转化为清晰易懂的可视化内容。假设你正在开发一个计算机视觉应用,用于检测监控视频中的行人和车辆。在这种情况下,折线图非常适合展示检测数量如何随时间变化,例如跟踪一天中人流量的高峰。
同样,如果你想比较检测到的不同类型物体的数量,例如查看视频中汽车、自行车或行人哪种更多,条形图就很有帮助。另一方面,饼图可以显示每种物体占检测总数的比例。每种图表都有各自的用途,能让复杂的计算机视觉数据更易于解读和分享。

图 2。分析图表示例。
生成分析图表,获取计算机视觉洞见#
了解了什么是数据可视化,以及不同类型的分析图表为何重要之后,接下来我们来看看如何使用 Ultralytics Analytics 解决方案,将计算机视觉模型的预测结果可视化。在介绍具体步骤之前,我们先来了解训练和使用 Ultralytics 软件包以及 YOLO11 等模型所需的工具和环境选项。
Ultralytics Python 软件包让模型训练、目标检测、运行预测和结果可视化变得轻松。要开始使用,你需要一个编码环境。以下是三个简单的选项:
- 命令行界面 (CLI):这是一种基础的纯文本工具,你可以在其中输入命令来运行代码。它没有图形界面,你需要在终端或命令提示符中输入指令与它交互。
- Jupyter Notebooks:这是一个交互式编码环境,你可以在其中一次编写、运行和测试一小段代码(称为“单元格”)。每个单元格下方都会直接显示结果,让你轻松逐步了解发生了什么。它特别适合学习和实验。
- Google Colab:这是一个免费的云端版 Jupyter Notebooks,可在网页浏览器中运行。它无需在电脑上进行任何设置,还能让你使用免费的 GPU 来加快处理速度。
这些工具非常适合快速入门,但你也可以将 Ultralytics 集成到 Visual Studio Code (VS Code) 等集成开发环境 (IDE) 或生产流水线中。如需了解更多选项,请查阅官方 Ultralytics 文档。
步骤 1:配置环境#
选好你偏好的环境后,下一步就是进行设置,以便运行预测并将结果可视化。你可以根据自己的使用习惯,选择上面提到的任何环境。
如果你使用 Google Colab,请注意它默认使用 CPU,这可能会降低运行速度。要提升速度,请前往“Runtime”菜单,选择“Change runtime type”,然后将硬件加速器设为 GPU(最好选择 T4)。
要准备好你的环境,你需要使用下面提到的命令安装 Ultralytics Python 软件包。在 Colab 或 Jupyter 等基于笔记本的工具中,请务必在命令前加上感叹号 (!) 。
pip install ultralytics步骤 2:下载视频文件#
接下来,我们需要一个视频来进行操作。你可以从 Pexels 等免费素材网站轻松下载视频。请确保视频中包含 Ultralytics YOLO11 可以检测的物体。由于模型是在 COCO 数据集上预训练的,因此可以识别行人、汽车和自行车等常见物体。
本教程将使用一段繁忙机场航站楼内行李装卸的视频。你可以使用同一段视频,也可以选择其他适合你项目的视频。

图 3. 输入视频中的一帧,展示机场航站楼内的行李装卸作业。
步骤 3:导入软件包#
接下来,我们可以导入所需的库并加载输入视频。
首先导入 OpenCV (cv2),这是一个广泛用于计算机视觉图像和视频处理的库。我们还会导入 Ultralytics 库,以便从视频中运行目标检测并生成分析结果。
然后,通过指定视频文件的路径尝试打开视频。请务必将 "path/to/video.mp4" 替换为你下载的视频文件的实际位置。
此外,下面的代码片段包含一个简单的检查,用于确保视频已正确加载。如果路径有误或文件已损坏,程序就会停止运行并显示错误消息:"Error reading video file."
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"步骤 4:准备视频写入器#
然后,我们将设置一个视频写入器来保存输出。运行分析时,这部分代码会创建一个新视频文件,记录根据原始视频每一帧生成的更新图表。
在下面的代码片段中,我们首先提取输入视频的关键属性——宽度、高度和每秒帧数 (fps)。这些值直接从视频中读取,并转换为整数,以确保格式适用于写入输出文件。
接下来,我们使用 cv2.VideoWriter 函数创建一个名为 "analytics_output.avi" 的新视频文件(你可以按需重命名)。视频采用 MJPG 格式保存,这是一种常见的视频压缩方法。无论原始视频的尺寸如何,输出分辨率都设为 1280×720 像素。
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
"analytics_output.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720),
)步骤 5:设置 Ultralytics Analytics 解决方案#
现在,我们来设置 Ultralytics Analytics 解决方案,以便从视频生成图表。你可以选择数据的显示方式,例如折线图、饼图、面积图或柱状图,也可以选择要使用的 YOLO 模型。在此示例中,我们将使用轻量级的 YOLO11n 模型(“yolo11n.pt”),并以面积图展示结果。
analytics = solutions.Analytics(
show=True,
analytics_type="area",
model="yolo11n.pt",
)步骤 6:处理输入视频#
代码的最后一部分会运行一个循环,逐帧处理视频。每一帧都会传递给分析工具,该工具会实时更新图表。然后,更新后的图表会写入输出视频。如果无法读取某一帧,循环就会停止。处理完所有帧后,视频会被保存,所有打开的窗口也会关闭。
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count)
out.write(results.plot_im)
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()步骤 7:整合所有内容#
最后,我们来整合所有内容。只需再添加几行代码,就能生成两个输出视频:一个展示带有边界框和标签的 Ultralytics YOLO11 目标检测结果,另一个展示实时分析图表。
为此,我们将设置两个 VideoWriter 实例——一个用于保存预测视频,另一个用于保存分析视频。这个版本的代码同时包含目标跟踪和图表生成,因此你可以在查看检测结果的同时,了解可视化洞见。
以下是完整代码,以及预测结果和分析输出的示例。
import cv2
from ultralytics import YOLO, solutions
# 加载模型和视频
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"
# 获取属性
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)
# 用于预测视频和分析视频的写入器
out_pred = cv2.VideoWriter('output_predictions.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
out_ana = cv2.VideoWriter('output_analytics.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, analytics_res)
# 分析设置
analytics = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')
# 处理帧
frame_count = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
frame_count += 1
pred_frame = model.track(frame, persist=True)[0].plot()
out_pred.write(pred_frame)
resized = cv2.resize(pred_frame, analytics_res)
out_ana.write(analytics(resized, frame_count).plot_im)
cap.release(), out_pred.release(), out_ana.release(), cv2.destroyAllWindows()如果上面的代码成功运行,就会生成两个输出视频。文件“output_predictions.avi”会显示带有边界框和标签的目标检测结果,而“output_analytics.avi”会显示根据检测结果生成的实时分析图表。

图 4。“output_predictions.avi”文件中的一帧。
以下是根据预测结果生成的分析输出视频中的一帧。使用面积图,我们可以了解手提箱数量随时间的波动情况,例如第 268 帧附近出现的峰值,这表明视频该部分可能有手提箱在移动或发生相关活动。

图 5。以面积图可视化的 Ultralytics YOLO11 预测结果。
在真实世界的计算机视觉应用中使用图表#
以下是一些数据可视化能产生重要影响的真实计算机视觉应用:
- 医疗保健:计算机视觉系统可以实时监测患者活动、员工动向和设备使用情况。这会产生大量视觉数据,可视化后便能揭示各种模式,例如患者入住率高峰时段或响应延迟。
- 零售与电子商务:视觉 AI 可用于跟踪顾客移动情况、顾客在货架前的停留时间以及顾客与商品的互动。条形图或饼图等可视化分析图表可以突出显示哪些门店区域或商品最受关注,帮助零售商优化商品陈列并提高转化率。
- 制造业:配备计算机视觉模型的摄像头可以监控装配线上的缺陷、安全违规或设备状态。数据可视化可以展示最常见缺陷类型的趋势,或突出错误率最高的时间段,从而加快决策并实现预防性维护。
要点#
借助 Ultralytics 软件包,你可以轻松地将视频素材转化为清晰且富有洞见的图表,揭示实际情况,例如跟踪一段时间内出现的人或物体数量。无需手动查看数小时的视频,你就能生成可视化摘要,突出关键模式和趋势,从而更轻松地迅速采取行动。无论是在医院、零售店还是制造工厂,这些图表都能将复杂的 AI 输出转化为人人都能理解和使用的洞见。
想进一步了解 AI?探索我们的 GitHub 代码库,加入我们的社区,并查看我们的许可选项,为你的计算机视觉项目快速起步。你还可以在我们的解决方案页面了解 AI 在制造业中的创新应用和计算机视觉在物流中的应用。
作者
评论
提出问题、分享你的结果,或帮助其他人。










