利用可视化增强计算机视觉应用
了解如何使用 Ultralytics Python 软件包,将计算机视觉应用中的数据转换为易于理解的图表,从而获得更深入的洞察。

每分钟都有海量数据产生,从机场航站楼、火车站到购物中心,处处如此。随着 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.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
# Load model and video
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"
# Get properties
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)
# Writers for prediction and analytics videos
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 setup
analytics = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')
# Process frames
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和物流行业中的计算机视觉等创新应用。









