使用 Ultralytics YOLO11 进行速度估计 🚀
什么是速度估计?
速度估计是计算给定环境中物体移动速率的过程,常用于计算机视觉应用。使用 Ultralytics YOLO11,现在可以结合物体追踪以及距离和时间数据来计算物体的速度,这对于交通监控和监视等任务至关重要。速度估计的准确性直接影响各种应用的效率和可靠性,使其成为智能系统和实时决策过程发展中的关键组成部分。
观看: 使用 Ultralytics YOLO11 进行速度估计
查看我们的博客
要深入了解速度估计,请查看我们的博客文章:Ultralytics YOLO11 在计算机视觉项目中用于速度估计
速度估计的优势
- 高效的交通控制: 准确的速度估计有助于管理交通流量,提高安全性并减少道路拥堵。
- 精确的自主导航: 在像自动驾驶汽车这样的自主系统中,可靠的速度估计可确保安全准确的车辆导航。
- 增强的监控安全性: 监控分析中的速度估计有助于识别异常行为或潜在威胁,从而提高安全措施的有效性。
实际应用
运输 | 运输 |
---|---|
![]() |
![]() |
使用 Ultralytics YOLO11 在道路上进行速度估计 | 使用 Ultralytics YOLO11 在桥梁上进行速度估计 |
速度是一个估计值
速度将是一个估计值,可能不完全准确。此外,估计值可能因相机规格和相关因素而异。
使用 Ultralytics YOLO 进行速度估计
# Run a speed example
yolo solutions speed show=True
# Pass a source video
yolo solutions speed source="path/to/video.mp4"
# Adjust meter per pixel value based on camera configuration
yolo solutions speed meter_per_pixel=0.05
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))
video_writer = cv2.VideoWriter("speed_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize speed estimation object
speedestimator = solutions.SpeedEstimator(
show=True, # display the output
model="yolo11n.pt", # path to the YOLO11 model file.
fps=fps, # adjust speed based on frame per second
# max_speed=120, # cap speed to a max value (km/h) to avoid outliers
# max_hist=5, # minimum frames object tracked before computing speed
# meter_per_pixel=0.05, # highly depends on the camera configuration
# classes=[0, 2], # estimate speed of specific classes.
# line_width=2, # adjust the line width for bounding boxes
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = speedestimator(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
SpeedEstimator
参数
这是一个包含以下内容的表格 SpeedEstimator
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO 模型文件的路径。 |
fps |
float |
30.0 |
用于速度计算的每秒帧数。 |
max_hist |
int |
5 |
用于速度/方向计算的每个对象要跟踪的最大历史点数。 |
meter_per_pixel |
float |
0.05 |
用于将像素距离转换为真实世界单位的比例因子。 |
max_speed |
int |
120 |
视觉叠加中的最大速度限制(用于警报)。 |
字段 SpeedEstimator
解决方案允许使用 track
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
指定要使用的跟踪算法,例如: bytetrack.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能包含误报。 |
iou |
float |
0.5 |
设置用于过滤重叠检测的 Intersection over Union (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 ,则线条宽度会根据图像大小自动调整。 提供视觉自定义以提高清晰度。 |
show_conf |
bool |
True |
在标签旁边显示每个检测的置信度分数。 可以深入了解模型对每次检测的确定性。 |
show_labels |
bool |
True |
在可视化输出中显示每个检测的标签。 能够立即理解检测到的对象。 |
常见问题
如何使用 Ultralytics YOLO11 估计目标速度?
使用 Ultralytics YOLO11 估计物体速度涉及结合物体检测和跟踪技术。首先,您需要使用 YOLO11 模型检测每一帧中的物体。然后,跨帧跟踪这些物体,以计算它们随时间的移动。最后,使用物体在帧之间移动的距离和帧速率来估计其速度。
示例:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
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 = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize SpeedEstimator
speedestimator = solutions.SpeedEstimator(
model="yolo11n.pt",
show=True,
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = speedestimator(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
有关更多详细信息,请参阅我们的官方博客文章。
在交通管理中使用 Ultralytics YOLO11 进行速度估计有哪些好处?
将 Ultralytics YOLO11 用于速度估计在交通管理方面具有显著优势:
- 增强安全性:准确估计车辆速度以检测超速并提高道路安全性。
- 实时监控:受益于 YOLO11 的实时物体检测能力,以有效地监控交通流量和拥堵情况。
- 可扩展性:在各种硬件设置上部署模型,从边缘设备到服务器,确保为大规模实施提供灵活且可扩展的解决方案。
有关更多应用,请参阅速度估计的优势。
YOLO11 是否可以与其他 AI 框架(如TensorFlow或PyTorch)集成?
是的,YOLO11 可以与其他 AI 框架(如 TensorFlow 和 PyTorch)集成。Ultralytics 提供对将 YOLO11 模型导出为各种格式(如 ONNX、TensorRT 和 CoreML)的支持,从而确保与其他 ML 框架的平滑互操作性。
要将 YOLO11 模型导出为 ONNX 格式,请执行以下操作:
yolo export model=yolo11n.pt format=onnx
在我们的导出指南中了解有关导出模型的更多信息。
使用 Ultralytics YOLO11 进行速度估计的准确性如何?
使用 Ultralytics YOLO11 进行速度估计的准确性取决于多个因素,包括物体跟踪的质量、视频的分辨率和帧速率以及环境变量。虽然速度估计器提供可靠的估计,但由于帧处理速度和物体遮挡的差异,它可能不是 100% 准确。
注意:在可能的情况下,始终考虑误差范围并使用地面实况数据验证估计值。
有关更多提高准确性的技巧,请查看 参数 SpeedEstimator
部分.