使用Ultralytics YOLO11 🚀 进行速度估计
什么是速度估算?
速度估计是在给定环境下计算物体运动速度的过程,通常用于计算机视觉应用中。使用 Ultralytics YOLO11您现在可以利用物体跟踪以及距离和时间数据来计算物体的速度,这对于交通监控等任务至关重要。速度估计的准确性直接影响到各种应用的效率和可靠性,使其成为推动智能系统和实时决策过程的关键组成部分。
观看: 速度估算使用Ultralytics YOLO11
查看我们的博客
要深入了解速度估算,请查看我们的博文:Ultralytics YOLO11 用于计算机视觉项目中的速度估算
速度估算的优势
- 高效的交通控制:准确的速度估计有助于管理交通流量、提高安全性和减少道路拥堵。
- 精确的自主导航:在自动驾驶汽车等自主系统中,可靠的速度估计可确保车辆导航的安全性和准确性。
- 增强监控安全性:监控分析中的速度估算有助于识别异常行为或潜在威胁,提高安全措施的有效性。
真实世界的应用
交通运输 | 交通运输 |
---|---|
![]() |
![]() |
道路速度估算Ultralytics YOLO11 | 桥梁速度估算Ultralytics YOLO11 |
速度只是估计值
速度只是估计值,可能不完全准确。此外,估计值会因GPU 速度和环境因素而变化。
使用Ultralytics YOLO估算速度
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))
# speed region points
speed_region = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
# Initialize speed estimation object
speedestimator = solutions.SpeedEstimator(
show=True, # display the output
model="yolo11n.pt", # path to the YOLO11 model file.
region=speed_region, # pass region points
# 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 模型文件的路径。 |
region |
list |
[(20, 400), (1260, 400)] |
定义计数区域的点列表。 |
"(《世界人权宣言》) SpeedEstimator
解决方案允许使用 track
参数
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
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 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(
region=[(0, 360), (1280, 360)],
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 能否与其他人工智能框架集成,如 TensorFlow或 PyTorch?
是的,YOLO11 可以与TensorFlow 和PyTorch 等其他人工智能框架集成。Ultralytics 支持将YOLO11 模型导出为各种格式,如 ONNX, TensorRT和 CoreML,确保与其他 ML 框架的顺畅互操作性。
将YOLO11 模型导出为ONNX 格式:
使用Ultralytics YOLO11 估算速度的准确性如何?
使用Ultralytics YOLO11 估算速度的准确性取决于多个因素,包括物体跟踪的质量、视频的分辨率和帧速率以及环境变量。虽然速度估算器能提供可靠的估算结果,但由于帧处理速度和物体遮挡的差异,它可能无法达到 100% 的准确度。
注意:一定要考虑误差范围,并尽可能用地面实况数据验证估算结果。
有关提高精度的更多提示,请查看 论据 SpeedEstimator
部分.