AI视频行为分析系统项目复盘——技术篇2:视频流GPU硬解码
0 项目背景
见《AI视频行为分析系统项目复盘——技术篇1》
https://blog.csdn.net/weixin_42118657/article/details/118105545?spm=1001.2014.3001.5501
1 为什么不使用CPU解码?
原因提炼如下:
- CPU利用率冲顶,而GPU利用率低:视频流的解码工作,一般视频处理函数库由于历史原因,默认使用CPU解码视频流,但如果要实时解码多路视频流,CPU的计算资源将耗费非常严重。这种情况下,服务器内的CPU会经常感觉不够用成为瓶颈,但是与此同时,GPU的利用率通常还很低。导致GPU利用率低原因如下:
- DL工程一般数据流如下:CPU解码视频(费时间)→ CPU各种预处理图片(费时间)→图片从内存拷贝到GPU显存中(费时间)→GPU推理图片(一般的DL模型任务,速度非常快),即便采用数据缓冲池等操作,但很多时候再昂贵的CPU也赶不上GPU推理图片速度。
- GPU近些年来的硬件能力进步速度远超过CPU,而且相关GPU推理加速优化方法也进展迅速。两者任务量不变的情况下,GPU相对CPU经常大大超前完成任务。
- GPU相对CPU天生更擅长解码工作:虽然CPU内也有核显,但相对GPU还是小了点。
2 GPU解码当前主流方案有哪些?
本文等下说的是PC机内DL开发中的主要方法,其他情况下需要更多的跟踪调研,比如手机芯片中,有非常专用的视频解码单元、音频解码单元等等。
通常的方法如下:
- OpenCV中的硬解码:由cv::gpu::VideoReader_GPU完成。(当前不支持RTSP视频流解码)
- ffmpeg + CUVID:FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源程序。CUVID是基于CUDA的视频解码库。FFmpeg编码库可以使用GPU加速。
- deepstream方案:NVIDIA推出的一整套工具,包含解码、预处理和推理,一般推荐直接用这个。但是其灵活性在某些场景可能目前还不够,具体参考:《深兰科技|硬编解码技术的AI应用》
3 GPU硬解码的一个全过程Demo实现
略。
4 CPU解码和GPU解码的性能对比
注意:GPU解码在深度学习工程项目中主要在两个环节应用,即解码视频流 + 图像预处理(主要是颜色空间转换和resize)。
参考1:(公司内部人员测试)
视频流解码对比:3倍
CPU上解码:
- CPU占用率:538.5%
- 总帧数: 18514
- 耗时:30591.02 ms
- 平均每帧耗时:1.652318 ms
GPU上解码:
- CPU占用率:30.3%
- GPU占用率:3%
- 显存占用:215MB
- 总帧数: 18514
- 耗时:9699.89 ms
- 平均每帧耗时: 0.52392189 ms
视频流解码 + cvtColor 对比:预估10倍
参考2:https://www.cnblogs.com/ahfuzhang/p/10855762.html
视频大小:1168856 字节
画面尺寸:480*848
帧数:275
opencv + cuvid 方案:tesla P4(性能类似于GTX 1070)解码性能:1426.84 fps
ffmpeg 4.0 API 方案:[Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz]解码性能:206.46 fps
GPU解码是CPU解码的6.9倍。
注意:
1. GPU解码丢了两帧;
2. 如果使用cuda stream流水线技术,理论上性能还会再提升。
AI视频行为分析系统项目复盘——技术篇2:视频流GPU硬解码相关推荐
- AI视频行为分析系统项目复盘——技术篇4:deepsort原理图
0 背景 见<AI视频行为分析系统项目复盘--技术篇1> 1 目标 尽力绘制详尽的原理图,弄懂deepsort的全局和细节,希望具备以下能力: 精通--能够魔改算法. 一叶知秋--深入了解 ...
- AI视频行为分析系统项目复盘——技术篇3:tensorRT技术梳理
0 背景 见<AI视频行为分析系统项目复盘--技术篇1> 1 tensorRT 介绍 NVIDIA®TensorRT™是一个深度学习平台,用于模型推理加速(仅支持NVIDIA自家GPU,C ...
- AI视频行为分析系统项目复盘——技术篇1:Ubuntu 18.04部署编译OpenCV+contrib、TensorFlow2.1、CUDA10.1+cuDNN7.6.5、tensorRT6.0.1等
0 项目背景 接手他人的项目,全过程重头梳理下. 7台服务器,其中6台GPU服务器(GPU:2*2080Ti,CPU:2*Xeon Gold 5118(12核24线程)),一台调度服务器,Ubuntu ...
- 校园安全AI视频行为分析系统 yolov7
校园安全AI视频行为分析系统以yolov7网络模型算法为核心,校园安全AI视频行为分析算法模型对现场画面中学生打架.异常跌倒.攀爬翻墙.违规闯入.明火烟雾.睡岗离岗.抽烟打电话等行为主动识别预警存档. ...
- 学校AI视频行为分析监测系统 opencv
学校AI视频行为分析监测系统通过python+opencv网络模型AI视频分析技术,学校AI视频行为分析监测算法对学校区域人员打架行为识别.跌倒行为识别.翻墙识别.人员聚众识别.攀高识别.抽烟行为等进 ...
- 支付宝技术专家李战斌:安防视频行为分析系统的技术演进及应用场景 | 2018FMI人工智能与大数据高峰论坛(深圳站)
10月28日FMI 2018人工智能与大数据高峰论坛深圳场圆满落幕,支付宝技术专家李战斌以安防视频行为分析系统的技术演进及应用场景为主题进行了精彩的分享. 支付宝技术专家李战斌 以下是李战斌的演讲内容 ...
- AI视频智能分析技术与应用(三)
AI视频智能分析技术与应用(一) AI视频智能分析技术与应用(二) AI视频智能分析技术与应用(三) 三.AI视频智能分析应用场景有哪些? 从静态图像到动态视频,视频智能分析技术壁垒正在逐步被突破,而 ...
- AI视频智能分析技术与应用(一)
AI视频智能分析技术与应用(一) AI视频智能分析技术与应用(二) AI视频智能分析技术与应用(三) 一.什么是AI视频智能分析? 视频智能分析已渗透到生活生产中的方方面面.从生活中的刷脸支付.停车场 ...
- 基于AI+视频智能分析技术的SkeyeVSS建筑废弃物监管解决方案
近年来,随着各地进行大规模基础设施改造.城镇综合整治等工程,建筑废弃物的数量已呈现激增态势.若随意堆放处理,既占用土地,又污染环境,还危害市民出行安全.如何科学.有效地对建筑废弃物进行监管,督促工地源 ...
最新文章
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
- 面经:什么是Transformer位置编码?
- 计算机语言主要由一些指令组成这些指令包括,(计算机组成指令系统汇编语言.ppt...
- 神经进化:一种不一样的深度学习
- spring bean scope作用域及多线程安全问题场景分析
- 让Exchange 2010 (2007适用)可以收发外部邮件
- JPA 2.1和Java EE 7中的JPQL增强功能(第1部分– JOIN ON)
- JQuery Datatables 在Bootstrap tab中列名无法对齐的问题
- .jardesc文件
- 机器学习(三)——决策树(decision tree)算法介绍
- 阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
- mysql删完数据表空间没释放_mysql删除表后,空间一直不释放
- GoC全教程(附各种下载、教程链接)
- ANC降噪蓝牙耳机软件工程的数学原理
- ubuntu安装英伟达显卡GT 540M驱动
- cesiumlab v3.0.2—通用模型切片
- 计算机学报在线阅读,ei收录的计算机类核心源:计算机研究与发展计算机学报软件.doc...
- 如何找出C#的dataGridView中某字段重复的行并将重复行标红(基于汉得MES系统)
- 学习日记【SpringMVC】
- 腾讯T2大牛亲自讲解!Android开发唯一的出路:进阶学习
热门文章
- python -如何查看已经安装xlrd 的版本号
- Error: Invoke-customs are only supported starting with Android O (--min-api 26)
- window10 系统查看控制面板的方法
- Superset配置hive数据源
- 漫谈五种IO模型(主讲IO多路复用)
- 用 Hystrix 构建高可用服务架构
- Python学习笔记3——三大结构:顺序,分支,循环3
- crt证书iis 中引用 程序目录提示 System.UnauthorizedAccessException:拒绝访问
- centos7grub2 引导win10
- 正则表达式用户名密码电话身份证Email使用