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

从机场航站楼、火车站到购物中心,每分钟都在产生海量数据。随着人工智能的普及,这些数据大多已被分析和拆解。但有时,这些AI模型的结果很难让你一目了然地识别模式或理解趋势。这就是数据可视化发挥作用的地方——它能将复杂的输出转化为清晰、易于消化的见解。
这在计算机视觉应用程序中尤为重要。计算机视觉是人工智能 (AI) 的一个分支,旨在帮助机器解释和理解周围世界的视觉信息(例如图像和视频)。虽然像 Ultralytics YOLO11 这样的视觉AI模型可以帮助分析此类视觉数据以获取信息,但数据可视化有助于将这些信息以易于理解的格式呈现出来。
简而言之,数据可视化通过使用有意义的分析图表,弥合了原始数据与真正理解之间的差距。在当今数据驱动的世界中,这一点至关重要,因为机器仅仅执行任务是不够的——我们还需要它们讲述一个故事。
正是这种对叙事的需求,使得数据可视化正在兴起,该市场预计到2030年将达到$18.36 billion。此前,我们探讨了计算机视觉如何提供有价值的业务洞察。今天,我们将更进一步,逐步演示如何使用 Ultralytics 程序包为计算机视觉应用程序生成清晰、富有洞察力的分析图表。让我们开始吧!

图 1。基于 YOLO11 输出进行数据可视化的示例。
Link to this section计算机视觉应用程序中数据可视化的概述#
计算机视觉应用程序中的数据可视化,涉及将计算机视觉任务(如目标检测和跟踪)的结果转化为易于理解的图表或仪表板。当处理大量视频素材时,这些视觉效果有助于识别模式和趋势。
例如,与其手动查看数小时的监控视频,不如用一个简单的折线图来展示随时间推移检测到的汽车或人数,这可以快速凸显高峰时段或异常安静的时期。
以下是数据可视化为何有用的几个关键原因:
-
简化复杂数据: 成千上万个目标检测结果可能会令人不知所措,但柱状图或饼图等可视化工具可以让你更容易地看到全局,例如哪些物体出现得最频繁。
-
揭示趋势: 折线图和柱状图有助于识别随时间变化的模式,例如人流量在何时何地趋于增加。
-
节省时间: 图表可以快速突出重要细节,例如车辆活动的突然激增或限制区域内异常目标的出现,而无需逐帧查看视频。
-
改善沟通: 可视化效果使与非技术人员分享见解变得更容易,有助于每个人更清晰地理解结果。
Link to this section不同类型的数据可视化#
不同类型的分析图表可以将计算机视觉结果转化为清晰、易于理解的视觉效果。假设你正在开发一个计算机视觉应用程序,用于检测监控录像中的人和车辆。在这种情况下,折线图非常适合展示检测数量随时间的变化,比如跟踪全天的人流量高峰。
同样,当你想要比较检测到的不同目标类型的数量时(例如查看视频中出现的汽车、自行车或行人哪个更多),柱状图很有帮助。另一方面,饼图则显示了每种目标类型占总检测量的百分比。每个图表都有其特定的用途,有助于使复杂的计算机视觉数据更易于解释和分享。

图 2。分析图表示例。
Link to this section生成分析图表以获取计算机视觉见解#
既然我们已经探索了什么是数据可视化以及为什么不同类型的分析图表很重要,那么让我们更深入地了解如何使用 Ultralytics Analytics 解决方案 来可视化计算机视觉模型的预测结果。在进行分步操作之前,让我们先看看用于训练和使用 Ultralytics 程序包以及像 YOLO11 这样模型的工具和设置选项。
Ultralytics Python 程序包可以轻松训练模型、检测目标、运行预测并可视化结果。要开始使用它,你需要一个编码环境。这里有三个简单的选项:
-
命令行界面 (CLI): 这是一个基础的、纯文本工具,你可以在其中输入命令来运行代码。它没有可视化界面,你需要通过在终端或命令提示符中输入指令来与其交互。
-
Jupyter Notebooks: 这是一个交互式编码环境,你可以在其中一次编写、运行和测试一小段代码(称为“单元格”)。它直接在每个单元格下方显示结果,从而易于逐步理解正在发生的事情。它对于学习和实验特别有用。
-
Google Colab:这是一个免费的、基于云的 Jupyter Notebooks 版本,可在你的网络浏览器中运行。它不需要你在计算机上进行任何设置,并为你提供免费的 GPU 以实现更快的处理速度。
这些工具非常适合快速入门,但用户也可以将 Ultralytics 集成到集成开发环境 (IDE)(如 Visual Studio Code (VS Code))或生产管道中。如需更多选项,请探索官方的 Ultralytics 文档。
Link to this section第 1 步:设置环境#
一旦选择了首选环境,下一步就是将其设置为运行预测并可视化结果。你可以根据你最熟悉的工具,使用上述提到的任何环境。
如果你在 Google Colab 中工作,请记住它默认使用 CPU,这可能会降低性能。为了加快速度,请通过进入“运行时”菜单,选择“更改运行时类型”,并将硬件加速器设置为 GPU(理想情况下是 T4)来切换到 GPU。
要准备好你的环境,你需要使用下面提到的命令来安装 Ultralytics Python 程序包。在像 Colab 或 Jupyter 这样的基于 Notebook 的工具中,请务必在命令前加上感叹号 (!)。
pip install ultralyticsLink to this section第 2 步:下载视频文件#
接下来,我们需要一个视频来处理。你可以从 Pexels 等免费素材网站轻松下载一个。确保选择一个包含 YOLO11 可以检测到的目标的视频。由于该模型是在 COCO 数据集 上预训练的,因此它可以识别常见的物体,例如人、汽车和自行车。
在本教程中,我们将使用一段忙碌机场航站楼内行李处理的视频。你可以使用相同的视频,或者选择一个适合你项目的不同视频。

图 3. 输入视频的一帧,显示机场航站楼内的行李处理情况。
Link to this section第 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"Link to this section第 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),
)Link to this section第 5 步:设置 Ultralytics Analytics 解决方案#
现在,我们将设置 Ultralytics Analytics 解决方案以从视频中生成图表。你可以选择数据的显示方式,例如折线图、饼图、面积图或柱状图,以及使用哪个 YOLO 模型。在此示例中,我们将使用轻量级的 "yolo11n.pt" 模型,并将结果显示为面积图。
analytics = solutions.Analytics(
show=True,
analytics_type="area",
model="yolo11n.pt",
)Link to this section第 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()Link to this section第 7 步:综合所有步骤#
最后,让我们把所有步骤整合在一起。只需额外编写几行代码,我们就可以生成两个输出视频:一个显示带有边界框和标签的 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. 可视化为面积图的 YOLO11 预测。
Link to this section在现实世界的计算机视觉应用程序中使用图表#
以下是一些数据可视化具有重大影响的现实计算机视觉应用程序:
-
医疗保健:计算机视觉系统可以实时监控患者活动、工作人员移动和设备使用情况。这会产生大量视觉数据,当进行可视化时,可以揭示模式——例如患者高峰占用时间或响应延迟。
-
零售和电子商务: 视觉 AI 可用于跟踪客户移动、在货架前的停留时间以及产品交互。柱状图或饼图等视觉分析可以突出显示哪些商店区域或商品最受关注,从而帮助零售商优化产品摆放并提高转化率。
-
制造业: 配备计算机视觉模型的摄像头可以监控装配线的缺陷、安全违规或设备状态。数据可视化可以显示最常见缺陷类型的趋势,或突出显示错误率最高的时间段,从而实现更快的决策制定和预防性维护。
Link to this section关键要点#
使用 Ultralytics 程序包,你可以轻松地将视频素材转化为清晰、富有洞察力的图表,揭示正在发生的事情,例如跟踪随时间推移出现的人数或目标数量。与其手动查看数小时的视频,你不如生成视觉摘要来突出关键模式和趋势,从而更轻松地迅速采取行动。无论是在医院、零售店还是制造工厂,这些图表都能将复杂的 AI 输出转化为任何人都能理解和使用的见解。
想了解更多关于 AI 的信息吗?探索我们的 GitHub 仓库,与 我们的社区 建立联系,并查看 我们的许可选项 以开启你的计算机视觉项目。在我们的解决方案页面上了解更多关于 制造业 AI 和 物流业计算机视觉 等创新技术的信息。






