
模型部署
文章平均质量分 76
记录学习模型部署的历程
豫州刺史
It ain't over till its over
展开
-
使用TensorRT对Yolov6进行部署
之前介绍过ONNX,ONNX是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。可以使得在Pytorch、Tensorflow或其他框架下训练好的模型采用相同的格式来存储模型数据并进行交互。转载 2023-12-19 17:02:02 · 182 阅读 · 0 评论 -
TensorRT 深入介绍
在上一篇文章中,笔者对TensorRT做了简单的介绍,相信读者朋友们看了之后对TensorRT已经有了一个初步的认识。今天笔者就在这里对TensorRT做一个更加详细的剖析,让大家有个更加深入的了解,去看TensorRT到底做了什么优化,以及到底要怎么使用它。这样我们才能做到除了知其然,还做到了知其所以然。原创 2023-12-19 15:41:02 · 1069 阅读 · 0 评论 -
TensorRT 简单介绍
对于算法工程师来说,相信大家已经对TensorRT耳熟能详了,那么这个TensorRT是什么呢?其实,TensorRT是一个可以在NVIDIA各种GPU硬件平台下运行的,同时也是一个高性能的,可以为深度学习的落地应用起到的作用。TensorRT是由C++、CUDA、Python三种语言编写成的一个库,其中核心代码的语言为C++和CUDA,当然,它也有Python的API接口。原创 2023-12-19 15:01:49 · 715 阅读 · 0 评论 -
模型部署之模型转换
很多时候,用户的一段代码可能涉及非框架底层的计算,例如下面这段代码,涉及外部库的计算,训练框架自身是无法追踪记录到的。这个时候我们可以把这部分代码作为一个自定义算子,由用户定义这个算子在计算图中作为一个节点所记录的信息。实际实现时,这些计算会被写到一个 Function 或者 Module 中,然后用户在 Function 或者 Module 中定义这个计算对应的计算节点的信息表达,这样每次调用这个定义好的 Function 或者 Module,就能对应在计算图中记录相应的算子信息。转载 2023-12-18 20:38:48 · 121 阅读 · 0 评论 -
模型部署概述
模型训练重点关注的是如何通过训练策略来得到一个性能更好的模型,其过程似乎包含着各种“玄学”,被戏称为“炼丹”。整个流程包含从训练样本的获取(包括数据采集与标注),模型结构的确定,损失函数和评价指标的确定,到模型参数的训练,这部分更多是业务方去承接相关工作。一旦“炼丹”完成(即训练得到了一个指标不错的模型),如何将这颗“丹药”赋能到实际业务中,充分发挥其能力,这就是部署方需要承接的工作。转载 2023-12-18 20:38:39 · 130 阅读 · 0 评论 -
使用TensorRT对Yolov5进行部署【基于Python】
model:就是需要转为ONNX的pth模型,只有源模型的结构和权重,才能转化为有效的ONNX模型。:如果启用了动态模式(dynamic=True),则将模型转移到CPU上进行导出;否则使用原始的模型。: 如果启用了动态模式,将输入张量转移到CPU上进行导出;否则使用原始的输入张量。为什么要把模型和输入数据转移到CPU上?CPU 是所有计算环境中最通用和兼容的硬件。当你将一个模型导出为一个通用格式,如 ONNX,目的通常是确保它可以在不同的环境和硬件上运行。原创 2023-12-18 17:03:38 · 1328 阅读 · 0 评论 -
Win11下TensorRT环境部署
cuda和cudnn网上有很多安装教程,这里列举了一些,就不详细说了,具体链接如下:youkuaiyun.com - CUDA安装教程(超详细) 原创zhihu.com - 深度学习之CUDA+CUDNN详细安装教程tencent.com - CUDA安装教程(超详细)youkuaiyun.com - CUDA与cuDNN安装教程(超详细) 原创juejin.cn - cuda和cudnn安装教程tencent.com - Cuda和cuDNN安装教程(超级详细)我们可以根据个人的cuda版本去安装TensorRT版本。原创 2023-12-15 23:03:41 · 1262 阅读 · 0 评论 -
TensortRT:sample.py:DeprecationWarning:
解决方案:使用 config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, common.GiB(1)) 来替代被弃用的 config.max_workspace_size。解决方案:使用 network.add_pooling_nd(…解决方案:使用 conv1.stride_nd = (1, 1) 来替代 conv1.stride。警告信息:与 conv1.stride = (1, 1) 相同,同样需要使用 stride_nd。原创 2023-12-15 23:23:39 · 597 阅读 · 0 评论 -
CUDA lazy loading is not enabled. Enabling it can significantly reduce device memory usage and speed
延迟加载:延迟内核从主机加载到GPU,直到内核被调用。这也只加载已使用的内核,这可能会显著节省设备端内存。这也将加载延迟从应用程序的开始推迟到第一次调用内核的时候——总的二进制加载延迟通常会显著减少,但也会转移到应用程序的后期。CUDA 11.7带来了对新的NVIDIA Open GPU内核模块的兼容性支持,另外一个重要的亮点是。NVIDIA Linux驱动测试版和NVIDIA GPU内核驱动开源版一起发布的是CUDA 11.7。注意,这个特性只兼容CUDA版本>= 11.7编译的库。原创 2023-12-15 23:10:57 · 3807 阅读 · 1 评论 -
NCNN 源码学习【三】:数据处理
从这个可以看出来,获取ncnn::Mat的三个通道的数据,是要用channel索引出来的,这里就是一个需要留意的点,ncnn::Mat的数据存储,channel间的需要对齐,不一定是连续的,也就是不要理所当然的用channel(0)的指针,自己加加加想去访问其他channel的数据,很容易翻车(我就因为这个翻车过),这个我们后面有时间可以好好写一写ncnn的数据排布。这个计算的细节还是很多的,大家感兴趣的可以去仔细研究一下,这里就不细写了,ncnn的代码为例效率,可能写的不是特别美观。原创 2023-12-13 16:27:32 · 907 阅读 · 0 评论 -
NCNN 源码学习【二】:模型加载
Input: 层的类型,这里表示它是一个输入层。data: 层的名称,这里将该层命名为data。0: 输出数量,输入层不产生输出,所以是0。1: 输入数量,这是一个常规的输入层,因此只有一个输入(即图像本身)。data: 输入blob的名称。3227227: 输入数据的维度。这里指的是输入图像有3个通道(彩色图像),宽和高分别为227像素。: 层的类型,表示这是一个卷积层。conv1: 层的名称。1: 输出数量,这层有一个输出。1: 输入数量,这层有一个输入。data。原创 2023-12-12 22:31:32 · 653 阅读 · 0 评论 -
NCNN 源码学习【一】:学习顺序
最近一段时间一直在做模型部署的工作,主要是利用NCNN部署到安卓端,跟着网上的博客和开源项目,做了很多工作,也学习到很多东西,但是对于NCNN的源码,并没有仔细的研究过,对我来说,仿佛是一个神秘的存在一样,接下来,将会对NCNN的源码进行研究,加深对于NCNN的理解。原创 2023-12-12 16:15:06 · 249 阅读 · 0 评论 -
解决No version of NDK matched the requested version问题
打开Android Studio的 SDK Manager 或者通过点击Files菜单下Settings 进入 设置页面搜索Android SDK 找到SDK Tools。选择要下载的NDK和CMake, 选中Show PackagesDetails后就能选择自己需要的版本了, 本项目根据报错信息来看需要的是21.0.6113669的NDK。选中之后点击OK进行下载, 下载完成后,点击finish结束。再次运行代码就能解决这个问题了。原创 2023-12-12 15:11:44 · 2609 阅读 · 1 评论 -
cmd.exe /C “cd . && D:\Software\Android\SDK\ndk\21.4.7075529\toolchains\llvm\prebuilt\windows-x86_64
【代码】cmd.exe /C “cd . && D:\Software\Android\SDK\ndk\21.4.7075529\toolchains\llvm\prebuilt\windows-x86_64。原创 2023-12-11 23:20:21 · 679 阅读 · 2 评论 -
使用NCNN在华为M5部署MobileNet-SSD
文件是一个压缩文件,其中包含了 ncnn 框架在 Android 平台上使用 Vulkan 图形库加速的相关文件和代码。在 Android 平台上,ncnn 框架可以利用 Vulkan 的并行计算能力来进行神经网络模型的推理计算,以提升计算性能。ncnn-android-vulkan.zip 文件中包含了使用 ncnn 框架和 Vulkan 图形库进行推理计算所需的相关文件和代码,例如 ncnn 库文件、Vulkan 相关的动态链接库、示例代码等。原创 2023-12-11 21:50:33 · 286 阅读 · 0 评论 -
使用NCNN在华为M5部署Styletransfer
文件是一个压缩文件,其中包含了 ncnn 框架在 Android 平台上使用 Vulkan 图形库加速的相关文件和代码。在 Android 平台上,ncnn 框架可以利用 Vulkan 的并行计算能力来进行神经网络模型的推理计算,以提升计算性能。ncnn-android-vulkan.zip 文件中包含了使用 ncnn 框架和 Vulkan 图形库进行推理计算所需的相关文件和代码,例如 ncnn 库文件、Vulkan 相关的动态链接库、示例代码等。原创 2023-12-11 17:50:01 · 238 阅读 · 0 评论 -
NCNN:Cause: executing external native build for cmake
项目根目录下local.properties 文件增加自己的cmake 和 ndk配置;主要应该是cmake配置。原创 2023-12-11 16:57:28 · 206 阅读 · 0 评论 -
使用NCNN在华为M5部署Yolov5
文件默认的gradle是5.4.0版本,安装java12版本就好了,我图中之所以注释掉,是因为,我安装AS之前安装的是最新的JDK版本,结果出现不兼容问题,当时要不省级gradle版本,要不降低JDK版本,我选择了前者所以是7.5.0,所以大家可以在是先对应gradle版本安装JDK,后期会省去很多麻烦。这中间有个注意是想,我们在安装的时候jdk的时候,千万不要安装最新版本的,由于这个项目是三年前的,如果按照最新的jdk一定会和工程各种的不兼容。至于到底该按照哪个版本的jdk,可以参考下图,原创 2023-12-09 22:11:31 · 870 阅读 · 0 评论 -
更改Android Studio的.android和.gradle文件夹默认位置
这一步,为了省去麻烦,我并没有直接在我的目标位置新建文件夹,而是把C盘下的.android和.gradle文件夹整个复制过来,和SDK都在同一目录下,感觉这样可以减少一些文件的下载,而且出错了,这要把这个文件夹删除了就好了,比较便捷些。还有一点就是,也可以避免新建文件夹的时候命名写错,我就是写错了,写成了.gradel了。感觉有些操作还是能复制粘贴就复制粘贴吧。这个是我粘贴过后的样子,SDK、AS、.gradle、.android都在同一目录下。原创 2023-12-09 20:00:00 · 7059 阅读 · 0 评论 -
Could not resolve all dependencies for configuration ‘:app:androidApis‘.
看到这里我明白了,我一定是在哪里设置了一个老版的阿里云仓库地址,由于gradel默认是禁止不安全的。这个报错我仔细读了读,发现主要是当前阿里Maven的并不是十分安全,让我换一个安全的协议或者设置安全的协议,可是我并不记得这个URL地址在哪里设置过,,这个帖子的最后我提示:可以打开https://maven.aliyun.com看最新的地址。打开这个链接之后,我大概直到错在哪里了。把上面的仓库地址改成新的以后,重新加载,报错消失。原创 2023-12-08 23:20:09 · 1840 阅读 · 1 评论 -
CMake ‘3.10.2‘ was not found in PATH or by cmake.dir property.
最开始下载的是默认最高版本的cmake,默认是3.22.1,解决方案是,下载老版本:打开File —> Settings —> System settings —> Android SDK —> SDK Tools —> CMoke。在部署Yolov5到安卓端的过程中出现:CMake ‘3.10.2’ was not found in PATH or by cmake.dir property.这里千万要勾选show Package Details,只有这样,才会显示老版本。原创 2023-12-08 16:16:30 · 1035 阅读 · 0 评论 -
Android Studio Gradle下载慢解决方法
【代码】Android Studio Gradle下载慢解决方法。原创 2023-12-08 00:23:20 · 655 阅读 · 0 评论