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

2023-11-02

类似深度学习中目标检测的深度学习模型中有两个非常重要的性能指标,一个是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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 【JavaScript数据结构与算法】数组类(电话号码的字符组合)

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 也会涉及到服务端 Node js 个人状态 在校大学生一枚 已拿多个前端 offer 秋招 未来打算 为中国的工业软件事业效力 n 年 推荐学习 前端面试宝典 Vue2 Vue3 Vu
  • PTA 08-图9 关键活动 题目关键点说明及解法完全分析

    PTA mooc完整题目解析及AC代码库 PTA 拼题A 浙江大学中国大学mooc数据结构全AC代码与题目解析 C语言 假定一个工程项目由一组子任务构成 子任务之间有的可以并行执行 有的必须在完成了其它一些子任务后才能执行 任务调度 包括一
  • MyBatis—利用MyBatis查询(查询所有,查询一行,条件查询)

    文章目录 1 查询所有 2 查询详情 通过特定属性查询 3 多条件查询 1 接口参数列表三种表达方式 2 多条件查询 3 动态Sql 4 多条件动态查询 5 单条件动态查询 1 查询所有 基本步骤 1 定义mapper接口 编写接口方法 2
  • keil5烧录或下载程序出现停止工作的问题

    本人在使用keil5烧录或下载程序出现停止工作的问题 开始认为是keil版本的原因 后来使用了keil4发现问题依然存在 发现因为本人使用了盗版JLINK被驱动检测出来了 由于安装的驱动版本为V6 14 新版的驱动检测到盗版JLINK 一旦
  • 1014 Waiting in Line (30)

    题目描述 Suppose a bank has N windows open for service There is a yellow line in front of the windows which devides the wait
  • 成为FISCO BCOS MVP,并肩链上创未来

    开源以来 FISCO BCOS受到众多开发者的支持 支撑生态内企业数百个应用项目的研发 其中 超120个应用投入使用 目前开源社区已汇聚了超40000名开发者 既有在区块链路上探索实践的开发者 也有自成一派 颇有建树的技术大牛 大家聚集于此
  • ESP32-C3 学习测试 蓝牙 篇(七、GATT 数据通信 — 发送自定义数据)

    前面我们已经入门了 GATT 的开发 更进一步 进行想要的数据通信 目录 前言 1 通信问题思考 2 如何才能每次传输不同的数据 3 对 handle 的认识 4 继续尝试 5 测试成功 结语 前言 本来计划直接做一个蓝牙的小应用 首先得实
  • 【Unity故障】Unityhub登录界面白屏(刷新不出那种感觉)

    平时打开UnityHub可能也就是偶尔需重新激活一下许可证 今天进去发现每个工程后都一个黄色感叹号标志 看了下账号也没登状态 当我以为登个账号就解决 然后就一直卡在这个界面 好像在哪看见过这个问题直接百度搜 资料很多 前人已经帮我们铺平了道
  • java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

    springboot 配置多数据源时 启动出现java lang IllegalArgumentException jdbcUrl is required with driverClassName 修改 spring datasource
  • HIVE解析JSON数组

    HIVE解析JSON数组 数据示例 payAmount 375000 payChannelCode BOC payAmount 376000 payChannelCode AOC 1 get json object函数提取json数组里面特
  • 快速排序算法讲解及代码(详细)

    快速排序算法 一 序言 二 快速排序基本思想 三 具体步骤 四 具体代码 一 序言 快速排序是一种高效且使用广泛的排序算法 在很多语言的标准库中自带的排序都是快速排序 所以我们也有必要了解快排的原理以及实现方法 二 快速排序基本思想 算法思
  • C51单片机学习1

    工程的建立与烧录 一 工程的建立 1 在想要建立工程的地点新建一个文件夹 2 打开C51 选择新建项目 3 点击保存 4 选择芯片AT89C52 选好点击OK 5 破解版的一个bug 点击否就好了 6 然后工程就建立好了 二 工程的配置 1
  • FPGA引脚简介

    一 FPGA的硬件结构 这里说的硬件结构主要从FPGA的引脚功能方面描述 FPGA内部的电路逻辑暂不讨论 FPGA的引脚大致可以分为三类 功能引脚 IO引脚 电源和接地引脚 1 功能引脚 FPGA的功能引脚包含了FPGA配置程序加载 FPG
  • 如何自定义FileZilla编辑文件的默认打开方式

    需求来源于 用FileZilla编辑远程的文件时 每次打开居然不会提示我 打开方式 而是直接跳到了网页 以网页的形式展现 这样我怎么好进行编辑其中的内容 特别是对于xml文件 我们通常需要对它进行配置 可是 如果打开方式是网页 比如 直接跳
  • vue项目引入element-ui的三种方式

    1 element ui插件引用 推荐 通过执行命令vue add element来进行引入 2 npm install 此种方式为全量引入element ui 打包体积大 通过执行命令npm i element ui S安装依赖 main
  • linux超级用户添加,为linux普通用户添加超级用户权限sudo

    问题 假设用户名为 ali 如果用户名没有超级用户权限 当输入 sudo 命令 时 系统提示 ali is not in the sudoers file This incident will be reported 解决 1 进入超级用户
  • unity editer2020版本安装

    unity editer2020版本安装 前言 unity安装 激活许可证 前言 官方下载unity最新版本 unity安装 1 点击下载 2 点击 下载Unity Hub 3 由于我是windows10系统 所以点击 Windows 下载
  • vue表格展示照片点击放大并可左右切换查看

    一 vue展示后台返回照片集合 前端代码展示
  • 基于机器学习的恶意软件加密流量检测研究分享

    1 概述 2 恶意软件加密流量介绍 3 加密HTTPS流量解析 4 特征工程 5 模型效果 6 具体实施 7 总结 1 概述 近年来随着HTTPS的全面普及 为了确保通信安全和隐私 越来越多的网络流量开始采用HTTPS加密 截止今日 超过6
  • 深度学习模型推理时间与FPS的求取方法,以及time,OpenCV的API教程

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