一种基于制造技术

技术编号:39741969 阅读:8 留言:0更新日期:2023-12-17 23:42
本发明专利技术公开了一种基于

【技术实现步骤摘要】
一种基于TensorRT的视频超分推理方法及装置


[0001]本专利技术属于计算机视觉中的视频超分领域,具体涉及一种使用
TensorRT
对视频超分方法进行推理的优化方案,可以降低模型的推理时间,降低显存占用,为视频超分落地提供有效解决方案


技术介绍

[0002]视频超分源于图像超分,其目的是从一个或多个低分辨率
(LR)
图像中恢复高分辨率
(HR)
图像

它们的区别也很明显,由于视频是由多个帧组成的,即前者通常利用帧间的信息来进行修复,这也带来了额外的挑战,即是信息量更大,需要更为复杂的网络结构,需要更多的模型参数,需要占用更多的显存等

这些挑战对于模型的落地以及实际场景的使用带来了非常大的困难

[0003]TensorRT
是英伟达公司出品的高性能的推理框架,专门应用与
GPU
设备以及嵌入式设备的推理
。TensorRT
包含了我们平时所见到了深度学习落地技术:模型量化

动态内存优化以及其他的一些优化技术,更主要的,其推理代码是直接利用
CUDA
语言在显卡上运行的,所有的代码库仅仅包括
C++

CUDA
,我们在利用这个优化库运行我们训练好的代码后,运行时间以及显存

内存的占用都能够大大减少

[0004]TensorRT
本身所支持的模型构建方式有三种,第一种是使用
onnx
格式,通过
TensorRT
本身的
onnx
解释器能够将
onnx
的模型结构和模型参数转换到
TensorRT
中进行推理加速,这种方式优点在于简单易操作,缺点在于对于不支持的算子难以处理

第二种方式是导入
caffe
或者
TensorFlow
模型,
TensorRT
自带了这两种模型的解释器,能够比
onnx
的方式更为高效,但缺点是需要模型转换成
caffe
或者
TensorFlow

,
而目前大多数的网络是
Pytorch
框架下的

最后一种方式即是使用
C++
原生
API
搭建网络,根据
TensorRT
自带的深度学习算子
API
,比如卷积

池化

激活函数等进行搭建,这种方式的优点在于推理速度更快,内部可以做更多的优化,缺点在于搭建模型较为费时复杂

本专利技术基于第三种方式对部署方式进行优化,以更好的效果更简单的方式去优化视频超分网络的推理部署


技术实现思路

[0005]针对现有技术中存在的不足,本专利技术提供一种基于
TensorRT
的视频超分推理方法及装置

[0006]为此,本专利技术的目的在于提高视频超分速度,降低视频超分网络所需要的显存以及优化
TensorRT
的使用方法

本专利技术提出一种针对视频超分简化
TensorRT
部署的方案,以及优化一种视频超分中常用到的算子

本专利技术输入为长视频,输出为超分后的长视频

将视频超分网络进行训练,然后将视频超分网络训好的模型和计算图进行导出和保存

随后对视频超分网络中算子进行分析,并对常用算子进行整理,对可优化算子进行算子融合,最后对视频超分网络逐层的进行转化和调用

[0007]一种基于
TensorRT
的视频超分推理方法,包括以下步骤:
[0008]步骤
(1)
对视频超分网络进行训练;
[0009]步骤
(2)
对网络算子进行分析,对常用算子进行整理,对不支持算子进行编写,对于可优化算子做算子融合

[0010]步骤
(3)
对于完整的视频超分网络结构,使用
TensorRT
编写并生成序列化引擎进行推理;
[0011]进一步的,步骤
(1)
具体实现如下;
[0012]对选择的视频超分网络模型进行训练得到部署的模型,使用
Pytorch
深度学习训练框架

另外使用
mmediting
配置训练
Basicvsr
需要的模型参数以及训练数据集

[0013]进一步的,步骤
(2)
具体实现如下;
[0014]常用算子需要对其进行整理,因为
TensorRT
的算子
API

Pytorch
的算子
API
不同,将两者算子进行对齐之后,便于后续的调用
。TensorRT
不支持的算子,需要进行编写

对于不支持的算子,需要自定义
TensorRT
的插件,需要继承
IPluginV2DynamicExt
以及
PluginCreator
类,并实现该类中的成员函数包括推理需要的
cuda
函数以及序列化函数

对于可优化的算子融合成为一个算子,这样在推理过程中减少访存的次数,加速整体的计算

[0015]进一步的,步骤
(3)
具体实现如下;
[0016]根据使用的视频超分网络逐层进行添加对应的算子

然后生成引擎,在生成的过程中通过
TensorRT
进行编译优化,将自动去选择更合理更快速的算子实现方式

在构建完引擎之后,得到最优方案,进行推理的时候需要先反序列化引擎然后输入视频序列,在代码中将输入数据从
CPU
传输到
GPU
端,在
GPU
上执行推理计算,最后计算完成把数据从
GPU
端传回
CPU


[0017]进一步的,所述的视频超分网络使用
Basicvsr。
[0018]进一步的,
TensorRT
不支持的算子
flow_warp

Pytorch
的执行流程中为:先创建网格,将光流与网格进行对应相加,然后将值归一化到
(

1,1)。
紧接着调用
grid_sample
算子输入参数为输入
...

【技术保护点】

【技术特征摘要】
1.
一种基于
TensorRT
的视频超分推理方法,其特征在于,包括以下步骤:步骤
(1)
对视频超分网络进行训练;步骤
(2)
对网络算子进行分析,对常用算子进行整理,对不支持算子进行编写,对于可优化算子做算子融合;步骤
(3)
对于完整的视频超分网络结构,使用
TensorRT
编写并生成序列化引擎进行推理
。2.
根据权利要求1所述的一种基于
TensorRT
的视频超分推理方法,其特征在于,步骤
(1)
具体实现如下;对选择的视频超分网络模型进行训练得到部署的模型,使用
Pytorch
深度学习训练框架;另外使用
mmediting
配置训练
Basicvsr
需要的模型参数以及训练数据集
。3.
根据权利要求1所述的一种基于
TensorRT
的视频超分推理方法,其特征在于,步骤
(2)
具体实现如下;常用算子需要对其进行整理,因为
TensorRT
的算子
API

Pytorch
的算子
API
不同,将两者算子进行对齐之后,便于后续的调用;
TensorRT
不支持的算子,需要进行编写;对于不支持的算子,需要自定义
TensorRT
的插件,需要继承
IPluginV2DynamicExt
以及
PluginCreator
类,并实现该类中的成员函数包括推理需要的
cuda
函数以及序列化函数;对于可优化的算子融合成为一个算子,这样在推理过程中减少访存的次数,加速整体的计算
。4.
根据权利要求3所述的一种基于
TensorRT
的视频超分推理方法,其特征在于,步骤
(3)
具体实现如下;根据使用的视频超分网络逐层进行添加对应的算子;然后生成引擎,在生成的过程中通过
TensorRT
进行编译优化,将自动去选择更合理更快速的算子实现方式;在构建完引擎之后,得到最优方案,进行推理的时候需要先反序列化引擎然后输入视频序列,在代码中将输入数据从
CPU
传输到
GPU
端,在
GPU
上执行推理计算,最后计算完成把数据从
GPU
端传回
CPU

。5.
根据权利要求1‑4任一所述的一种基于
TensorRT
的视频超分推理方法,其特征在于,所述的视频超分网络使用
Basicvsr。6.
根据权利要求3所述的一种基于
TensorRT
的视频超分推理方法,其特征在于,
TensorRT
不支持的算子
flow_warp

Pytorch
的执行流程中为:先创建网格,将光流与网格进行对应相加,然后将值归一化到
(

1,1)
;紧接着调用
grid_sample
算子输入参数为输入

处理过的光流数据以及插值的模式;
grid_sample
算子在
Pytorch
里的执行流程是先去反归一化,然后找到输出对应的位置索引在光流上的值,用该值在输入上进行线性插值得到输出处结果;在使用
TensorRT
的自定义算子时,需要写
cuda
代码完成前述的在
Pytorch
上的前向执行过程;通过分析
flow_warp
算子在
Pytorch
...

【专利技术属性】
技术研发人员:颜成钢张文豪陈雨中魏宇鑫汪奇挺傅晟付莹郭雨晨赵思成孙垚棋朱尊杰高宇涵王鸿奎赵治栋殷海兵王帅张继勇李宗鹏丁贵广
申请(专利权)人:杭州电子科技大学丽水研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1