yhwang-hub
还是什么也不写吧
展开
-
pytorch-quantization创建自定义量化模块
量化工具提供了几个量化的模块,如下所示:要量化模块,我们需要量化输入和权重(如果存在)。原创 2023-07-19 14:27:54 · 552 阅读 · 1 评论 -
在 Jetson Nano 上安装 ncnn 深度学习框架。
通常,程序员知道变量的类型,并且可以提前分配保存该对象的内存。我们在有和没有 Vulkan 支持的情况下进行了一些基准测试,以了解 ncnn 的表现如何。平均而言,当 ncnn 使用 Vulkan 时,您将获得 57% 的性能提升。或者,就此而言,任何其他使用 RTTI 的软件。使用此标志进行编译时,只有当其余程序仍未使用 RTTI 时,YOLOV5 中的自定义层才可用。特别是在成熟的代码中,需要一个新的功能而不需要重写所有代码。安装新的 CMake 3.18.4 后,下一步是构建实际的 ncnn 框架。原创 2023-06-26 09:59:36 · 925 阅读 · 0 评论 -
TensorRT INT8量化说明文档
在这种模式下,TensorRT 仅针对性能进行优化,您几乎无法控制在哪里使用 INT8 - 即使您在 API 级别明确设置了层的精度,TensorRT 也可能在图优化期间将该层与另一层融合,并丢失它必须在 INT8 中执行的信息。给定激活张量的统计数据,决定最佳尺度值并不是一门精确的科学——它需要平衡量化表示中的两个误差来源:离散化误差(随着每个量化值表示的范围变大而增加)和截断错误(其中值被限制在可表示范围的限制范围内。当可改装的TensorRT引擎被改装时,Q/DQ节点的尺度可以被赋予新的值。原创 2023-04-25 17:41:25 · 901 阅读 · 0 评论 -
模型量化的原理与实践 —基于YOLOv5实践目标检测的PTQ与QAT量化
大家都知道,数字既包括整数,又包括小数,如果想在计算机中,既能表示整数,也能表示小数,关键就在于这个小数点如何表示?于是计算机科学家们想出一种方法,即约定计算机中小数点的位置,且这个位置固定不变,小数点前、后的数字,分别用二进制表示,然后组合起来就可以把这个数字在计算机中存储起来,这种表示方式叫做定点表示法,用这种方法表示的数字叫做定点数。也就是说「定」是指固定的意思,「点」是指小数点,所以小数点位置固定的数即为定点数。原创 2023-04-17 23:31:51 · 837 阅读 · 0 评论 -
YOLO综述:从YOLOV1到YOLOV8
YOLO 已成为机器人、无人驾驶汽车和视频监控应用的中央实时目标检测系统。我们对 YOLO 的演变进行了全面分析,检查了从原始 YOLO 到 YOLOv8 的每次迭代中的创新和贡献。我们首先描述标准指标和后处理;然后,我们讨论了每个模型的网络架构和训练技巧的主要变化。最后,我们总结了 YOLO 发展的重要经验教训,并展望了其未来,强调了增强实时目标检测系统的潜在研究方向。原创 2023-04-08 22:57:42 · 1901 阅读 · 0 评论 -
NVIDIA 量化感知训练pytorch-quantization说明文档
量化工具提供的几个量化模块如下:要量化模块,我们需要量化输入和权重(如果存在)。为只有输入的模块创建量化包装器为具有输入和权重的模块创建量化包装器。直接将 TensorQuantizer 模块添加到模型图中操作的输入。如果需要用量化版本自动替换原始模块(图中的节点),前两种方法非常有用。当需要在非常特定的地方手动将量化添加到模型图中时,第三种方法可能很有用(更多手动,更多控制)。让我们通过下面的示例查看每个用例。原创 2023-04-01 10:30:15 · 523 阅读 · 0 评论 -
深度学习算法C++部署代码开源库说明文档
上述算法pytorch模型转onnx模型可参考算法源码提供的方式进行转换,其中yolov5_cutoff及yolov7_cutoff同样也是yolov5及yolov7算法的部署,只不过是将grid部分截断并提供了手动实现的C++源码,对于TensorRT部署yolox及yolov8部署的代码中涉及到预处理和后处理cuda加速代码,所有模型的部署代码均以预处理、推理、后处理的框架进行编写,大家可以参考进行使用,希望这个开源项目能够帮助大家能够更好的完成深度学习模型的部署!原创 2023-03-27 19:24:45 · 835 阅读 · 0 评论 -
通过矩阵乘法性能优化学习CUDA
矩阵乘法性能优化学习CUDA原创 2022-12-11 23:59:57 · 534 阅读 · 0 评论 -
图解Git
图解Git基本用法约定命令详解DiffCommitCheckoutHEAD标识处于分离状态时的提交操作ResetMergeCherry PickRebase技术说明此页图解git中的最常用命令。如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻。 如果你想知道这个站点怎样产生,请前往GitHub repository。基本用法上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。git add files 把当前文件放入暂存区域。git commit 给暂存区域生成快照原创 2021-09-05 00:01:38 · 350 阅读 · 0 评论 -
【CUDA 基础】1.1 异构计算与CUDA
异构计算与CUDA异构计算与CUDA异构计算异构架构范例CUDA:一种异构计算平台“Hello World!”CUDA C难么?总结Abstract: 介绍异构计算和CUDA概述,完成GPU输出Hello world!Keywords: 异构计算,CUDA异构计算与CUDA异构计算异构计算,首先必须了解什么是异构,不同的计算机架构就是异构,上文书我们讲过计算机架构了,就是为了引出异构的概念,按照指令集划分或者按照内存结构划分,但是我觉得只要两片CPU型号不一样就应该叫异构(这个想法先保留,对错不确转载 2021-08-15 00:07:54 · 925 阅读 · 0 评论 -
ubuntu16.04配置CUDA编程环境
环境:RTX3060+ubuntu 16.04+NVIDIA-Driver 455.45.01+cmake 3.5.1+CUDA 11.1+KDevelop 4.7.3环境配置:NVIDIA驱动、cmake、CUDA配置方法见:ubuntu 16.04 配置运行KintinuousKDevelop配置:命令行输入:sudo apt-get install kdevelop数组相加-程序代码打开KDevelop,新建工程,“New From Template…”-“Standard”-原创 2021-08-14 15:17:33 · 369 阅读 · 0 评论 -
【CUDA 基础】1.0 并行计算与计算机架构
并行计算与计算机架构并行计算与计算机架构Big Picture并行计算并行性计算机架构Flynn’s Taxonomy根据内存划分总结Abstract: 本文从总体上给出了CUDA编程的Big picture,后续所有的文章都在本文的基础上详细展开。Keywords: 并行计算,串行编程,并行编程,计算机架构,并行性,异构架构,CUDA并行计算与计算机架构Big Picture学习CUDA主要参考《CUDA C编程权威指南》。结构:CUDA想要运行起来并不困难,但是想要写得好,真的需要研究转载 2021-08-13 23:30:06 · 298 阅读 · 0 评论 -
ONNX教程
一. 简介ONNX (Open Neural Network Exchange)- 开放神经网络交换格式,作为框架共用的一种模型交换格式,使用 protobuf 二进制格式来序列化模型,可以提供更好的传输性能我们可能会在某一任务中将 Pytorch 或者 TensorFlow 模型转化为 ONNX 模型(ONNX 模型一般用于中间部署阶段),然后再拿转化后的 ONNX模型进而转化为我们使用不同框架部署需要的类型,ONNX 相当于一个翻译的作用。典型的几个线路:Pytorch->ONNX->原创 2021-08-08 00:14:59 · 1498 阅读 · 0 评论 -
TensorRT用自带trtexec实现onnx转engine的用法说明
TensorRT自带的trtexec在bin目录下,是一个可执行文件。运行./trtexec -h其中给出了 model options、build options、 inference options和system options等。上次我们使用TensorRT的pyhton API进行序列化模型和前向推理,这次介绍使用trtexec转模型。1.从固定尺寸的onnx转cudaEngine./trtexec --explicitBatch --onnx=./resnet50.onnx --sa原创 2021-08-01 22:59:37 · 4481 阅读 · 0 评论 -
GeForce RTX 3060 Laptop GPU with CUDA capability sm_86 is not compatible with the current PyTorch in
1、问题运行pytorch程序时报错:GeForce RTX 3060 Laptop GPU with CUDA capability sm_86 is not compatible with the current PyTorch installation.The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 compute_37.If you want to use t转载 2021-08-01 12:35:12 · 3805 阅读 · 3 评论 -
cmake教程
cmake1什么是 CMake2入门案例一:单个源文件2.2、编写 CMakeLists.txt2.3、编译项目3.入门案例二:多个源文件4.入门案例三:多个目录,多个源文件5.入门案例四:自定义编译选项6.入门案例五:安装和测试7.入门案例六:添加环境检查8.入门案例七:添加版本号9.入门案例八:生成安装包静态库10.入门案例九:生成安装包动态库11参考1什么是 CMake你或许听过好几种Make工具,例如GNU Make ,QT的qmake ,微软的MS nmake,BSD Make(pmake),转载 2021-07-23 23:11:58 · 548 阅读 · 0 评论 -
torch.onnx.export()函数详解
torch.onnx.export(model, args, f, export_params=True, verbose=False, training=False, input_names=None, output_names=None, aten=False, export_raw_ir=False, operator_export_type=None, opset_version=None, _retain_param_name=True, do_constant_folding=False, ex原创 2021-07-10 23:29:51 · 7079 阅读 · 0 评论 -
【从零开始学深度学习编译器】六,TVM的编译流程详解
TVM的编译流程详解一. 前言二. TVM编译流程详解三,总结四,参考一. 前言上一篇文章对TVM Relay和Pass进行了介绍,但还没有介绍整体的编译流程。这一篇文章将继续介绍一下TVM的编译流程,即TVM是如何将深度学习框架的模型转换成Relay IR之后进一步编译和优化为硬件可以执行的IR,再将这个底层IR和运行时库以及模型参数打包为一个tvm.Module返回。关于为什么要将底层IR和运行时库以及模型参数打包,根据官方文档可以知道这样是为了可以更方便的保存底层IR和运行时库,做到一次编译,可持转载 2021-07-05 22:49:26 · 1312 阅读 · 0 评论 -
TensorRT优化原理和TensorRT Plguin总结
TensorRT优化原理和TensorRT Plguin总结1. TensorRT优化原理2. TensorRT开发基本流程3. TensorRT Network Definition API4. TensorRT Plugin4.1 实现plugin4.2 编译plugin.so动态库4.3 在TensorRT中加载plugin5. plugin实例1. TensorRT优化原理TensorRT加速DL Inference的能力来源于optimizer和runtime。其优化原理包括四个方面:L转载 2021-05-23 23:12:20 · 1392 阅读 · 0 评论 -
实现TensorRT自定义插件(plugin)自由!
@TOC本文主要讲解:TensorRT自定义插件的使用方式如何添加自己的自定义算子前言随着tensorRT的不断发展(v5->v6->v7),TensorRT的插件的使用方式也在不断更新。插件接口也在不断地变化,由v5版本的IPluginV2Ext,到v6版本的IPluginV2IOExt和IPluginV2DynamicExt。未来不知道会不会出来新的API,不过这也不是咱要考虑的问题,因为TensorRT的后兼容性做的很好,根本不用担心你写的旧版本插件在新版本上无法运行。目前的p转载 2021-05-22 23:46:20 · 3504 阅读 · 1 评论 -
jetson naon 安装 mxnet
jetson naon 安装 mxnet一 下载 1.8.x release 版本二 安装 依赖三 更新 cmake四 编译 mxnet4.1 进入代码目录:4.2 新建环境变量脚本 env.build4.3 修改 config.mk4.4 编译:4.5 安装五 验证一 下载 1.8.x release 版本1.8 版本可以跟 cuda-10.02 兼容, 同时兼容 faster-mobile-retinafacegit clone -b v1.8.x --recursive https://git原创 2021-04-25 22:49:56 · 317 阅读 · 0 评论 -
Pytorch转ONNX转TesnorRT加速推理过程
前言我们训练好深度学习模型后,这时其仍然需在特定的深度学习框架下运行,往往不能进行高性能推理。NVIDIA提供了一套高效推理的框架——TensorRT,可将已训练好的模型转为TensorRT引擎格式,然后进行高效推理。对于Pytorch用户而言,该技术路线为:pytorch model–>onnx file–>TensorRT engine因此,我们需要做的只有三步:将Pytorch模型转为ONNX作为中间格式;将ONNX文件转为TensorRT引擎(格式包括:FP32、FP16、转载 2021-04-22 15:21:55 · 1147 阅读 · 0 评论 -
对Pytorch网络进行可视化
对pytorch模型进行可视化主要包括以下几种方法:1.使用tensorboard2.使用netron3.使用torchviz1.使用tensorboard进行可视化# -*-coding:utf-8 -*-# --------------------# author: cjs# time: 20200910# usage: 进行pytorch模型的可视化# packages: pytorch, tensorflow, tensorboard, tensorboardX# ------原创 2021-04-21 08:32:17 · 326 阅读 · 0 评论 -
【从零开始学TVM】三,基于ONNX模型结构了解TVM的前端
基于ONNX模型结构了解TVM的前端0x0. 介绍0x1. 使用TVM加载ONNX模型并预测0x2. TVM是如何将ONNX转换成Realy IR的?0x4. 总结0x5. 推荐阅读本文基于Pytorch导出的ONNX模型对TVM前端进行了详细的解析,具体解答了TVM是如何将ONNX模型转换为Relay IR的,最后还给出了一个新增自定义OP的示例。其实在TVM中支持编译多种目前主流的深度学习框架如TensorFlow,Pytorch,MxNet等,其实它们的前端交互过程和本文介绍的ONNX也大同小异,希原创 2021-04-19 16:06:32 · 297 阅读 · 0 评论 -
TensorRT Python API笔记
基本概念1 LoggerAPI概述:为Builder/ICudaEngine/Runtime对象提供logger创建所需参数:min_severity,参数就是 trt.Logger.INTERNAL_ERROR/WARNING/ERROR/VERBOSE 等成员变量:无成员函数:log(severity, msg)其他作用:无2 BuilderAPI概述:通过 INetworkDefinition 对象创建 ICudaEngine 对象。创建所需参数:Logger对象成员变量:模型转载 2021-04-18 12:30:14 · 1847 阅读 · 0 评论 -
Jetson Nano实现基于YOLO-V4及TensorRT的实时目标检测
一.背景1.英伟达SOC,2020年最新推出的Jetson Nano B01,价格亲民(99$)。支持GPU,性能高于树莓派且兼容性比较好。嵌入式平台适合验证算法的极限性能。2.YOLO-V4是YOLO目标检测系列最新版,精度和速度较YOLO-V3都有提升,One-stage架构实时推理性能较好。相比而言,尚在开发中的YOLO-V5未被官方承认,且算法上没有太多创新,更像是YOLO-V4.5。3.TensorRT在深度学习算法部署环节十分重要,基于GPU推理,能够成倍提升FPS。二.资源JetPa转载 2021-04-15 23:53:24 · 2301 阅读 · 0 评论 -
模型结构可视化工具-Netron在线使用
Netron在线网址:https://lutzroeder.github.io/netron/打开一个onnx模型如下图所示:原创 2021-04-15 22:34:50 · 2215 阅读 · 0 评论 -
pytorch中使用TensorRT
代码网址:https://github.com/darkknightzh/TensorRT_pytorch参考网址:tensorrt安装包的sample/python目录https://github.com/pytorch/examples/tree/master/mnist此处代码使用的是tensorrt5.1.5在安装完tensorrt之后,使用tensorrt主要包括下面几段代码:1. 初始化import tensorrt as trtimport pycuda.driver as原创 2021-04-15 21:09:52 · 565 阅读 · 0 评论 -
ONNX笔记三
1.Motivation:现如今,各大主流深度学习框架都有着自己独有的特点与魅力,吸引着广大科研与开发人员,例如:Caffe2:方便机器学习算法和模型大规模部署在移动设备PyTorch:PyTorch是一个快速便于实验深度学习框架。但是由于其高度封装,导致部分function不够灵活TensorFlow:TensorFlow 是一个开放源代码软件库,是很多主流框架的基础或者依赖。几乎能满足所有机器学习开发的功能,但是也有由于其功能代码过于底层,学习成本高,代码冗繁,编程逻辑与常规不同等缺点。此外还转载 2021-04-14 14:11:37 · 377 阅读 · 0 评论 -
Pytorch转ONNX-理论篇
文章转载于:GiantPandaCV作者:立交桥跳水冠军编辑:GiantPandaCV这篇是第一部分,理论篇,主要介绍了和代码无关的一些宏观问题。再接下来我会专门写一篇实战篇,针对OpenMMlab中一些具体代码做分析,说明Pytorch转化ONNX过程中的一些代码上的技巧和注意事项(1)Pytorch转ONNX的意义一般来说转ONNX只是一个手段,在之后得到ONNX模型后还需要再将它做转换,比如转换到TensorRT上完成部署,或者有的人多加一步,从ONNX先转换到caffe,再从caffe到t转载 2021-04-11 11:31:27 · 306 阅读 · 0 评论 -
ONNX笔记二
0x0. 前言接着上篇文章,继续探索ONNX。这一节我将主要从盘点ONNX模型部署有哪些常见问题,以及针对这些问题提出一些解决方法,另外本文也会简单介绍一个可以快速用于ONNX模型推理验证的框架ONNXRuntime。如果你想用ONNX作为模型转换和部署的工具,可以耐心看下去。今天要讲到的ONNX模型部署碰到的问题大多来自于一些关于ONNX模型部署的文章以及自己使用ONNX进行模型部署过程中的一些经历,有一定的实践意义。0x1. 导出ONNX这里以Pytorch为例,来介绍一下要把Pytorch模型导转载 2021-04-10 14:25:09 · 3789 阅读 · 1 评论 -
ONNX笔记一
0x1. 什么是ONNX?简单描述一下官方介绍,开放神经网络交换(Open Neural Network Exchange)简称ONNX是微软和Facebook提出用来表示深度学习模型的开放格式。所谓开放就是ONNX定义了一组和环境、平台均无关的标准格式,来增强各种AI模型的可交互性。换句话说,无论你使用何种训练框架训练模型(比如TensorFlow/Pytorch/OneFlow/Paddle),在训练完毕后你都可以将这些框架的模型统一转换为ONNX这种统一的格式进行存储。注意ONNX文件不仅仅存储了转载 2021-04-10 10:55:48 · 723 阅读 · 0 评论 -
Pytorch中transforms.Compose()的使用
torchvision介绍torchvision是pytorch的一个图形库,它服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision.transforms主要是用于常见的一些图形变换。以下是torchvision的构成:torchvision.datasets: 一些加载数据的函数及常用的数据集接口;torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等;torchvision.transforms:原创 2021-03-22 14:20:32 · 15272 阅读 · 3 评论 -
【从零开始学深度学习编译器】一,深度学习编译器及TVM 介绍
0x1. 为什么需要深度学习编译器?深度学习编译器这个词语,我们可以先拆成两个部分来看。首先谈谈深度学习领域。从训练框架角度来看,Google的TensorFlow和FaceBook的Pytorch是全球主流的深度学习框架,另外亚马逊的MxNet,百度的Paddle,旷视的MegEngine,华为的Mindspore以及一流科技的OneFlow也逐渐在被更多人接受和使用。这么多训练框架,我们究竟应该选择哪个?如果追求易用性,可能你会选择Pytorch,如果追求项目部署落地,可能你会选择TensorFlo转载 2021-03-20 22:46:01 · 933 阅读 · 0 评论 -
TensorRT笔记(15)使用深度学习框架
使用深度学习框架14.使用深度学习框架14.1 使用TensorFlow14.1.1 冻结TensorFlow图14.1.2 冻结Keras模型14.1.3 将冻结图转换为UFF14.1.4 使用TensorFlow RNN权重14.1.4.1 TensorRT支持的TensorFlow RNN单元14.1.4.2 维护TensorFlow和TensorRT之间的模型一致性14.1.4.3 工作流程14.1.4.4 转储TensorFlow权重14.1.4.5 加载权重14.1.4.6 将权重转换为原创 2021-02-13 22:53:03 · 334 阅读 · 0 评论 -
TensorRT笔记(14)部署TensorRT优化模型
部署TensorRT优化模型13.部署TensorRT优化模型13.1 云端部署13.2 部署到嵌入式系统13.部署TensorRT优化模型创建包含优化推理模型的计划文件后,可以将该文件部署到生产环境中。如何创建和部署计划文件将取决于您的环境。例如,您可能对模型具有专用的推理可执行文件,该可执行文件可加载计划文件,然后使用NVIDIA®TensorRT™Execution API将输入传递给模型,执行模型以进行推理,最后读取模型的输出。本节讨论如何在某些常见的部署环境中部署TensorRT。13.1原创 2021-02-13 21:57:07 · 947 阅读 · 1 评论 -
TensorRT笔记(13)使用多实例GPU(MIG)
使用DLA12.使用多实例GPU(MIG)12.1 GPU分区12.2 对TensorRT应用程序的影响12.3 配置NVIDIA MIG12.使用多实例GPU(MIG)多实例GPU或MIG是NVIDIA Ampere GPU架构中的一项新功能,可将用户定向的单个GPU划分为多个较小的GPU。通过使裸机,GPU直通或多个vGPU上的并行计算工作负载有效共享GPU,可以提高GPU利用率。物理分区为专用的计算和内存片提供QoS,并在部分GPU SM上独立执行并行工作负载。对于GPU SM或内存利用率较低的原创 2021-02-13 21:32:43 · 2095 阅读 · 0 评论 -
TensorRT笔记(12)使用DLA
使用DLA11.使用DLA11.1 在TensorRT推理期间在DLA上运行11.1.1 示例:带有DLA的sampleMNIST11.1.2 示例:在网络创建期间为层启用DLA模式11.2 DLA支持的层11.3 GPU后备模式11.使用DLANVIDIA®DLA™(深度学习加速器)是用于深度学习操作的固定功能加速器引擎。 DLA旨在进行卷积神经网络的完整硬件加速。 DLA支持各种层,例如卷积,解卷积,完全连接,激活,合并,批处理规范化等。有关NVIDIA®TensorRT™层中DLA支持的更多信息原创 2021-02-11 12:02:43 · 2116 阅读 · 1 评论 -
TensorRT笔记(11)使用量化网络
使用量化网络10.使用量化网络10.1 使用TensorFlow的量化意识训练(QAT)10.2 将Tensorflow转换为ONNX量化模型10.3 导入量化的ONNX模型10.使用量化网络量化网络由显式量化和反量化节点组成,以便将张量从FP32转换为INT8,反之亦然。NVIDIA®TensorRT™支持带有QuantizeLinear和DequantizeLinear节点的量化ONNX模型。量化张量xy = saturate((x / y_scale) + y_zero_point), wh原创 2021-02-11 11:32:01 · 615 阅读 · 3 评论 -
TensorRT笔记(10)使用循环
使用循环9.使用循环9.1 定义循环9.2 形式语义学9.3 嵌套循环9.4 局限性9.5 用循环替换IRNNLayer和IRNNv2Layer9.使用循环NVIDIA®TensorRT™支持类似循环的结构,这对于循环网络很有用。 TensorRT循环支持扫描输入张量,张量的递归定义以及“扫描输出”和“最终值”输出。9.1 定义循环循环由循环边界层定义。ITripLimitLayer指定循环迭代多少次。IIteratorLayer使循环可以在张量上迭代。IRecurrenceLayer指定一原创 2021-02-10 11:38:31 · 465 阅读 · 0 评论