项目环境部署(备注:Jetson NX 使用Tensorrt加速自训练yolov4-tiny模型)

2023-05-16

这里请注意几个主要问题:

本环境是使用刷机的完全新的环境进行的配置:

  • onnx的版本
  • protcbuf的版本问题
  • 相关的安装顺序的问题

这里默认已经获得了训练好的yolo的模型,这里常用的是在darknet框架,利用谷歌的colab进行在线云端训练YoloV4-Tiny模型,下面会以YoloV4和YoloV4-Tiny举例
如果不行,就加上sudo,给定权限

  1. 第一步是下载github上大佬的相关项目的demo
git clone https://github.com/jkjung-avt/tensorrt_demos.git
  1. 下载完文件后定位到ssd文件夹中执行 install_pycuda.sh
cd ${HOME}/project/tensorrt_demos/ssd
./install_pycuda.sh
  1. 接着需要安装onnx
sudo apt-get install protobuf-compiler libprotoc-dev
sudo pip3 install onnx==1.4.1
  1. 接着定位到plugins文件夹build相关程序
cd ${HOME}/project/tensorrt_demos/plugins
make
  1. 下载并转换yolo文件
    下载模型文件(这里会下载yolov4和yolov3的三个不同版本的文件)
cd ${HOME}/project/tensorrt_demos/yolo
./download_yolo.sh	

(重点补充) . 执行完这个步骤之后,注意,在进行第六步的时候,会报错:
报错信息如下:

TypeError: 1.0 has type numpy.float32, but expected one of: int, long, float

那么,该怎么办呢?这个是因为我们装的onnx和protobuf的版本的问题,当时装的protobuf是低版本的,也正是必须要先装低版本的protobuf你才能装好onnx,不然不可能装好onnx。

移除低版本的protobuf 3.0.0
使用sudo apt-get remove protobuf-compiler libprotoc-dev移除protobuf包。
需要注意,仅执行这个命令是卸载不干净protobuf的,如果你再装其他版本protobuf会导致多版本的protobuf存在。
执行如上指令以后还要删除库和头文件、执行文件:
sudo rm  /usr/local/bin/protoc
sudo rm  -rf /usr/local/include/google
sudo rm /usr/local/lib/libproto*
sudo pip3 uninstall protobuf

这里当你执行的过程中,可能会报错:

nvidia-yolov4@nvidiayolov4:~$ sudo rm  /usr/local/bin/protoc
 **rm: 无法删除'/usr/local/bin/protoc': 没有那个文件或目录** 
nvidia-yolov4@nvidiayolov4:~$ sudo rm  -rf /usr/local/include/google
nvidia-yolov4@nvidiayolov4:~$ sudo rm /usr/local/lib/libproto*
 **rm: 无法删除'/usr/local/lib/libproto*': 没有那个文件或目录** 
nvidia-yolov4@nvidiayolov4:~$ sudo pip3 uninsall protobuf
ERROR: unknown command "uninsall" - maybe you meant "uninstall"
nvidia-yolov4@nvidiayolov4:~$ sudo pip3 uninstall protobuf
The directory '/home/nvidia-yolov4/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Not uninstalling protobuf at /usr/lib/python3/dist-packages, outside environment /usr
nvidia-yolov4@nvidiayolov4:~$ sudo pip3 uninstall protobuf
The directory '/home/nvidia-yolov4/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Not uninstalling protobuf at /usr/lib/python3/dist-packages, outside environment /usr

上面标注为黑色的错误,注意,只要保证这些位置里面没有我们想要删除的这些文件就OK 了。
Not uninstalling protobuf at /usr/lib/python3/dist-packages, outside environment /usr这个错误,解决方法如下:
没关系,找到/usr/lib/python3/dist-packages这个目录,然后执行下面的这个操作就好
相关参考链接如下:

https://blog.csdn.net/zhubaoguai/article/details/80303456
sudo rm -rf protobuf-3.0.0.egg-info
sudo pip3 uninstall protobuf
The directory '/home/nvidia-yolov4/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Cannot uninstall requirement protobuf, not installed

这个就说明以及卸载好了

安装新版protobuf。(根据大佬的解释,他安装的是3.12.3我也就跟着安装这个版本)
解压、编译、安装
下载的地址如下:
https://github.com/protocolbuffers/protobuf/releases?after=3.15.0-rc1
这里我还把这个文件copy到了主目录下面,因为怕到时候其他地方出问题

sudo tar zxvf protobuf-all-3.12.3.tar.gz
cd protobuf-3.12.3
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig
安装protobuf的python模块
cd ./python
python3 setup.py build
python3 setup.py test
sudo python3 setup.py install

总结:要先安装低版本的protobuf,安装成功onnx后,再更新protobuf版本。

  1. 转换yolo文件这里分两个步骤
    1.将.weight模型文件转换成 .onnx 格式
    2.再将 .onnx文件转换成 .trt 格式
python3 yolo_to_onnx.py -m obj-yolov4-tiny
python3 onnx_to_tensorrt.py -m obj-yolov4-tiny -v
  1. 使用TRT运行yolov4、yolov4-tiny
    –usb 代表使用USB摄像机,我的是1,可以通过以下命令查看, --model则是选择特定模型:
ls /dev/video*
cd ${HOME}/project/tensorrt_demos
python3 trt_yolo.py --usb 1 --model obj-yolov4-tiny
ESC 即可退出该行程
注意要修改/home/nvidia-yolov4/tensorrt_demos/utils
该路径下面的yolo_classes.py
要将这个修改为我们的class
只有这样才能保证显示出来的为正确的class
  1. 测试效果
    yolov4在原darknet框架下运行帧率只有1FPS,使用tensorrt后可达到15FPS
    yolov4-tiny在原darknet框架下运行帧率只有10FPS,使用tensorrt后可达到50FPS

本篇文章主要参考以下两篇文章
参考一
参考二

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目环境部署(备注:Jetson NX 使用Tensorrt加速自训练yolov4-tiny模型) 的相关文章

  • windows通过vnc远程连接ubuntu

    windows通过vnc远程连接ubuntu 实验室的电脑装好了ubuntu16 04的系统 xff0c 显卡比较好 xff0c 想要跑程序的话人太多了 xff0c 不能大家都排队来使用 xff0c 因此我想使用windows直接连接ubu
  • vscode如何连接gitlab代码库

    零 前期准备工作 1 已安装好vscode xff0c 如未安装 xff0c 按如下地址下载并且安装 xff08 或参考其他安装教程 xff09 xff1a https code visualstudio com Download 2 已安
  • 对rtthread系统的理解

    写这个的目的就是记录下自己对rtthread系统框架的理解 xff0c 并不会对相关的知识点做介绍 xff0c 因为官方文档介绍的比较详细 xff08 也有介绍不细致的地方 xff09 xff0c 我没必要去摘录一遍 在工作中用rtthre
  • performance API 中什么指标可以衡量首屏时间

    performance timing loadEventEnd 返回当前网页 load 事件的回调函数运行结束时的 Unix 毫秒时间戳 如果该事件还没有发生 返回 0 performance timing navigationStart
  • C++中的双冒号

    文章目录 https www cnblogs com kimmychul p 3951229 html 另外 xff0c 在ros中 xff0c 创建的xxx msg xxx srv等文件中定义的变量a xff0c 在使用时要写packag
  • Python使用ros的TF变换

    https www cnblogs com xialuobo p 6097806 html
  • CMakeList.txt文件详解

    1 整体结构 CMakeList txt文件必须遵循以下的格式 xff1a 所需的CMake版本 xff08 cmake minimum required xff09 软件包的名称 xff08 project xff09 查找构建所需要的其
  • centos7.5 + ryu+mininet+docker+wireshark+ovs

    1 安装pip 没有python pip包就执行命令 yum y install epel release 执行成功之后 xff0c 再次执行yum install python pip 2 安装ryu4 30 pip install ry
  • 【C++学习】——(五)数组

    C 43 43 学习 xff08 五 xff09 数组 开篇 上一篇讲解了类型 xff0c 通过类型来开始本篇的学习 xff1b int a 10 上述代码中的a是什么类型呢 xff1f 相信很多人都知道是一个数组类型 xff0c 具体来说
  • openstack中ipv6三种获取IP地址方式

    前言 openstack共有三种用于ipv6的寻址的模式 xff0c 分别是dhcpv6 stateful dhcp stateless以及slaac 1 xff09 slaac模式 Address discovered from an O
  • 华为S5720-52X-PWR-LI/S5720-52X-LI交互机堆叠和VLAN配置

    主要配置流程为 xff1a 交换机设备上电通过console线或网线连接到交换机后 xff0c 进行参数和堆叠配置断电 xff0c 连接好光纤重新上电 1 首次登录交换机 使用Putty软件 xff0c 通过串口 xff0c 连接到交换机
  • 配置Intel REALSENSE相机的一些坑

    最近入手了一个intel REALSENSE相机 xff0c 看别人都是直接使用配套的USB3的线连接电脑就安装好了 xff0c 但是我却要倒霉的配置了一个下午 xff0c 终于在今天晚上配置好了 xff0c 记录一下这个下午踩过的坑 xf
  • 高斯滤波知识点总结——KF、EKF、UKF以及IF、EIF等

    高斯滤波知识点总结 KF EKF UKF以及IF EIF等 1 引言 本文是我在学习 Probabilistic Robotics 这本书中第三章 高斯滤波过程中的一些知识总结 本文主要是整理高斯滤波算法的知识点和一些讨论 xff0c 具体
  • Git 学习小结

    Git 安装和使用教程 git 提交 全部文件 git add git add xx命令可以将xx文件添加到暂存区 xff0c 如果有很多改动可以通过 git add A 来一次添加所有改变的文件 注意 A 选项后面还有一个句点 git a
  • ROS 串口

    64 TOC ROS学习笔记 ROS中使用串口进行通讯测试 参考两篇文献 xff0c 感谢原作者 xff1a https blog csdn net qq 44623066 article details 125626937 https b
  • sklearn库之sklearn.cluster.KMeans的学习

    这篇呢是接着上一篇kmeans的学习 xff0c 这篇主要是介绍调用机器学习的库来使用集成的kmeans 哈哈会调用就行 xff0c 主要学习呢就是看官方文档 xff0c 学习这个包装类的参数 xff0c 返回值以及它方法 这里面有好多ex
  • docker容器开启ssh端口

    docker容器开启ssh端口 启动一个docker容器 加端口 port 22 docker run dit p port 22 p port1 port restart span class token operator 61 span
  • PID中各个参数意义

    1 比例部分 xff1a PID是比例 积分 微分的简称 xff0c PID控制的难点不是编程 xff0c 而是控制器的参数整定 增大比例系数使系统反应灵敏 xff0c 调节速度加快 xff0c 并且可以减小稳态误差 但是比例系数过大会使超
  • 关于多线程,你必须知道的那些玩意儿

    进程与线程 概念 进程和线程作为必知必会的知识 xff0c 想来读者们也都是耳熟能详了 xff0c 但真的是这样嘛 xff1f 今天我们就来重新捋一捋 xff0c 看看有没有什么知识点欠缺的 先来一张我随手截的活动监视器的图 xff0c 分
  • 多传感器融合-搭建ROS工程

    多传感器融合搭建记录1 Tag3 0 一 安装Terminator二 vscode创建功能包三 ROS相关基础1 添加源文件2 添加launch文件3 ROS话题通讯 四 添加代码1 发布者publishera 点云发布类CloudPubl

随机推荐