模型部署
文章平均质量分 80
@BangBang
这个作者很懒,什么都没留下…
展开
-
TensorRT 精度debug分析工具
tensorRT还提供了一套可用于engine生成过程中debug的工具,包括Polygraphy和。这些小工具用处很大,值得花时间进一步研究。原创 2024-06-08 14:25:30 · 516 阅读 · 0 评论 -
J3 部署(检测和分割)
【代码】J3 部署(检测和分割)原创 2023-06-23 14:27:58 · 175 阅读 · 0 评论 -
Yolov5更换上采样方式( 最近邻 / 双线性 / 双立方 / 三线性 / 转置卷积)
l1.2. 双线性插值(Bi-Linear interpolation)1.3. 双立方插值(Bi-Cubic interpolation)1.4 三线性插值(Trilinear Interpolation)当align_corners = True时,线性插值模式(线性、双线性、双三线性和三线性)不按比例对齐输出和输入像素,因此输出值可以依赖于输入的大小这里我将原本的最近邻插值的上采样方式替换为转置卷积;有人原创 2023-06-07 21:18:33 · 2985 阅读 · 2 评论 -
手把手教你部署FreeYOLO
本章将讲解如何将torch训练好的权重文件转换为ONNX文件,并如何部署回到等框架下。什么是FreeYOLO?这是笔者的一个业余目标检测项目,结合了YOLOX的SimOTA和YOLOv7的网络结构的版的YOLO检测器,是目前笔者唯一在维护的业余项目了,感兴趣的读者可以点开另一篇文章来了解一下这个FreeYOLO项目,我们后续的内容就是在这个项目的基础上去讲解相关的部署。所以,为了方便后续内容的学习,这里建议读者下载笔者的FreeYOLO项目,并按照项目中给出的文件来完成相关环境的配置。原创 2023-06-06 10:32:21 · 284 阅读 · 0 评论 -
NHWC和NCHW数据排布及转换(模型部署)
其中C表示的通道数可能有多种情况,例如,RGB图片格式的通道为3通道,R(红色)、G(绿色)、B(蓝色)各占一个通道,表示图片中每个像素点都有三个通道值,每个通道值范围是[0~255],三个通道的叠加呈现出一个像素的颜色。RGB图像还有四通道的表示,除了RGB三通道之外,还有一个alpha通道,表示透明度。在intel GPU加速的情况下,希望在访问同一个channel的像素是连续的,一般存储选用NCHW也就是输入数据格式为NCHW,这样在做CNN的时候,在访问内存的时候就是连续的了,比较方便。原创 2023-05-11 18:12:47 · 2877 阅读 · 0 评论 -
超强目标检测器RT-DETR(超过yolov8)——保姆级部署教程
众所周知,在目标检测领域,YOLO 系列模型一直充当着老大哥的角色。虽然其检测性能表现优异,但一直被广为诟病的便是其后处理过于繁琐且耗时,不好优化且不够鲁棒。最近,基于的端到端检测器(DETR)取得了显著的性能。然而,DETR的高计算成本问题尚未得到有效解决,限制了它们的实际应用,并阻止它们充分利用无后处理的优点,例如非最大值抑制(NMS)。于是乎,百度近期又基于 DETR实现并开源了第一个实时的端到端物体检测器RT-DETR,有效的避免 NMS 导致的推理延迟同时提升性能。原创 2023-05-10 14:13:11 · 5500 阅读 · 1 评论 -
Pytorch模型转Caffe
github上实现的。原创 2023-03-21 17:37:31 · 782 阅读 · 0 评论 -
ncnn部署(CMakelists.txt)
打开VS2013/VS2019的X64命令行(注意不是cmd),我这里以V32013环境进行编译。注意:cmake -G…这条命令有三个需要换成之前安装protobuf-3.4.0的根目录。表示编译是通过vs2013打开,有如下可以选择的选项。原创 2023-03-08 10:54:02 · 608 阅读 · 0 评论 -
NCNN+Int8+yolov5部署和量化
本文提出shufflev2-yolov5的部署和量化教程;剖析了之前yolov5s之所以量化容易崩坏的原因;ncnn的fp16模型对比原生torch模型精度可保持不变;[上图,左为torch原模型,右为fp16模型]ncnn的int8模型精度会略微下降,速度在树莓派上仅能提升5-10%,其他板子暂未测试;原创 2023-02-25 16:54:55 · 1044 阅读 · 0 评论 -
python简单解析打印onnx模型信息
(TensorProto类型),其中node中存放了模型中所有的计算节点,input存放了模型的输入节点,output存放了模型中所有的输出节点,之后,我们获得的就是一个ModelProto,它包含了一些版本信息,生产者信息和一个GraphProto。这里用python,将onnx中包含的有用的信息打印出来,进行一个直观可视化。里面又包含了四个repeated数组,它们分别是。(ValueInfoProto类型),(ValueInfoProto类型)和。(NodeProto类型),原创 2023-02-16 17:41:40 · 1042 阅读 · 0 评论 -
基于ncnn的yolov5模型部署
这里为什么修改,nihui大佬的解释是u版yolov5是支持动态尺寸推理的,但是ncnn天然支持动态尺寸输入,无需reshape或重新初始化,给多少就算多少。u版yolov5将最后Reshape层把输出的grid写死了,导致检测小图时会出现检测框密密麻麻布满整个画面,或者根本检测不到东西。: 下采样32倍的输出节点name为419,下采样16倍的输出节点name为405,下采样8倍的输出节点name为out,3 ) .打开生成的.param文件,去除不支持的网络层。的编译环境下,配置NCNN。原创 2023-02-16 00:28:37 · 752 阅读 · 0 评论 -
cuda学习(5):使用cuda核函数加速warpaffine
放射变换(warpaffine),主要解决图像的缩放和平移来处理目标检测中常见的预处理行为。比如有一张猫的图片,对图片进行letterbox变换,将图片进行缩放,并且长边对齐,左右填充,这个时候用warpaffine就合适进行变换实现。warpaffine说明warpaffine是对图像做平移缩放旋转变换进行综合统一描述的方法warpaffine也是一个很容易实现cuda并行加速的算法。原创 2022-10-04 17:49:36 · 2677 阅读 · 1 评论 -
cuda学习(4):共享内存
共享内存因为更靠近计算单元,所以访问速度更快共享内存通常可以作为访问全局内存的缓存使用,比如全局内存有一块内存你会经常访问使用的话,如果每次都到全局内存去拿效率相对比较低,这个时候可以考虑先搬到共享内存中,然后再共享内存中频繁访问,这样效率就会高很多。利用共享内存实现线程间的通信共享内存通常与__syncthreads同时出现,这个函数时同步block内的所有线程,全部执行到这一行才会往下走。原创 2022-10-04 16:13:53 · 2496 阅读 · 0 评论 -
cuda学习(3):核函数
核函数是cuda编程的关键通过xxx.cu创建一个cudac程序文件,并把cu交给nvcc编译(nvcc 是nvidia的c++编译器,编译cudac程序,是c++的超集),才能识别cuda语法可以看到红框2中,编译.cpp文件用的CXX来做的,编译.cu文件是通过cuda操作的。__global__表示核函数,由host调用。__device__表示为设备函数,由device调用。核函数内部的代码是在GPU上运行的,因此如果现在核函数内部调用某个函数,需要用__device__原创 2022-10-04 15:09:07 · 4009 阅读 · 2 评论 -
cuda学习(2):异步任务管理——stream
流(stream)是一种基于context之上的任务管道抽象,一个context可以创建n个流;如果想要在cuda上实现高性能异步多并发,可以通过流来实现任务的异步控制。nullptr是默认流每个线程都有自己的默认流。原创 2022-10-03 17:10:31 · 1308 阅读 · 0 评论 -
cuda学习(1): 内存Memory
计算单元要访问Pinned Memory, 通过PICE接口,到主板,再到内存条得到数据,GPU可以直接访问Pinned Memory。memory是cuda中很重要的知识点,通常和高性能有关系,你利用的好memory的一些特性就能实现很多高性能的场景。,在酒店不够的时候,选择性的把你的房间腾出来给其他人交换用(对于整个Host Memory内存条而言,操作系统区分为。,锁定给你一个人用,其他人不可以来占用它。说明整个内存分配和数据传输都是正确的。(逻辑区分,物理上是同一个东西)),这就可以容纳更多人了。原创 2022-10-03 15:34:24 · 2764 阅读 · 1 评论 -
利用Tensorrt实现int8量化
int8量化是利用int8乘法替换float32乘法实现性能加速的一种方法1.对于常规的模型有:y=kx+b,此时x,k,b都是float32,对于kx的计算使用float32的乘法2.对于int8模型有:y=tofp32(toint8(k)toint8(x))+b,其中int8int8结果为int 163 因此int8模型解决的问题是如何将float32合理转换为int8(合理的方法包括:KL散度,重新训练等),使得精度损失最小。原创 2022-09-18 14:50:22 · 1819 阅读 · 1 评论 -
tensorrt高级2:YoloV5 模型导出、编译到推理(源码讲解)
1.修改export_onnx时导出参数,使得动态维度指定为batch,去掉width 和height的指定。2.导出时,对yolo.py进行修改,使得后处理能够简化,并将anchor合并到onnx中3.预处理部分采用warpaffine,对图像进行平移和缩放。原创 2022-09-18 10:48:56 · 1030 阅读 · 0 评论 -
tensorrt 高级(1):完整的分类器实现
这里input_batch,input_channel,input_height,input_width可以从egine中获取,这里为了方便直接写死了。6) 推理完后,将out_put_device数据拷贝到out_put_host中,并执行流同步,等待所有操作结束。有了onnx文件,就可以利用tensorrt进行分类模型的推理了,在推理前需要配置好。,就是需要的分类概率值,然后拿到label,以及对应的confidence。1 ) 分配存储输入图片的空间,包括device和host。原创 2022-09-15 22:59:13 · 1019 阅读 · 0 评论 -
Jetson Nano 部署(5):: Jetson Nono YOLOv5实战部署流程
这个目录下,它是可以支持Yolov2,Yolov3,Yolov2-tiny,Yolov3-tiny的一些测试,也就是说DeepStream已经内在支持了Yolov2,Yolov3,Yolov2-tiny,Yolov3-tiny的部署。开发版相连的键盘、鼠标以及显示器,而是在别的电脑上可以远程去Nano开发版进行操作,这样的话,就可以非常方便的开发。要登录开发板的话,需要知道开发版的IP地址,通过Nano开发版相连的键盘,通过。可以在自己本地电脑远程操作开发版的界面,这样会更方便开发。原创 2022-08-19 11:26:17 · 3460 阅读 · 0 评论 -
Jetson Nano 部署(4) : Tensorrt Nano硬件搭建
① 用于主存储器的microSD卡插槽② 40 针扩展接头③ 用于5V电源输入或设备模式的Micro-USB接口④ 千兆以太网接口⑤ USB 3.0插槽,有4个⑥ HDMI输出端口,如果加一个HDMI转VGA连接线的话,就可以连接VGA的显示器⑦ Display Port接口⑧ 用于5V电源输入的直流桶式插座⑨ MIPI CSI-2摄像头接口,如果使用USB摄像头的话,就可以插在⑤中USB的插槽上。Nano结构顾从前视图(Front View)可以看出,...原创 2022-08-18 15:54:55 · 1217 阅读 · 0 评论 -
Jetson Nano 部署(3):TensorRT介绍
TensorRT是一种高性能的神经网络推理优化器和运行时推理引擎,应用于项目落地部署。首先需要有训练好的模型,然后经过TensorRT优化器的优化处理,利用TensorRT Runtime Engine进行落地部署。TensorRT是用于优化训练后的深度学习模型,以实现高性能推理的SDKTensorRT包含用于训练后的深度学习模型的深度学习推理优化器,以及用于执行的runtme优点: TensorRT能够以更高的吞吐量和更低的延迟运行深度学习模型,用TensorRT可以加速模型的推理。...原创 2022-08-18 14:36:52 · 3405 阅读 · 0 评论 -
Jetson Nano 部署(2):DeepStream介绍
上图所示是Nvidia用于视频分析的软件栈:最上面的是Pytho API以及C++ API为应用和服务提供相关接口,再下面面是,再下面一层是CUDA-X包括CUDA、Tensor RT、Triton Inference Server、MultiMedia等用于加速的库,底下的是的计算平台比如Jetson和T4等,也就是说上面的软件栈可以部署在Nvidia的硬件平台上,比如Jetson,T4。...原创 2022-08-18 11:30:47 · 1049 阅读 · 1 评论 -
Jetson Nano 部署(1):YOLOv5 目标检测实战介绍
YOLOv5是最近非常流行的目标检测深度学习算法,与其他深度学习算法如相比,其在推理速度和精度上均有较好的性能。本博文针对YOLOv5 4.0进行实战部署介绍,YOLOv5 4.0有4个版本分别为s, m,l,x,本文介绍如何将YOLOv5s部署到开发版上。YOLOv5 原理及实战介绍。...原创 2022-08-18 10:46:07 · 1359 阅读 · 3 评论 -
模型部署ONNX学习
模型部署onnx原创 2022-08-09 15:03:56 · 342 阅读 · 0 评论 -
Tensorflow lite Android端部署图像分类
原文博客:Doi技术团队链接地址:https://blog.doiduoyi.com/authors/1584446358138前言Tensorflow2之后,训练保存的模型也有所变化,基于Keras接口搭建的网络模型默认保存的模型是h5格式的,而之前的模型格式是pb。Tensorflow2的h5格式的模型转换成tflite格式模型非常方便。本教程就是介绍如何使用Tensorflow2的Keras接口训练分类模型并使用Tensorflow Lite部署到Android设备上。本教程源码:http.原创 2021-11-22 09:15:43 · 844 阅读 · 0 评论 -
基于Tensorflow2 Lite在Android手机上实现时间序列温度预测(二)
前言Tensorflow2之后,训练保存的模型也有所变化,基于Keras接口搭建的网络模型默认保存的模型是h5格式的,而之前的模型格式是pb。Tensorflow2的h5格式的模型转换成tflite格式模型非常方便。本教程就是介绍如何使用Tensorflow2的Keras接口训练分类模型并使用Tensorflow Lite部署到Android设备上。训练和转换模型以下是使用Tensorflow2的keras搭建的一个Lstm模型实现温度预测,本教程主要是介绍如何在Android设备上使用Tensorf原创 2021-11-10 16:37:32 · 3470 阅读 · 1 评论 -
基于 tensorflow的时间序列温度预测并将模型转换为TFLite格式 (一)
文章目录1 准备数据导入需要的库导入数据划分训练特征和标签参数设置2 单变量单步从数据集中提取温度观察数据随时间变化的情况标准化设置绘图函数将特征和标签切片建模训练模型3 多变量单步从数据集中划分特征和标签压强、温度、密度随时间变化绘图将数据集转换为数组类型并标准化写函数来划分特征和标签将特征和标签切片建模训练模型绘制预测图4 多变量多步从数据集中划分特征和标签将特征和标签切片编写绘图函数建模训练模型绘制温度信息文章转自:https://www.heywhale.com/mw/project/5fe2f3原创 2021-11-09 16:57:01 · 2770 阅读 · 0 评论