使用Ultralytics YOLOv8 🚀 进行速度估计
什么是速度估算?
速度估计是在给定环境下计算物体运动速度的过程,通常用于计算机视觉应用中。使用 Ultralytics YOLOv8现在,您可以使用物体跟踪以及距离和时间数据来计算物体的速度,这对交通和监控等任务至关重要。速度估计的准确性直接影响到各种应用的效率和可靠性,使其成为推动智能系统和实时决策过程的关键组成部分。
观看: 速度估算使用Ultralytics YOLOv8
查看我们的博客
要深入了解速度估算,请查看我们的博文:Ultralytics YOLOv8 用于计算机视觉项目中的速度估算
速度估算的优势?
- 高效的交通控制:准确的速度估计有助于管理交通流量、提高安全性和减少道路拥堵。
- 精确的自主导航:在自动驾驶汽车等自主系统中,可靠的速度估计可确保车辆导航的安全性和准确性。
- 增强监控安全性:监控分析中的速度估算有助于识别异常行为或潜在威胁,提高安全措施的有效性。
真实世界的应用
交通运输 | 交通运输 |
---|---|
道路速度估算Ultralytics YOLOv8 | 桥梁速度估算Ultralytics YOLOv8 |
使用YOLOv8 进行速度估算示例
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n.pt")
names = model.model.names
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
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
line_pts = [(0, 360), (1280, 360)]
# Init speed-estimation obj
speed_obj = solutions.SpeedEstimator(
reg_pts=line_pts,
names=names,
view_img=True,
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
tracks = model.track(im0, persist=True)
im0 = speed_obj.estimate_speed(im0, tracks)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
速度估计
速度为估计值,可能不完全准确。此外,估计值可能因GPU 速度而异。
论据 SpeedEstimator
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
names |
dict |
None |
类名词典 |
reg_pts |
list |
[(20, 400), (1260, 400)] |
用于速度估算的区域点列表。 |
view_img |
bool |
False |
是否显示带有注释的图像。 |
line_thickness |
int |
2 |
绘制方框和轨道时线条的厚度。 |
spdl_dist_thresh |
int |
10 |
计算速度的距离阈值。 |
论据 model.track
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
source |
str |
None |
Specifies the source directory for images or videos. Supports file paths and URLs. |
persist |
bool |
False |
Enables persistent tracking of objects between frames, maintaining IDs across video sequences. |
tracker |
str |
botsort.yaml |
Specifies the tracking algorithm to use, e.g., bytetrack.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives. |
iou |
float |
0.5 |
Sets the Intersection over Union (IoU) threshold for filtering overlapping detections. |
classes |
list |
None |
Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes. |
verbose |
bool |
True |
Controls the display of tracking results, providing a visual output of tracked objects. |
常见问题
如何使用Ultralytics YOLOv8 估算物体速度?
使用Ultralytics YOLOv8 估算物体速度需要结合物体检测和跟踪技术。首先,需要使用YOLOv8 模型检测每帧中的物体。然后,跨帧跟踪这些物体,计算它们在一段时间内的移动情况。最后,使用物体在帧间移动的距离和帧频来估算其速度。
示例:
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n.pt")
names = model.model.names
cap = cv2.VideoCapture("path/to/video/file.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
speed_obj = solutions.SpeedEstimator(
reg_pts=[(0, 360), (1280, 360)],
names=names,
view_img=True,
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
tracks = model.track(im0, persist=True, show=False)
im0 = speed_obj.estimate_speed(im0, tracks)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
更多详情,请参阅我们的官方博文。
在交通管理中使用Ultralytics YOLOv8 进行速度估算有什么好处?
使用Ultralytics YOLOv8 进行速度估算在交通管理方面具有显著优势:
- 增强安全性:准确估算车速,检测超速行驶,提高道路安全性。
- 实时监控:利用YOLOv8 的实时目标检测功能,有效监控交通流量和拥堵情况。
- 可扩展性:在从边缘设备到服务器的各种硬件设置上部署该模型,确保为大规模实施提供灵活、可扩展的解决方案。
有关更多应用,请参阅速度估算的优势。
YOLOv8 能否与TensorFlow 或PyTorch 等其他人工智能框架集成?
是的,YOLOv8 可与其他人工智能框架集成,如TensorFlow 和PyTorch 。Ultralytics 支持将YOLOv8 模型导出为各种格式,如ONNX 、TensorRT 和CoreML ,确保与其他 ML 框架顺利互操作。
将YOLOv8 模型导出为ONNX 格式:
使用Ultralytics YOLOv8 估算速度的准确性如何?
使用Ultralytics YOLOv8 估算速度的准确性取决于多个因素,包括物体跟踪的质量、视频的分辨率和帧速率以及环境变量。虽然速度估算器能提供可靠的估算结果,但由于帧处理速度和物体遮挡的差异,它可能无法达到 100% 的准确度。
注意:一定要考虑误差范围,并尽可能用地面实况数据验证估算结果。
有关提高精度的更多提示,请查看 论据 SpeedEstimator
部分.
为什么选择Ultralytics YOLOv8 而不是其他对象检测模型(如TensorFlow Object Detection API)?
Ultralytics YOLOv8 与其他对象检测模型(如TensorFlow Object Detection API)相比,它具有多项优势:
- 实时性能:YOLOv8 针对实时检测进行了优化,速度快、精度高。
- 易于使用:YOLOv8 设计有用户友好界面,简化了模型培训和部署。
- 多功能性:支持多种任务,包括物体检测、分割和姿态估计。
- 社区和支持:YOLOv8 有一个活跃的社区和大量的文档支持,确保开发人员获得所需的资源。
有关YOLOv8 优点的更多信息,请访问我们的详细型号页面。