跳至内容

分析使用Ultralytics YOLO11

导言

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



观看: 如何使用Ultralytics | 线条图、条形图、面积图和饼图生成分析图表

视觉样本

折线图 条形图 饼图
折线图 条形图 饼图

图表为何重要

  • 折线图非常适合用于跟踪长短期的变化,以及比较同一时期多个组别的变化。
  • 条形图则适合比较不同类别的数量,并显示类别与其数值之间的关系。
  • 最后,饼图可以有效地说明不同类别之间的比例,并显示整体的各个部分。

分析实例

 yolo solutions analytics show=True

# pass the source
yolo solutions analytics source="path/to/video/file.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
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.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))

# Video writer
out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1920, 1080),  # This is fixed
)

# Init analytics
analytics = solutions.Analytics(
    show=True,  # Display the output
    analytics_type="line",  # Pass the analytics type, could be "pie", "bar" or "area".
    model="yolo11n.pt",  # Path to the YOLO11 model file
    # classes=[0, 2],  # If you want to count specific classes i.e person and car with COCO pretrained model.
)

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

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

论据 Analytics

下面的表格显示了 Analytics 争论:

名称 类型 默认值 说明
analytics_type str line 图表类型,如 "折线图"、"柱状图"、"面积图"、"饼图"
model str None Ultralytics YOLO 模型文件的路径
line_width int 2 边界框的线条粗细
show bool False 用于控制是否显示视频流的标志。

论据 model.track

论据 类型 默认值 说明
source str None 指定图片或视频的源目录。支持文件路径和 URL。
persist bool False 可在帧间持续跟踪对象,在视频序列中保持 ID。
tracker str botsort.yaml 指定要使用的跟踪算法,例如 bytetrack.yamlbotsort.yaml.
conf float 0.3 设置检测的置信度阈值;数值越低,跟踪的物体越多,但可能会出现误报。
iou float 0.5 设置交叉重叠 (IoU) 阈值,用于过滤重叠检测。
classes list None 按类别索引筛选结果。例如 classes=[0, 2, 3] 只跟踪指定的类别。
verbose bool True 控制跟踪结果的显示,提供被跟踪物体的可视化输出。

结论

了解何时以及如何使用不同类型的可视化数据对于有效的数据分析至关重要。折线图、柱状图和饼图是基本工具,可以帮助您更清晰、更有效地传达数据信息。

常见问题

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

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

  1. 加载YOLO11 模型并打开视频文件。
  2. 初始化 Analytics 类,类型设置为 "行"。
  3. 迭代视频帧,用相关数据更新折线图,如每帧的对象计数。
  4. 保存显示折线图的输出视频。

例如

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

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

有关配置 Analytics 课程,请访问 使用Ultralytics YOLO11 进行分析 📊 节。

使用Ultralytics YOLO11 绘制条形图有什么好处?

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

  1. 实时数据可视化:将目标检测结果无缝集成到条形图中,实现动态更新。
  2. 易用性:简单的应用程序接口和功能使其能够直接实施和可视化数据。
  3. 自定义:自定义标题、标签、颜色等,以满足您的特定要求。
  4. 效率:有效处理大量数据,并在视频处理过程中实时更新绘图。

使用下面的示例生成条形图:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

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

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

为什么要在数据可视化项目中使用Ultralytics YOLO11 创建饼图?

Ultralytics YOLO11 是创建饼图的最佳选择,因为

  1. 与对象检测集成:直接将对象检测结果整合到饼图中,以便立即获得洞察力。
  2. 用户友好的应用程序接口:只需最少的代码即可轻松设置和使用。
  3. 可定制:颜色、标签等多种定制选项。
  4. 实时更新:实时处理和可视化数据,是视频分析项目的理想选择。

这里有一个简单的例子:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

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

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

Ultralytics YOLO11 可用于跟踪物体和动态更新可视化效果吗?

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

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

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

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

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

Ultralytics YOLO11 与OpenCV等其他对象检测解决方案有何不同? TensorFlow?

Ultralytics YOLO11 从 OpenCV 和TensorFlow 等其他对象检测解决方案中脱颖而出,原因是多方面的:

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

有关更详细的比较和使用案例,请浏览我们的Ultralytics 博客

📅创建于 6 个月前 ✏️已更新 12 天前

评论