【发布时间】:2021-02-24 17:47:15
【问题描述】:
我正在使用 YoloV4 和 Deepsort 来检测和跟踪帧中的人。
我的目标是在没有校准的情况下以有意义的单位获得移动人的速度,因为我希望能够将带有此模型的相机移动到不同的房间,而无需每次都进行校准。我理解这是一个非常困难的问题。我目前正在以每秒像素的速度获得速度。但这是不准确的,因为靠近框架的项目“移动”得更快。
我的问题是我是否可以使用人员检测的边界框来衡量一个人的大小(以像素为单位),以及我是否可以平均一个人的大小(比如 68 英寸高 x 15 英寸宽)和是否有必要的“校准”指标来确定对象在帧中从 A 点移动到 B 点的英寸/秒,以反映从 A 区到 B 区的人的大小?
简而言之,有没有办法从对象的大小中获取速度,以确定它在一帧中的移动速度?
任何建议都会有所帮助! 谢谢!
这就是我现在计算速度的方式。
# # Calculate the center of the bounding box
xCenter = int((bbox[0] + bbox[2]) / 2)
yCenter = int((bbox[1] + bbox[3]) / 2)
# Get metrics from metrics {track_id : [[frames, xCenter, yCenter], [frames, xCenter, yCenter]] }
values = metrics[track_id]
# # calculate displacement, velocity and speed.
if len(values) > 1:
delta_frames = values[-1][0] - values[-2][0]
delta_t = delta_frames / fps #fps = 30
delta_x = values[-1][1] - values[-2][1]
delta_y = values[-1][2] - values[-2][2]
total_displacement = math.sqrt(delta_x ** 2 + delta_y ** 2)
speed = total_displacement / delta_t
【问题讨论】:
-
如果您正在考虑一种相对不需要校准的可靠方法,则需要激光雷达传感器。
-
为什么你认为卡尔曼滤波器会使用真实世界的速度?
-
我不认为卡尔曼滤波器具有真实世界的速度,这就是为什么我试图以另一种方式获得真实世界的速度。 @A.Parico 我不需要它只是在球场上可靠。我的问题真的可以归结为我可以通过时间和对象的大小来获得速度吗?
标签: python-3.x opencv computer-vision yolo