【问题标题】:How to calculate FPS using GPU in Python如何在 Python 中使用 GPU 计算 FPS
【发布时间】:2022-08-03 03:43:42
【问题描述】:

我正在处理一个computer vision 项目,所有处理或推理都在 GPU 上进行。我需要计算从视频流中获得的实时 FPS。此视频流可以是视频文件或 RTSP 视频流。

我写了一个简单的逻辑来计算 FPS。如下所示:

cap = cv2.VideoCapture(0)

fps_start_time = datetime.datetime.now()
fps = 0
total_frames = 1

while True:
    ret, frame = cap.read()
    total_frames = total_frames + 1

    \"\"\"
    All the processing and 
    inferencing happens here
    \"\"\"

    fps_end_time = datetime.datetime.now()
    time_diff = fps_end_time - fps_start_time
    fps = (total_frames / time_diff.seconds)

    fps_text = \"FPS: {:.2f}\".format(fps)
    print(fps_text)
    cv2.putText(frame, fps_text, (5, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 1)

    cv2.imshow(\"Application\", frame)
    key = cv2.waitKey(1)
    if key == ord(\'q\'):
        break

只是为了解释上述逻辑,我在开始推理之前使用fps_start_time。推理完成后,我将采用fps_end_time,然后用开始时间减去结束时间并将时间差异除以帧以获得 FPS。如果您在 CPU 上进行所有推理,这可以正常工作。但是,如果您的推理是在 GPU 上进行的,则会显示不正确的值。

我有一个定制的硬件,其中 GPU 非常高端,而 CPU 很低,因此在推断时我可以在输出视频中看到,没有滞后/延迟,但 FPS 仍然保持在 6-7 左右,实际上它看起来像 25 -30。发生这种情况的原因是,推理时的 CPU 使用率始终在 95% 左右,因此 FPS 很低。如果我们使用 GPU 进行 FPS,大部分时间为 50-60%,那么我们可能会得到正确的值。

有没有人用GPU计算过FPS。是否有任何可用的预构建库或方法可用于获取 GPU 的 FPS。请帮忙。谢谢

  • 有同样的问题,没有其他解决方案?

标签: python-3.x computer-vision video-streaming gpu frame-rate


【解决方案1】:
  1. 我猜你做对了,所以基本上,FPS = 1/('Current Operations time' - 'Previous Operations Time')。

  2. 还要检查您的相机是否实际上以 60 fps 的速度传输。您可以使用它在 OpenCV 中执行此操作。

    cap = cv2.VideoCapture(0)

    fps = cap.get(cv2.CAP_PROP_FPS)

  3. 大多数网络摄像头都锁定在 30 fps。

    如果您想出了解决方案,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2020-07-27
    相关资源
    最近更新 更多