02-Jetson Xavier NX 训练自己的yolov4-tiny模型并利用TensorRT完成部署(Python API)

2023-05-16

记录原因:

  • 因前面完成了yolov4-tiny源码的部署,可以跑到50FPS。但那个跑的是别人的模型,可以识别80类,但是在特定的情况下比如识别螺丝螺帽,只需要两种,在训练的时候直接把种类改掉就好了,但是在Jetson Xavier NX上应该怎么利用TensorRT进行加速的(未进行加速的推大概在5.XFPS,根本无法满足实际应用的需要),所以本文主要是解决“训练完成后得到pth如何在Jetson板子上利用TensorRT进行加速”
  • 我们在部署的时候一般的模型格式转化为:Pytorch -> onnx -> trt

一、pytorch转onnx

  • pytorch转onnx的部分,参考下面网址,博主在测试predict有pth转onnx的函数,咱们直接调用即可:
    bubbliiiing/yolov4-tiny-pytorch
  • 如果要查看转换完成的onnx网络,可使用下面的工具导入查看netron -onnx网络查看工具
  • 经函数测试,我们可以把onnx拷贝到jetson板子上。

二、onnx转trt

  • 这部分的话有两种方式:
    • 通过官方提供给我们的工具trtexec工具,此处转换是可以成功,但是我没有找到可以运行推理trt的代码,参考那些网上的一些trt推理的代码经常会报错;
    • 第二种方式当然就是大佬们的封装了,我参考了下面博主的代码:
      TensorRT部署 Jetson可用,这个工程文件里面提供了weight --> onnx,onnx–>trt的两种文件,同时也还有trt的推理程序。

因为大佬们已经做了很多封装工具,像我这种小菜鸡就直接用了。

  • 1.我们需要根据他的程序把onnx文件转为trt文件,但是这个时候是需要一个cfg配置文件参考的,所以我们需要根据我上一个教程中,把yolov4-tiny的cfg文件下载下来,然后还要修改 ,把种类classes换成我们需要识别的种类数,比如我在实验中检测的是螺丝螺帽,所以是两种,把classes改成2(在最后的地方,需要修改两处)

  • 2.运行下面指令进行trt模型的转换

python3 onnx_to_tensorrt.py -m models --verbose

其中,models表示的onnx的名称,省略了.onnx, --verbose表示我想看到具体的一些日志信息(如果没有的话,可以就会感觉等很久,但是实际也是运行的)

  • 3.需要种类名称,因为我们这个是只有2类模型,而原生的yolov4-tiny有80类,所以需要我们修改下名称:具体文件的名字路径为: tensorrt_demos/utils/yolo_classes
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BMjpUhN9-1679477632087)(https://note.youdao.com/yws/res/b/WEBRESOURCE76c29df88bed2bec536163ace184482b)]

在这里插入图片描述

  • 4.检查一下可用摄像头,输入以下指令:
ls -l /dev/video*
  • 5.运行trt_yolo.py推理文件即可实现推理,5表示摄像头标号:
python3 trt_yolo.py --usb 5 -m models
  • 6.查看效果(帧率可到达55FPS左右):
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

02-Jetson Xavier NX 训练自己的yolov4-tiny模型并利用TensorRT完成部署(Python API) 的相关文章

随机推荐

  • Traceback (most recent call last): File “/home/myp4/.local/bin/pip“, line 5, in <module> from

    https blog csdn net weixin 41135864 article details 89817343 Traceback most recent call last File home myp4 local bin pi
  • sys.stderr.write(f“ERROR: {exc}”)

    https www cjavapy com article 1701
  • 为什么PBFT需要三阶段

    首先 xff0c 第一阶段是预提议 xff08 pre prepare xff09 xff0c 这一阶段的主要原因是使用领导可以降低通信复杂度 xff0c 但是我对其没了解 xff0c 就不瞎说了 接着是提议 xff08 prepare x
  • 文件的自定义包发送接收

    需求 对一个特定的文件进行分片发送 xff0c 构造数据包 xff0c 发送数据包 xff0c 接收数据包并提取有效数据 xff0c 对数据组合还原为原文件 设计 当前 xff0c 基于socket的网络编程已成为当今不可替代的编程方法 x
  • 阿里云服务器图形化界面

    https blog csdn net qq 43264202 article details 119578968
  • 安卓开放端口

    https blog csdn net weixin 39737831 article details 109965587
  • Ubuntu14.04 支持ESM

    https discourse ubuntu com t ubuntu advantage client 21788
  • 开启关闭ICMP

    echo request http www xoxxoo com index index article id 780 html redirect https blog csdn net weixin 39684454 article de
  • AD使用技巧

    AD快捷键 快捷键要处在英文模式的情况下才可以使用 xff1a AD测量快捷键 xff1a R AD对齐快捷键 xff1a A AD切换单位快捷键 xff1a Q AD改变栅格快捷键 xff1a G AD视图配置快捷键 xff1a L AD
  • 多传感器融合框架搭建

    架构 src include apps xff1a 节点文件 front end node cpp 前端节点data pretreat node cpp 数据预处理节点back end node cpp 后端节点loop closing n
  • 多传感器融合框架-ESKF

    架构 基本同图优化框架差不多 内容简述 数据预处理节点 订阅imu原始数据 xff0c gnss原始数据 xff0c 完成数据时间戳同步 点云畸变补偿发布如下消息 畸变补偿后的点云 synced cloudgnss里程计 synced gn
  • OpenCV笔记4.3

    C 43 43 读取目录下所有文件名称 1 包含头文件 96 span class token macro property span class token directive hash span span class token dir
  • 半小时内实现Esp32-Cam模型训练和图像识别

    Esp32 Cam图像识别 一 网页显示视频流1 Linux式例程2 MicroPython式例程步骤1 下载Thonny步骤2 烧录Esp32 Cam固件步骤3 运行相应代码 3 Arduino式例程步骤1 下载Arduino步骤2 安装
  • MANIFOLD 2-G开发 之 利用ROS话题编程实现UART1串口通讯

    目录 MANIFOLD 2 G开发笔记1 项目描述2 遇到的问题3 解决方案4 示例代码5 注意事项6 资源附件6 运行与调试 MANIFOLD 2 G开发笔记 本博客内容将记录MANIFOLD 2 G 开发过程中遇到的问题及解决方案 xf
  • ONOS源码笔记--机制

    app注册 private ApplicationId appId appId 61 coreService registerApplication 34 org onosproject fwd 34 注册应用 xff0c 一般在activ
  • git 本地分支与远程分支关联

    github上已经有master分支 和dev分支 在本地 git checkout b dev 新建并切换到本地dev分支 git pull origin dev 本地分支与远程分支相关联 github上没有dev分支 git check
  • 做设计师还是程序员?一张图你就明白!

    平时大家相安无事 xff0c 可一旦项目滑了水 栽了坑 二重奏就开始没完没了的唱起来了 请看下图 xff1a 你的桌子是有什么 小编反手一摸 xff0c 还好小编的头发还再 你头发呢 xff1f 相信这里有很多学习java的朋友 xff0c
  • 【ROS】动态链接库(.so文件)的生成和调用

    ROS 动态链接库 xff08 so文件 xff09 的生成和使用 引言 xff11 生成so文件 xff12 调用so文件 xff13 运行结果结语 引言 由于项目有涉及到源代码是否交付的选项 xff0c 想着如果不交付源代码 xff0c
  • 用TortoiseGit删除git仓库中的文件/文件夹

    用TortoiseGit删除git仓库中的文件 文件夹 点击删除后出现弹框 xff0c 点击删除 删除后会显示移除一个文件 xff1b 想要还原可以在当前文件夹中右键选择TortoiseGit gt 还原 xff08 revert xff0
  • 02-Jetson Xavier NX 训练自己的yolov4-tiny模型并利用TensorRT完成部署(Python API)

    记录原因 xff1a 因前面完成了yolov4 tiny源码的部署 xff0c 可以跑到50FPS 但那个跑的是别人的模型 xff0c 可以识别80类 xff0c 但是在特定的情况下比如识别螺丝螺帽 xff0c 只需要两种 xff0c 在训