文章目录

  • 前言
  • 准备工作
  • 一、protobuf-3.11.4安装
  • 二. trtpy编译安装
  • 2.1 修改CMakeLists.txt文件
    • 2.2 注释和删除部分代码文件
      • 注释和deepsort有关的代码
      • 删除和deepsort有关的文件
  • 三、部署yolov7项目
    • 3.1 导出yolov7-tiny.onnx
    • 3.2 运行
  • 参考

前言

详解tensorRT的高性能部署方案,并附有强大的yolov5、yolox、retinaface、arcface、scrfd、deepsort、alphapose的高性能实现,低耦合,哪来即可用,集成到项目中
repo地址:https://github.com/shouxieai/tensorRT_cpp


准备工作

安装之前请先安装好CUDA、cuDNN、TensorRT和Pytorch
Jetson Nano CUDA、cuDNN、TensorRT与Pytorch环境配置

protobuf-3.11.4、tensorRT_Pro源码安装包下载
链接:https://pan.baidu.com/s/1mrIgGoMo0bq6otGhlh-E3A
提取码:6sb3

一、protobuf-3.11.4安装

安装protobuf-3.11.4依赖项

sudo apt-get install autoconf automake libtool curl make g++ unzip libffi-dev -y

卸载系统旧版本的protobuf

sudo apt-get remove libprotobuf-dev
# which protoc
#运行完“which protoc”会显示一个protoc的路径,如果没有显示则下面这条命令不必执行
rm /usr/local/bin/protoc
#具体路径以“which protoc”显示的为准
#如果原来是源代码安装的,cd 到项目目录输入sudo make uninstall

解压protobuf-3.11.4.zip,打开终端,cd进入解压的文件夹

unzip protobuf-3.11.4.zip
cd protobuf-3.11.4

编译安装

# 自动生成configure配置文件
./autogen.sh# 配置环境
./configure# 编译源代码(要有耐心!)
make -j4# 安装
sudo make install

刷新共享库

sudo ldconfig

成功后需要使用命令测试

protoc -h


拉取tensorRT_Pro项目

git clone https://github.com/shouxieai/tensorRT_Pro.git
cd tensorRT_Pro

二. trtpy编译安装

2.1 修改CMakeLists.txt文件

为了libtorch和OpenCV能同时编译,在CMakeLists.txt中添加一行

set(CMAKE_CXX_FLAGS "-D_GLIBCXX_USE_CXX11_ABI=1")

设置HAS_PYTHON为ON,配置python路径,修改CUDA_GEN_CODE匹配自己的设备,Nano是“53”

Jetson平台下Cuda环境能够自动找到CUDA、cuDNN和TensorRT文件夹路径一般不需要配置。如果编译有问题,找一下自己的路径更改一下。

设置protobuf路径

设置include_directories,link_directories,使用系统的python3.6的include中的Python.h等头文件和python动态链接库。

2.2 注释和删除部分代码文件

注释如下代码,编译deepsort时,在Jetson平台会报错,开发者的建议是删除和deepsort有关的cpp,所以用到deepsort的target就都注释了,接下来还需要删除与deepsort和这两个target相关代码

注释和deepsort有关的代码

删除和deepsort有关的文件

修改这里改成python3

删除和deepsort有关的文件

修改src/main.cpp,删除图中红框的部分,去除CMakeLists.txt中注释了的arcface和fall两个target的调用。

删除src\application中的app_arcface.cpp与app_fall_recognize.cpp,因为这个两个cpp都调用了deepsort。

删除src\application\tools中的deepsort相关文件。

删除src\application\app_python中的deepsort相关文件。

2.3 编译安装trtpy
CMakeLists.txt修改完成后,进入tensorRT_Pro文件夹

# 打开终端,新建build文件夹并且cd进入
mkdir build && cd build# 使用cmake生成编译相关文件
cmake ..# 执行make yolo -j4
make yolo -j4 # 确保yolo能够正确编译后,执行make编译安装trtpy,否则请进行详细检查确保yolo编译成功
sudo make pyinstall -j4

安装完成如下图

三、部署yolov7项目

3.1 导出yolov7-tiny.onnx

拉取yolov7代码

git clone https://github.com/WongKinYiu/yolov7.git

修改代码
如果直接用官方的yolov7-tiny.pz预训练模型,则在models/yolo.py的Detect类下修改;
如果用的是自己训练的模型,用netron工具查看末尾节点是否为IDetect,若是则在models/yolo.py的IDetect类下修改;

修改这三处地方

再到export.py下修改

导出onnx模型

cd yolov7
python export.py --dynamic --grid --weights=best.pt

查看网络结构

netron yolov7-tiny.onnx

结构如下图则为成功

3.2 运行

源码修改

yolo模型的推理代码主要在src/application/app_yolo.cpp文件中,需要推理的图片放在workspace/inference文件夹中,将上述修改后导出的ONNX文件放在workspace/文件夹下。源码修改较简单主要有以下几点:

若果是自己训练的模型则改动1、2、3点,使用预训练模型则改动第1、点

  1. app_yolo.cpp 177行 “yolov7"改成"best”,构建best.pt模型
  2. app_yolo.cpp 100行 cocolabels修改为mylabels
  3. app_yolo.cpp 25行 新增mylabels数组,添加自训练模型的类别名称

具体修改如下

test(Yolo::Type::V7, TRT::Mode::FP32, "best")              //修改1 177行"yolov7"改成"best"for(auto& obj : boxes){...auto name    = mylabels[obj.class_label];              //修改2 100行cocolabels修改为mylabels...
}static const char* mylabels[] = {"have_mask", "no_mask"}; //修改3 25行新增代码,为自训练模型的类别名称

编译
编译生成可执行文件.pro,保存在workspace/文件夹下,指令如下:

$ cd tensorRT_Pro-main
$ mkdir build && cd build
$ cmake .. && make -j8

耐心等待编译完成(PS:需要一段时间),make -j参数的选取一般时以CPU核心数两倍为宜,参考自make -j参数简介,Linux下CPU核心数可通过lscpu指令查看,jetson nano的cpu核心数为4。

模型构建和推理
编译完成后的可执行文件.pro存放在workspace/文件夹下,故进入workspace文件夹下执行以下指令

$ cd workspace    // 进入可执行文件目录下
$ ls              // 查看当前目录下所有文件
$ ./pro yolo      // 构建模型并推理

模型构建和推理图解如下所示。在workspace/文件夹下会生成best.FP32.trtmodel引擎文件用于模型推理,会生成best_Yolov7_FP32_result文件夹,该文件夹下保存了推理的图片。

参考

1、Jetson Xavier NX Trtpy安装
2、Ubuntu卸载protobuf并安装3.6.0版本的protobuf
3、OpenCV 编译链接 undefined reference to ‘cv::imread(std::string const&, int)’

Jetson Nano 配置tensorRT_Pro环境相关推荐

  1. 国产版Jetson Nano学习篇2—详细讲解Jetson Nano的开发环境配置和其 Ubuntu 18.04系统的操作,入门必看

    目录 前言 1.开发环境配置 1.1联网 1.2系统汉化和安装中文输入法 1.2.1系统汉化(按需求选择) 1.2.2安装中文输入法 1.3更换关屏设置 1.4更新源和部分软件(仅供参考) 2.Pyt ...

  2. Jetson Nano配置踩坑全记录

    Jetson Nano配置踩坑全记录 Jetson Nano相关参数:JetPack 4.6,cuda 10.2, SD卡内存:512G 一.Jetson Nano系统镜像烧录 在Nvidia官网下载 ...

  3. 【Jetson Nano 入门】环境配置汇总

    文章目录 前言 一.镜像烧写 二.PWM风扇自动调速 三.使用MicroUSB在电脑打开终端 四.VNC实现局域网及网线直连通信 五.SSH文件传输 六.状态监控软件Jtop 七.检查CUDA.Ope ...

  4. Jetson Nano Pytorch+TensorRT环境配置系统移植到另一张TF卡

    PS:使用本文章中dd写入的方式,可以用于备份TF卡/SD卡/硬盘里操作系统/环境变量和系统数据,随时备份,随时恢复,内容完全一样 ! ! 目录 PS:使用本文章中dd写入的方式,可以用于备份TF卡/ ...

  5. Jetson Nano配置YOLOv5并实现FPS=25

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.版本说明 JetPack 4.6--2021.8 yolov5-v6.0版本 使用的为yolov5的yolov5n.pt,并利用tensorr ...

  6. jetson nano配置过程中踩过的坑

    一.更换源地址后apt-get update出错 解决办法: 进入桌面,打开设置 ------软件更新---------勾选所有选项,再次运行更新命令 二.python3及pip安装 sudo apt ...

  7. Jetson nano : 配置虚拟环境virtualenv。

    Anaconda官方不支持aarch64架构,所以Jetson nano不能直接使用Anaconda,可以使用Archiconda或者virtualenv. 简单说说virtualenv使用. 安装p ...

  8. Nvidia jetson nano 配置 CUDA9 CUDNN7.1.5

    卸载cuda10.cudnn7.5 查看已安装cuda #通过dpkg命令,查看相关cuda安装的包 dpkg -l | grep -i cuda 查询出来是这些,可以根据查询出来的包来用apt-ge ...

  9. jetson nano 烧录、更换镜像源、配置xrdp、安装Archiconda、配置CUDA、安装pytorch环境一条龙服务

    jetson nano 烧录.更换镜像源.配置xrdp.安装Archiconda.配置CUDA.安装torch环境一条龙服务 一.jetson nano烧录 1.jetson nano上电 2.镜像烧 ...

  10. 已阻止应用程序访问图形硬件_玩转智能硬件之Jetson Nano(三)深度学习环境搭建...

    0.前言 iotboy:玩转智能硬件(一)Jetson Nano安装篇​zhuanlan.zhihu.com iotboy:玩转智能硬件(二)Jetson Nano配置篇​zhuanlan.zhihu ...

最新文章

  1. 抽屉效果----mmdrawercontroller和viewdeck
  2. C#类中操作UI层控件状态[原]
  3. Chrome 私人珍藏-stylus插件实现个性化百度界面定制
  4. oracle索引对模糊查询,Oracle索引
  5. 无穷级数求和7个公式_大家看,用反证法判别级数敛散性(送微积分同学)!...
  6. 数论 —— 整数分解
  7. linux操作系统下部署Javaweb项目教程
  8. Confirm Hosts Registration with the server failed
  9. excel显著性检验_数据分析系列 10/32 | Excel方差分析之单因素方差分析
  10. python模块导入及属性:import
  11. Keymob锁屏:三屏切换 开启移动入口平台新时代
  12. 【ECU】汽车电子/嵌入式工程师学习网站、资源、路线
  13. 武田呈报mobocertinib的最新结果,进一步证实EGFR外显子20插入+ mNSCLC患者的临床收益
  14. 数学与计算机科学学院英文,牛玉贞 - 福州大学 - 数学与计算机科学学院
  15. java从json数组中提取数据,从JSON数组中提取数据
  16. springboot中整合mybatis及简单使用
  17. 如何解决MacOS Big Sur,打印错误:ERROR invalidcontent?
  18. 【操作系统】读者写者问题——写者优先、寿司店问题 题目+答案
  19. JS控制网页中Flash影片的播放(附带各参数)
  20. 【MOS】OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1)

热门文章

  1. Bugku CTF之xxx二手交易市场
  2. 树模型系列(ID3、C4.5、CART)
  3. 晶科科技净利润三连降,靠氢能支撑能否学会独立行走?
  4. PKU-CPC 2019 简要题解
  5. 计算机网络通信行业职业分析
  6. CCIE找工作指南(上)by 网络雄猫
  7. 什么时候我们走向平台级,难道一定是资本的特权?
  8. 《181个生活与工作中的潜规则:黄金法则》EXE电子书
  9. 腾讯云使用Docker安装redis哨兵并使用SpringBoot连接测试
  10. hdu 6699 Block Breaker BFS