分析使用Ultralytics YOLO11
导言
本指南全面介绍了三种基本的数据可视化类型:折线图、条形图和饼图。每一部分都包含如何使用Python 创建这些可视化数据的分步说明和代码片段。
观看: 如何使用Ultralytics | 线条图、条形图、面积图和饼图生成分析图表
视觉样本
折线图 | 条形图 | 饼图 |
---|---|---|
![]() |
![]() |
![]() |
图表为何重要
- 折线图非常适合用于跟踪长短期的变化,以及比较同一时期多个组别的变化。
- 条形图则适合比较不同类别的数量,并显示类别与其数值之间的关系。
- 最后,饼图可以有效地说明不同类别之间的比例,并显示整体的各个部分。
使用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
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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), # this is fixed
)
# Initialize analytics object
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], # display analytics for specific detection classes
)
# Process video
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
# print(results) # access the output
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows() # destroy all opened windows
Analytics
论据
下面的表格概述了分析论据:
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO 模型文件的路径。 |
analytics_type |
str |
line |
图形类型,即 line , bar , area 或 pie . |
您还可以利用不同的 track
中的参数 Analytics
解决方案
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
指定要使用的跟踪算法,例如 bytetrack.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
设置检测的置信度阈值;数值越低,跟踪的物体越多,但可能会出现误报。 |
iou |
float |
0.5 |
设置交叉重叠 (IoU) 阈值,用于过滤重叠检测。 |
classes |
list |
None |
按类别索引筛选结果。例如 classes=[0, 2, 3] 只跟踪指定的类别。 |
verbose |
bool |
True |
控制跟踪结果的显示,提供被跟踪物体的可视化输出。 |
device |
str |
None |
指定用于推理的设备(例如:......)、 cpu , cuda:0 或 0 ).允许用户选择CPU 、特定GPU 或其他计算设备执行模型。 |
此外,还支持以下可视化参数:
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
show |
bool |
False |
如果 True 在一个窗口中显示注释的图像或视频。有助于在开发或测试过程中提供即时视觉反馈。 |
line_width |
None or int |
None |
指定边界框的线宽。如果 None 根据图像大小自动调整线宽。提供可视化定制,使图像更加清晰。 |
结论
了解何时以及如何使用不同类型的可视化数据对于有效的数据分析至关重要。折线图、柱状图和饼图是最基本的工具,可以帮助您更清晰、更有效地传达数据信息。Ultralytics YOLO11 Ultralytics 解决方案提供了一种简化的方法,可以从对象检测和跟踪结果中生成这些可视化数据,从而更轻松地从可视化数据中提取有意义的见解。
常见问题
如何使用Ultralytics YOLO11 Analytics 创建折线图?
要使用Ultralytics YOLO11 Analytics 创建折线图,请按照以下步骤操作:
- 加载YOLO11 模型并打开视频文件。
- 初始化
Analytics
类,类型设置为 "行"。 - 迭代视频帧,用相关数据更新折线图,如每帧的对象计数。
- 保存显示折线图的输出视频。
例如
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 YOLO11 节。
使用Ultralytics YOLO11 绘制条形图有什么好处?
使用Ultralytics YOLO11 创建条形图有几个好处:
- 实时数据可视化:将目标检测结果无缝集成到条形图中,实现动态更新。
- 易用性:简单的应用程序接口和功能使其能够直接实施和可视化数据。
- 自定义:自定义标题、标签、颜色等,以满足您的特定要求。
- 效率:有效处理大量数据,并在视频处理过程中实时更新绘图。
使用下面的示例生成条形图:
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 YOLO11 创建饼图?
Ultralytics YOLO11 是创建饼图的最佳选择,因为
- 与对象检测集成:直接将对象检测结果整合到饼图中,以便立即获得洞察力。
- 用户友好的应用程序接口:只需最少的代码即可轻松设置和使用。
- 可定制:颜色、标签等多种定制选项。
- 实时更新:实时处理和可视化数据,是视频分析项目的理想选择。
这里有一个简单的例子:
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 YOLO11 可用于跟踪物体和动态更新可视化效果吗?
是的,Ultralytics YOLO11 可用于跟踪对象并动态更新可视化效果。它支持实时跟踪多个对象,并能根据跟踪对象的数据更新各种可视化效果,如折线图、条形图和饼图。
跟踪和更新折线图的示例:
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 YOLO11 与OpenCV等其他对象检测解决方案有何不同? TensorFlow?
Ultralytics YOLO11 从 OpenCV 和TensorFlow 等其他对象检测解决方案中脱颖而出,原因是多方面的:
- 最先进的准确性:YOLO11 在物体检测、分割和分类任务中提供了卓越的准确性。
- 易于使用:用户友好的应用程序接口允许快速实施和集成,无需大量编码。
- 实时性能:针对高速推理进行了优化,适合实时应用。
- 应用多样:支持多种任务,包括多目标跟踪、自定义模型训练以及导出为不同格式,如ONNX 、TensorRT 和CoreML 。
- 全面的文档:广泛的文档和博客资源可指导用户完成每个步骤。
有关更详细的比较和使用案例,请浏览我们的Ultralytics 博客。