深度学习模型推理时间与FPS的求取方法,以及time,OpenCV的API教程

类似深度学习中目标检测的深度学习模型中有两个非常重要的性能指标,一个是MAP就是检测的准确率,另一个就是FPS,就是模型的推理速度,那么我们如何能够知道模型和视频的推理速度呢?
接下来我们直接进入正题,
(一)求取模型的推理时间我们需要借助python包中的time包,time包常用的API如下:

import time
time.clock()

time clock() 函数以浮点数计算的秒数返回当前的CPU时间
计算模型推理时间在执行模型推理语句前得到时间点,与得到模型推理结果后的时间点进行相减,得到推理时间。
输出当前时间电脑的时间

import time
print(time.asctime())

时间输出结果如下:
在这里插入图片描述
在模型推理代码开始与结束出进行设置,对end与start进行相减,得到推理时间的消耗。

start = time.clock() #推理计时开始
pred = model(input_feature.float())
end = time.clock()  #计时结束
#print('pred:{}'.format(pred))
print('infer_time:', end-start)

(二)计算视频流FPS的代码,整个的算法逻辑是将视频分成帧进行存储,将处理后再将视频按帧进行输出,具体代码如下

import cv2

cap = cv2.VideoCapture("C:\\Users\\LENOVO\\Desktop\\vid.mp4")
#cap就是视频流存储
# 获取FPS(每秒传输帧数(Frames Per Second))
fps = cap.get(cv2.CAP_PROP_FPS)
# 获取总帧数
totalFrameNumber = cap.get(cv2.CAP_PROP_FRAME_COUNT)
print("FPS: {:.2f}".format(fps))#小数点后保留2位
print("sum: {:.2f}".format(totalFrameNumber))#小数点后保留两位

以上是进行视频参数的读取操作。接下来进行窗口播放。

# 当前读取到第几帧
COUNT = 0

# 若小于总帧数则读一帧图像
while COUNT < totalFrameNumber:
    # 一帧一帧图像读取
    ret, frame = cap.read()
    # 把每一帧图像保存成jpg格式(这一行可以根据需要选择保留)

    cv2.rectangle(frame, (0, 0), (150, 150), (0, 0, 255), 10)#标注矩形框
    cv2.line(frame, (0, 0), (150, 150), (0, 0, 255), 10)
    cv2.imwrite(str(COUNT) + '.jpg', frame)#将视频流的分帧进行.jpg图片的格式保存
    # 显示这一帧地图像
    COUNT = COUNT + 1
    cv2.imshow('FPS_infer', frame)#进行视频流的输出

    # 延时一段33ms(1s➗30帧)再读取下一帧,如果没有这一句便无法正常显示视频
    cv2.waitKey(33)

cap.release()#资源释放
cv2.destroyAllWindows()#关闭所有窗口

最后输出窗口如下图所示:

在这里插入图片描述
视频播放:
在这里插入图片描述
本博主公众号为
AI学习经历分享,欢迎关注~
视频流读取的代码开源在本人的github上
欢迎star~
原创不易~
github地址:https://github.com/qianyuqianxun-DeepLearning/Video-streaming-FPS

猜你喜欢

转载自blog.csdn.net/baidu_39629638/article/details/107751607