使用 Ultralytics YOLO26 进行分析

介绍

本指南全面概述了三种基础的 数据可视化 类型:折线图、条形图和饼图。每个部分都包含使用 Python 创建这些可视化的分步说明和代码片段。



Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

视觉示例

折线图条形图饼图
用于目标跟踪的 YOLO 分析折线图用于检测计数的 YOLO 分析条形图用于类别分布的 YOLO 分析饼图

为什么图表很重要

  • 折线图非常适合跟踪短期和长期内的变化,以及比较多个组在同一时期内的变化。
  • 另一方面,条形图适用于比较不同类别之间的数量,并显示类别与其数值之间的关系。
  • 最后,饼图能有效展示各类别之间的比例并说明整体的组成部分。
使用 Ultralytics YOLO 进行分析
yolo solutions analytics show=True

# Pass the source
yolo solutions analytics source="path/to/video.mp4"

# Generate the pie chart
yolo solutions analytics analytics_type="pie" show=True

# Generate the bar plots
yolo solutions analytics analytics_type="bar" show=True

# Generate the area plots
yolo solutions analytics analytics_type="area" show=True

Analytics 参数

下表列出了 Analytics 参数:

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
analytics_typestr'line'图表类型,例如 line(折线图)、bar(柱状图)、area(面积图)或 pie(饼图)。

You can also leverage different track arguments in the Analytics solution.

参数类型默认值描述
trackerstr'botsort.yaml'指定使用的跟踪算法,例如 bytetrack.yamlbotsort.yaml
conffloat0.1设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能会包含误报。
ioufloat0.7设置过滤重叠检测的 Intersection over Union (IoU) 阈值。
classeslistNone按类别索引过滤结果。例如,classes=[0, 2, 3] 将仅跟踪指定的类别。
verboseboolTrue控制跟踪结果的显示,提供跟踪对象的视觉输出。
devicestrNone指定推理设备(例如 cpucuda:00)。允许用户选择 CPU、特定的 GPU 或其他计算设备来执行模型。

此外,还支持以下可视化参数:

参数类型默认值描述
showboolFalse如果设为 True,则在一个窗口中显示标注后的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。
line_widthint or NoneNone指定边界框的线宽。如果为 None,线宽将根据图像大小自动调整。提供视觉自定义以提高清晰度。

总结

了解何时以及如何使用不同类型的可视化对于有效的数据分析至关重要。折线图、条形图和饼图是基础工具,可以帮助你更清晰、有效地传达数据背后的故事。Ultralytics YOLO26 Analytics 解决方案提供了一种简化的方式,可以从你的 目标检测 和跟踪结果中生成这些可视化,从而更容易从你的视觉数据中提取有意义的见解。

常见问题 (FAQ)

如何使用 Ultralytics YOLO26 Analytics 创建折线图?

要使用 Ultralytics YOLO26 Analytics 创建折线图,请按照以下步骤操作:

  1. 加载 YOLO26 模型并打开你的视频文件。
  2. 初始化 Analytics 类,并将类型设置为 "line"。
  3. 遍历视频帧,用相关数据(例如每帧的目标计数)更新折线图。
  4. 保存显示折线图的输出视频。

示例:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

有关配置 Analytics 类的更多详细信息,请访问 使用 Ultralytics YOLO26 进行分析 部分。

使用 Ultralytics YOLO26 创建条形图有什么好处?

使用 Ultralytics YOLO26 创建条形图有几个好处:

  1. 实时数据可视化:将 目标检测 结果无缝集成到条形图中以进行动态更新。
  2. 易于使用:简单的 API 和函数使实现和可视化数据变得直接。
  3. 自定义:自定义标题、标签、颜色等,以满足你的特定要求。
  4. 效率:高效处理大量数据并在视频处理过程中实时更新图表。

使用以下示例生成条形图:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="bar",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

要了解更多信息,请访问指南中的 条形图 部分。

为什么我应该使用 Ultralytics YOLO26 在数据可视化项目中创建饼图?

Ultralytics YOLO26 是创建饼图的绝佳选择,因为:

  1. 与目标检测集成:直接将目标检测结果集成到饼图中,以获取即时见解。
  2. 用户友好的 API:设置简单,只需少量代码即可使用。
  3. 可自定义:针对颜色、标签等有多种自定义选项。
  4. 实时更新:实时处理和可视化数据,这非常适合视频分析项目。

这是一个快速示例:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="pie",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

有关更多信息,请参阅指南中的 饼图 部分。

Ultralytics YOLO26 可以用于跟踪目标并动态更新可视化吗?

是的,Ultralytics YOLO26 可以用于跟踪目标并动态更新可视化。它支持实时跟踪多个目标,并可以根据跟踪目标的数据更新各种可视化效果,如折线图、条形图和饼图。

跟踪和更新折线图的示例:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

要了解完整功能,请参阅 跟踪 部分。

是什么让 Ultralytics YOLO26 不同于 OpenCVTensorFlow 等其他目标检测解决方案?

Ultralytics YOLO26 在多个方面区别于 OpenCV 和 TensorFlow 等其他目标检测解决方案:

  1. 最先进的 准确性:YOLO26 在目标检测、分割和分类任务中提供了卓越的准确性。
  2. 易于使用:用户友好的 API 允许快速实现和集成,无需大量编码。
  3. 实时性能:针对高速推理进行了优化,适用于实时应用。
  4. 多样化的应用:支持多种任务,包括多目标跟踪、自定义模型训练以及导出到 ONNX、TensorRT 和 CoreML 等不同格式。
  5. 全面的文档:丰富的 文档博客资源,引导用户完成每一步。

要进行更详细的比较和查看用例,请探索我们的 Ultralytics 博客

评论