- 博客(21)
- 收藏
- 关注
原创 TensorRT教程20:TensorRT 几个重要概念(重要)
延迟 (Latency):指执行一个操作所花的时间。吞吐量 (Throughput):在单位时间内,可执行的运算次数。batch size----explicit and dynamic.批量大小的确定通常基于吞吐量和延迟之间的权衡。 如果您需要低延迟,请使用低批量。 如果您更喜欢高吞吐量并且可以接受更高的延迟,则可以改用大批量。TensorRT 有两种批量大小模式: 显式 (explicit)和 动态 (dynamic)。显式批处理网络 接受固定的预定批处理大小。 如果您确切地知道期望的
2021-07-26 23:14:10
2868
1
原创 TensorRT教程19:最佳实践:网络性能的分析与优化
最佳实践:网络性能的分析与优化Profier计时网络性能时采用同步推理测量每一层的运行时间// profile类,继承自 IProfilerstruct Profiler : public IProfiler{ typedef std::pair<std::string, float> Record; std::vector<Record> mProfile; // 将每一层的运行时间存放到 vector中 virtual void rep
2021-07-25 17:54:32
966
原创 TensorRT教程18:使用DLA(深学习加速器)
使用DLA(深学习加速器)https://github.com/NVIDIA/TensorRT/tree/master/samples/opensource/sampleMNIST示例:带有 DLA 的 sampleMNIST示例首先创建构建器:auto builder = SampleUniquePtr<nvinfer1::IBuilder>(nvinfer1::createInferBuilder(gLogger));if (!builder) return false;buil
2021-07-25 17:51:56
3703
原创 TensorRT教程17: 使用混合精度--fp32、fp16、int8(重点)
TensorRT 使用混合精度五种精度类型kFLOAT //!< FP32 format.kHALF //!< FP16 format.kINT8 //!< INT8 format.kINT32 //!< INT32 format.kTF32 //!< TF32 format.TF32精度TF32 Tensor Cores 可以使用 FP32 加速网络,通常不会损失准确性。 对于需要高动态范围权重或激活的模型,它比 FP16 更健壮。在构建引擎时设置
2021-07-25 17:48:11
13082
3
原创 TensorRT教程16:从框架导入模型时使用自定义层--示例
从框架导入模型时使用自定义层示例:使用caffe模型导入使用自定义层官方实例https://github.com/NVIDIA/TensorRT/tree/master/samples/opensource/samplePluginhttps://github.com/NVIDIA/TensorRT/tree/master/samples/opensource/sampleFasterRCNN示例:使用uff模型导入使用自定义层官方示例https://github.com/NVIDIA/Ten
2021-07-25 17:45:10
652
原创 TensorRT教程15:使用Python API 添加自定义插件层
使用Python API 添加自定义插件层示例:使用 python 向网络中添加自定义层import tensorrt as trtimport numpy as np#step1:创建logger:日志记录器TRT_LOGGER = trt.Logger()#初始化注册插件层trt.init_libnvinfer_plugins(TRT_LOGGER, '')#插件创建器集合PLUGIN_CREATORS = trt.get_plugin_registry().plugin_creat
2021-07-25 17:43:05
1665
原创 TensorRT教程14:使用C++ API添加自定义插件层
使用C++ API添加自定义插件层添加插件层基本流程//step1:创建插件creatorauto creator = getPluginRegistry()->getPluginCreator(pluginName, pluginVersion);//step2:获取插件字段名const PluginFieldCollection* pluginFC = creator->getFieldNames();//step3:获取插件元数据PluginFieldCollection
2021-07-25 17:37:26
1995
原创 TensorRT教程13:自定义插件层的使用之---插件API接口说明(难点)
参考资料oldpan:TensorRT-7.x自定义插件详细指南:https://blog.csdn.net/IAMoldpan/article/details/112549117oldpan:实现TensorRT自定义插件(plugin)自由!https://zhuanlan.zhihu.com/p/297002406TensorRT的官方plugin插件库:https://github.com/NVIDIA/TensorRT/tree/master/pluginsampleUffPluginV2
2021-07-25 17:21:25
1343
原创 TensorRT教程12:使用PythonAPI部署推理(重点)
使用PythonAPI部署推理(重点)step1:创建runtimestep2:反序列化创建enginestep3:创建contextstep4:获取输入输出索引step5:创建buffersstep6:为输入输出开辟GPU显存step7:创建cuda流step8:从CPU到GPU----拷贝input数据step9:异步推理step10:从GPU到CPU----拷贝output数据step10:同步cuda流step11:释放资源#导入模块import tensorrt as
2021-07-25 16:59:34
2250
4
原创 TensorRT教程11:使用C++API部署推理(重点)
使用C++API部署推理(重点)step1:创建runtimestep2:反序列化创建enginestep3:创建contextstep4:获取输入输出索引step5:创建buffersstep6:为输入输出开辟GPU显存step7:创建cuda流step8:从CPU到GPU----拷贝input数据step9:异步推理step10:从GPU到CPU----拷贝output数据step10:同步cuda流step11:释放资源//step1:创建runtimeIRuntime*
2021-07-25 16:57:31
5616
5
原创 TensorRT教程10:部署推理的基本步骤(重点)
部署推理阶段此阶段主要完成推理,Kernel Auto-Tuning 和 Dynamic Tensor Memory 应该是在这里完成的。先创建一个runtime对象,再将plan文件反序列化,并创建一个 runtime engine,然后就可以输入数据(比如测试集或数据集之外的图片),然后输出分类向量结果或检测结果。tensorRT的好处就是不需要安装其他深度学习框架,就可以实现部署和推理。这个阶段需要给tensorRT提供一个标签文件(这个主要是将模型产生的数字标号分类,与真实的名称对应起来)
2021-07-25 16:54:25
2082
原创 TensorRT教程9:使用 Python parser API解析模型(重点)
使用 Python parser API解析模型(重点)1、解析模型创建engine的10个基本步骤step1:创建loggerstep2:创建builderstep3:创建networkstep4:创建parserstep5:使用parser解析模型填充network对象step6:标记网络输出step7:创建config并设置最大batchsize和最大工作空间step8:创建enginestep9:序列化保存enginestep10:释放资源2、parser解析caffe模型
2021-06-27 18:59:35
1124
原创 TensorRT教程8:使用 Python API 从头创建网络(重点)
使用 Python API 从头创建网络(重点)1、从头创建engine的9个基本步骤step1:创建loggerstep2:创建builderstep3:创建networkstep4:向network中添加网络层step5:设置并标记输出step6:创建config并设置最大batchsize和最大工作空间step7:创建enginestep8:序列化保存enginestep9:释放资源2、示例代码#导入模块import tensorrt as trt#step1:创建log
2021-06-27 18:54:39
1295
原创 TensorRT教程7:使用 C++ parser API解析模型(重点)
使用 C++ parser API解析模型1、parser解析caffe模型//step1:创建logger:日志记录器class Logger : public ILogger { void log(Severity severity, const char* msg) override { // suppress info-level messages if (severity != Severity::kINFO)
2021-06-27 18:31:21
1310
原创 TensorRT教程6:使用 C++ API 从头创建网络(重点)
使用 C++ API 从头创建网络(重点)这种方法是兼容性最强,效率最高,也是难度最高的。==那直接使用底层API有什么好处呢?看下表 ,可以看到对于 RNN,int8校准,不对称 padding 来说,NvCaffeParser是不支持的,只有 C++ API 和 Python API,才是支持的。所以说如果是针对很复杂的网络结构使用tensorRT,还是直接使用底层的 C++ API,和Python API 较好。==底层C++ API还可以解析像 darknet 这样的网络模型,因为它需要的就只是
2021-06-27 18:22:16
1848
1
原创 TensorRT教程5:创建engine的基本步骤
创建engine的基本步骤1、从头定义网络创建engine的9个基本步骤step1:创建loggerstep2:创建builderstep3:创建networkstep4:向network中添加网络层step5:设置并标记输出step6:创建config并设置最大batchsize和最大工作空间step7:创建enginestep8:序列化保存enginestep9:释放资源2、解析模型创建engine的10个基本步骤step1:创建loggerstep2:创建builderst
2021-06-27 18:16:12
2708
原创 TensorRT教程4:使用onnx2trt工具转engine
使用onnx2trt工具转engineonnx-tensorrt 地址:https://gitee.com/Mr_xiaolong/onnx-tensorrt1、安装onnx2trt注意我用的trt7.2.3.4版本#克隆master分支到本地,因为默认master分支是7.2.3.4git clone https://gitee.com/Mr_xiaolong/onnx-tensorrt.gitgit submodule init#子模块初始化git submodule update #更新
2021-06-27 18:07:28
5709
2
原创 TensorRT教程3:使用trtexec工具转engine
使用trtexec工具转engine目前官方的转换工具 ONNX-TensorRT https://github.com/onnx/onnx-tensorrttrtexec的用法说明参考 https://blog.csdn.net/qq_29007291/article/details/116135737trtexec有两个主要用途:测试网络性能 - 如果您将模型保存为 UFF 文件、ONNX 文件,或者如果您有 Caffe prototxt 格式的网络描述,您可以使用 trtexec 工具来
2021-06-27 18:05:26
17252
10
原创 TensorRT教程2:工作流程
TensorRT工作流程1、转换和部署模型5个基本步骤step1:获取模型step2:选择batchsizestep3:选择精度step4:模型转换step5:模型部署2、转换模型的3个主要选择使用TF-TRT易于使用,可以避免自己写插件层,未达到最佳效率,TF-TRT 通常比直接使用 ONNX 或 C++ API 慢使用trtexec转换 ONNX最高效,使用trtexec,不支持的层要自己写插件层使用TensorRT网络定义 API用C++ API 或 Python API
2021-06-27 18:00:59
1399
1
原创 TensorRT教程1:优化原理
TensorRT优化原理TensorRT优化方法主要有以下几种方式,最主要的是前面两种。层间融合或张量融合----在构建engine阶段完成算子融合(网络层合并):如下图左侧是GoogLeNetInception模块的计算图。这个结构中有很多层,在部署模型推理时,这每一层的运算操作都是由GPU完成的,但实际上是GPU通过启动不同的CUDA(Compute unified device architecture)核心来完成计算的,CUDA核心计算张量的速度是很快的,但是往往大量的时间是浪费在CUDA
2021-06-27 17:54:32
3441
原创 手把手教你安装 Deepstream 5.1
手把手教你安装Deepstream5.1 - OK官方安装教程:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html#remove-all-previous-deepstream-installations#-------------------先卸载显卡驱动重装------------------------------------sudo apt-get remove nvidia*
2021-05-14 15:32:20
4605
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人