| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Jetson NX的那些事 -> 正文阅读 |
|
[人工智能]Jetson NX的那些事 |
Jetson NX 踩坑记录
为什么用Jetson NX相比于Jetson nano,拥有更高的算力。并且实验室刚好有一块闲置的Jetson NX。并且,Jetson NX支持INT8的浮点计算,Jetson nano只支持float16的浮点计算。 下面是一些Jetson系列的对比图 NX的配置我是用学长配置好的NX,并不是自己配置的,所以一开始没有自己去镜像烧录。 个人建议直接去NVIDIA上找教程,然后进行镜像烧录。 开发板ARM与电脑X64的区别区别大了,呜呜。环境配置完全不一样,不一样就算了,还很难配。
模型部署部署是模型落地的最后一步,也是最重要的一环。 模型部署,听上去很高大上,但是实际上就是把深度学习的算法在开发板上运行起来。至于深度学习的模型,你管它是.pt,.pth,.onnx,.engine啥的,只要run起来就算部署了。 那么问题来了,为什么会出现那么多模型推理框架呢? 因为移动端(开发板)的算力有限,模型推理转化就是为了让模型更加轻量(运行推理的更快) 推理框架推理较为简单的推理方法多是各大厂商为了适配自己的产品推出的,如Intel的OpenVINO、ARM的ARM NN、Nvidia的TensorRT,腾讯的NCNN等。
但这些框架在实际应用场景中会遇到不少问题:
因此,一套可以让我们在任意硬件上高效运行任意模型的统一框架就显得尤其有价值。 而TVM正是这样一套框架。但是可能是我孤陋寡闻,没怎么听说TVM。 ONNX(Open Neural Network Exchange )还是听过的吧,一个开放的生态系统,是一种深度模型的开放格式,它使 AI 开发人员能够随着项目的发展选择合适的工具,增强模型的交互性。ONNX 得到广泛支持,可以在许多框架、工具和硬件中找到,实现不同框架之间的互操作性并简化从研究到生产的路径,也就是说不同框架(TensorFlow/Pytorch/Paddle)训练出来的模型都可以转换成onnx模型进行存储以后后续的推理。 ONNX可以用来做为推理转化的中间桥梁。 TensorRT使用Jetson NX,当然使用自家的TensorRT推理。 TensorRT的功能TensorRT有如下五个功能:
图1.TensorRT 的垂直和水平层融合和层消除优化简化了 GoogLeNet Inception 模块图,减少了计算和内存开销。
TensorRT的使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LuC5ow4h-1650705963190)(C:\Users\BlackFriday\AppData\Roaming\Typora\typora-user-images\image-20211125123422839.png)]
Process通过一番探索,一共发现三种方式:
法一直接根据TensorRT官方GitHub教程wang-xinyu/tensorrtx: Implementation of popular deep learning networks with TensorRT network definition API (github.com)来,注意版本对应。通过查看,我发现在转成.engine的过程中,是采用源码编译的方式进行,也就是说需要相关的网络结构文件。重点是要C++的网络结构文件,通过.wts进行cmake生成,这我就麻了啊,我用的是别人改进的 法二运气不错,通过搜索,发现竟然有好几种转.engine的方式,其中一种就是通过Jetson自带的 onnx模型提取
engine 转化
结果转化成功了,好耶ヾ(?゚▽゚)ノ。 然后就开始找要怎么运行.engine文件。最终在TensorRT的yolov5仓库中发现了yolov_trt.py,但是运行这个文件需要.engine以及.io文件,但是采用法二似乎没有生成什么.so的编译文件,通过cmake得到的还会生成.so文件。。。不是很懂。
法三也就是我在愁的时候,发现还有Deepstream这个东东,这个是NVIDIM研发的SDK,用于构建智能的视频流读取,建立深度学习部署的pipline。 是通过配置一个对应的txt文件运行。打算尝试一下,后面发现还是需要.so动态编译库,寄! 考虑到Deepstream的部署也需要make,所以打算使用 DeepStream这真是一个让你又爱又恨的玩意儿呢。。。 安装配置建议先找一个别人写的教程,然后配合官网教程(主)使用。 Quickstart Guide — DeepStream 6.0 Release documentation (nvidia.com)
升级JetPack的教程,官网上也有:(101条消息) NVIDIA Jetson Xavier NX升级JetPack 4.4至4.6.1_jch_wang的博客-CSDN博客 运行Deepstream有相关的example,可以尝试运行一下。 通过Deepstream运行Yolov5,可以直接搜索,找相关的教程以及GitHub仓库。
坑
python调用DeepstreamDeepstream是C++,那么我们怎么通过模型与完成相关的后续任务呢? Deepstream5.0之后就实现的Python的接口编写: 运行这些example也需要环境配置(具体看官网),该仓库实现了许多Deepstream进行目标检测的Python example,在他们的基础上进行修改。
使用NVIDIA自带的检测模型以及跟踪模型NvDCF同时跑四路视频(一帧感觉会卡0.5s),跑一路视频(摄像头)可以达到实时检测的效果。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rt9bsSX0-1650705963192)(C:/Users/BlackFriday/AppData/Roaming/Typora/typora-user-images/image-20220423170257257.png)] Experience
.net/qq_51302564/article/details/122951287) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 9:56:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |