Ubuntu 18.04/20.04 CV环境配置(中):Tensorrt + Pytorch安装配置

2023-05-16

Ubuntu 18.04/20.04 CV环境配置(上):CUDA11.1 + cudnn安装配置_Techblog of HaoWANG的博客-CSDN博客Ubuntu18.04 20.04 NVIDIA CUDA 环境配置与cudnn Tensorrt等配置与使用https://blog.csdn.net/hhaowang/article/details/125803582?spm=1001.2014.3001.5501

目录

TensorRT的好处

1. 版本选择

1.1 安装CUDA和cudnn

 1.2 安装Tensorrt

2. 下载文件

3.1 Tensorrt 编译

3.2 Pytorch安装

4. 环境设置

5. 卸载

6. 安装TRT Pose

7. 安装Realsense -ROS


什么是Tensorrt?参考知乎解释

什么是TensorRT - 知乎Tensor是一个有助于在NVIDIA图形处理单元(GPU)上高性能推理c++库。它旨在与TesnsorFlow、Caffe、Pytorch以及MXNet等训练框架以互补的方式进行工作,专门致力于在GPU上快速有效地进行网络推理。 如今现有的一些训…https://zhuanlan.zhihu.com/p/356072366

 

Tensor是一个有助于在NVIDIA图形处理单元(GPU)上高性能推理c++库。它旨在与TesnsorFlow、Caffe、Pytorch以及MXNet等训练框架以互补的方式进行工作,专门致力于在GPU上快速有效地进行网络推理。

如今现有的一些训练框架(例如TensorFlow)已经集成了TensorRT,因此可以将其用于加速框架中的推理。另外,TensorRT可以作为用户应用程序中的库,它包括用于从Caffe,ONNX或TensorFlow导入现有模型的解析器,以及用于以编程方式(C++或Python API)构建模型。

TensorRT的好处

在训练了神经网络之后,TensorRT可以对网络进行压缩、优化以及运行时部署,并且没有框架的开销。TensorRT通过combines layers,kernel优化选择,以及根据指定的精度执行归一化和转换成最优的matrix math方法,改善网络的延迟、吞吐量以及效率。

对于深度学习推理中,有5个用于衡量软件的关键因素:

  1. 吞吐量
  2. 效率
  3. 延迟性
  4. 准确性
  5. 内存使用情况

TensorRT通过结合抽象出特定硬件细节的高级API和优化推理的实现来解决这些问题,以实现高吞吐量、低延迟和低设备内存占用。


1. 版本选择

1.1 安装CUDA和cudnn

首先,按照上述历程安装配置CUDA11.1和cudnn8.0.4

 

 1.2 安装Tensorrt

下载TENSORRT 注意CUDA和CUDNN的版本对应版本,

NVIDIA TensorRT 7.x Download | NVIDIA Developericon-default.png?t=M666https://developer.nvidia.com/nvidia-tensorrt-7x-downloadNVIDIA Developer Program Membership Required | NVIDIA Developericon-default.png?t=M666https://developer.nvidia.com/nvidia-tensorrt-7x-downloadSupport Matrix :: NVIDIA Deep Learning TensorRT Documentationicon-default.png?t=M666https://docs.nvidia.com/deeplearning/tensorrt/support-matrix/index.html#software-version-platform

 注意这里选择deb包,因为采用这种方式安装会自动的安装cudnn, nvinfer, nvinfer-plugin,等必须配置

2. 下载文件

Tensorrt下载完成后执行如下命令

wget https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/7.2.2/tars/TensorRT-7.2.2.3.Ubuntu-18.04.x86_64-gnu.cuda-11.1.cudnn8.0.tar.gz
 
version="7.x.x.x"
os="<os>"
arch=$(uname -m)
cuda="cuda-x.x"
cudnn="cudnn8.x"
tar xzvf TensorRT-${version}.${os}.${arch}-gnu.${cuda}.${cudnn}.tar.gz
 

3. 编译安装

3.1 Tensorrt 编译

进入Tensor解压目录,依次pip安装即可。

注意: ros python版本为python2.7 需要安装 py2 & py3,否则无法使用ROS python


cd TensorRT-${version}/python
pip install tensorrt-*-cp3x-none-linux_x86_64.whl
cd TensorRT-${version}/uff
pip install uff-0.6.9-py2.py3-none-any.whl
cd TensorRT-${version}/graphsurgeon
pip install graphsurgeon-0.4.5-py2.py3-none-any.whl
cd TensorRT-${version}/onnx_graphsurgeon
pip install onnx_graphsurgeon-0.2.6-py2.py3-none-any.whl
 
pip install 'pycuda>=2019.1.1'
 

接着进入tensorRT下的uff文件夹安装whl(tensorflow会用到)

pip install uff-0.6.9-py2.py3-none-any.whl 

至此,Ubuntu与TensorRT安装成功!

3.2 Pytorch安装

 Pytorch&torchversion采坑系列
    Torch的目标在保证使用的方式非常简单的基础上最大化地保证算法的灵活性和速度。Torch的核心是流行的神经网络和简单易用的优化库,使用Torch能在实现复杂的神经网络拓扑结构的时候保持最大的灵活性,同时可以使用并行的方式对CPU和GPU进行更有效率的操作。在LuaJIT/C/CUDA等基础之上,Torch的主要特性如下:

  • 强大的N维数组操作的支持
  • 提供很多对于索引/切片等的常用操作
  • 常见线性代数计算的支持
  • 神经网络和基于能量的模型
  • 支持GPU计算

  我们说的pytorch在当前来说就是torch,如果你直接安装pytorch是安装不了的,根据我采坑情况来说,你需要去pytorch官网安装,禁止cmd 内pip 安装。
 

 Pytorch官网:PyTorch

Start Locally | PyTorch

安装版本需要与CUDA、CUDNN对应,选择LTS低版本1.8.2 PIP安装、Python版本、CUDA11.1(CUDNN8.0.X)

pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111

4. 环境设置


 
# 安装环境变量
gedit ~/.bashrc
加入如下环境
# cuda
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
 
# cudnn init
export CUDNN_HOME=/usr/local/cuda
# export LD_LIBRARY_PATH=${CUDNN_HOME}/lib64:$LD_LIBRARY_PATH
export CPLUS_INCLUDE_PATH=${CUDNN_HOME}/include:$CPLUS_INCLUDE_PATH
 
# tensorrt
export TENSORRT_HOME=/home/leo/TensorRT-7.2.2.3
export PATH=${TENSORRT_HOME}/bin:$PATH
export LD_LIBRARY_PATH=${TENSORRT_HOME}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${TENSORRT_HOME}/targets/x86_64-linux-gnu/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${TENSORRT_HOME}/lib
export CPLUS_INCLUDE_PATH=${TENSORRT_HOME}/include:$CPLUS_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${TENSORRT_HOME}/targets/x86_64-linux-gnu/include:$CPLUS_INCLUDE_PATH
 
激活环境
source ~/.bashrc

5. 卸载

# 非第一次安装的注意使用
 
dpkg -l|grep cuda
 
dpkg -l|grep nvidia
 
dpkg -l|grep tensorrt检查残留
 
同时检查/usr/loacal/目录下是否有cuda开头的残留
 
# 卸载cuda
sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" \
 "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" 
 
# 卸载驱动
sudo apt-get --purge remove "*nvidia*"
 
# 卸载依赖
sudo apt-get autoremove
 
# 查看/usr/local下是否还有cuda开头的文件夹,还有的话
cd /usr/local/cuda/bin
sudo ./cuda-uninstaller
全选,done
 
使用这样的命令删除/usr/local下的残留文件夹
sudo rm -r cuda*
 
# 清理环境变量
gedit ~/.bashrc
清理如下环境
# cuda
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
 
# cudnn init
export CUDNN_HOME=/usr/local/cuda
# export LD_LIBRARY_PATH=${CUDNN_HOME}/lib64:$LD_LIBRARY_PATH
export CPLUS_INCLUDE_PATH=${CUDNN_HOME}/include:$CPLUS_INCLUDE_PATH
 
# tensorrt
export TENSORRT_HOME=/home/leo/TensorRT-7.2.2.3
export PATH=${TENSORRT_HOME}/bin:$PATH
export LD_LIBRARY_PATH=${TENSORRT_HOME}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${TENSORRT_HOME}/targets/x86_64-linux-gnu/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${TENSORRT_HOME}/lib
export CPLUS_INCLUDE_PATH=${TENSORRT_HOME}/include:$CPLUS_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${TENSORRT_HOME}/targets/x86_64-linux-gnu/include:$CPLUS_INCLUDE_PATH
 
 
source ~/.bashrc
 
# 激活环境变量
 
记得卸载tensorrt中安装的pip包和pycuda
 
# 重新安装前记得重启
sudo reboot

6. 安装TRT Pose

https://github.com/NVIDIA-AI-IOT/trt_poseicon-default.png?t=M666https://github.com/NVIDIA-AI-IOT/trt_pose

git clone https://github.com/NVIDIA-AI-IOT/torch2trt
cd torch2trt
python setup.py install
# 加上pulgin会失败
 
pip install tqdm cython pycocotools
sudo apt-get install python3-matplotlib
 
git clone https://github.com/NVIDIA-AI-IOT/trt_pose
cd trt_pose
python setup.py install
 

7. 安装Realsense -ROS

ubuntu18.04+安装ros-melodic+安装realsense-ros包_Clover Fu的博客-CSDN博客自己在安装的时候参考了很多博客,但许多的方法很杂乱最后还失败了,这里综合下自己尝试成功且比较方便的方法,参考链接会在下文列出。安装ros-melodic参考:https://www.guyuehome.com/10082注:不同版本的ubuntu对应不同的ros版本,ubuntu18.04对应ros-melodic1、添加ROS软件源(TX2使用自带源即可,该步可省去)sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu https://blog.csdn.net/CloverFu/article/details/120056130

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

Ubuntu 18.04/20.04 CV环境配置(中):Tensorrt + Pytorch安装配置 的相关文章

  • ROS 教程之 vision: 摄像头标定camera calibration

    在上一个ROS教程视觉文章中 xff0c 我们使用usb cam包读入并发布了图像消息 xff0c 但是图像没有被标定 xff0c 因此存在畸变 ROS官方提供了用于单目或者双目标定的camera calibration包 这个包是使用op
  • ROS 基础: 在同一个节点里订阅和发布消息

    在一些应用中 xff0c 可能有的人需要在同一个节点中实现订阅一个消息 xff0c 然后在该消息的回调函数中处理一下这些数据后再发布到另一个topic上 ROS answers中也有人有相同的疑问 xff0c 这里贴出Martin Peri
  • ROS : 修改ROS源代码(overlaying package)

    ROS官方或者其他个人提供了很多package供大家使用 xff0c 但是随着学习的深入 xff0c 很多人可能想去修改这些package的源代码 xff0c ROS提供了一种称之为overlaying的机制 它允许 ROS原有安装的pac
  • graph slam tutorial :从推导到应用3

    为了更好地理解graph based slam的过程 xff0c 本文以二维平面的激光SLAM为例子 xff0c 先简单介绍如何根据传感器信息构建图 xff0c 即图优化的前端 xff08 front end xff09 然后再针对上篇博客
  • graph slam tutorial : 从推导到应用1

    前言 SLAM问题的处理方法主要分为滤波和图优化两类 滤波的方法中常见的是扩展卡尔曼滤波 粒子滤波 信息滤波等 xff0c 熟悉滤波思想的同学应该容易知道这类SLAM问题是递增的 实时的处理数据并矫正机器人位姿 比如基于粒子滤波的SLAM的
  • graph slam tutorial :从推导到应用2

    在上一部分中通过一个例子大致了解了graph based slam的优化过程 在本篇博客中将提升一个层次 xff0c 对图优化的求解过程进行推导 由于博文关注的在图构建好以后 xff0c 如何调整机器人位姿使误差最下 因此 xff0c 本文
  • graph slam tutorial : g2o 的使用

    g2o全称general graph optimization xff0c 是一个用来优化非线性误差函数的c 43 43 框架 如果阅读了前几篇graph slam tutorial的博客 xff0c 再去读 g2o xff1a a gen
  • Monocular slam 的理论基础(1)

    前言 LSD SLAM和ORB SLAM的出现 xff0c 使得单目slam最近成为了研究热点 单目SLAM一般处理流程包括track和map两部分 所谓的track是用来估计相机的位姿 而map部分就是计算pixel的深度 xff0c 如
  • Monocular slam 中的理论基础(2)

    三角法求深度 xff08 triangulation xff09 在知道了相机的轨迹以后 xff0c 使用三角法就能计算某个点的深度 xff0c 在Hartley的 Multiple view Geometry 一书中第10章 第12章都是
  • svo: semi-direct visual odometry 论文解析

    SVO 从名字来看 xff0c 是半直接视觉里程计 xff0c 所谓半直接是指通过对图像中的特征点图像块进行直接匹配来获取相机位姿 xff0c 而不像直接匹配法那样对整个图像使用直接匹配 整幅图像的直接匹配法常见于RGBD传感器 xff0c
  • 想精通单片机开发,这些必备基础知识不可不掌握

    总体谈一谈对单片机学习的看法 1 我从不说51是基础 xff0c 如果我这么说 xff0c 也请把这句话理解为微机原理是基础 2 对51单片机的操作本质上就是对寄存器的操作 xff0c 对其他单片机也是如此 库只是一个接口 xff0c 方便
  • 从零开始手写 VIO

    前言 最近和高博合作推出了一个关于 VIO 的课程 xff0c 借此博客推荐下 这个课程的图优化后端是我们自己写的 xff0c 仅依赖 Eigen 实现后系统的精度和 ceres 以及 g2o 不相上下 个人感觉这个课程还是能学到不少东西
  • 如何用示波器测量串口波特率

    例如波特率为9600理解为 xff1a 单位时间内传输9600个码元 xff08 位 xff09 1s内可以传输9600位数 假如要测量波特率为9600 xff0c 则每一比特位的时间为 xff1a 1 9600 61 104us 一般示波
  • PHPstorm2018汉化方法

    PhpStorm 2018汉化包下载地址 xff1a https pan baidu com s 1sAPfpPrN3IvZSyGU2kFWmQ 8 将安装目录lib下的resources en jar文件删除 xff0c 然后将压缩包中的
  • CMake学习(3)—— 使用add_subdirectory()添加外部项目文件夹

    一般情况下 xff0c 我们的项目各个子项目都在一个总的项目根目录下 xff0c 但有的时候 xff0c 我们需要使用外部的文件夹 xff0c 怎么办呢 xff1f 例如 xff0c 在目录cxx utility example内的CMak
  • docker高级篇

    docker高级篇 一 dockerfile解析 1 dockerfile是什么 dockerfile是用来构建docker镜像的文本文件 xff0c 是有一条条构建镜像所需的指令和参数构成的脚本 2 dockerfile常用保留字指令 F
  • 死锁

    死锁 xff1a 死锁是指两个或两个以上的进程进在执行过程中 xff0c 由于资源竞争或由于相互通信而造成的一种阻塞式现象 xff0c 如果没有外力影响 那么它们将永远的持续下去 xff0c 此事称系统产生死锁现象 xff0c 这种永远互相
  • pygame入门教程-基础篇

    1 画布surface 我们先启动一个窗口 span class token keyword import span pygame pygame span class token punctuation span init span cla
  • LeetCode刷题(废弃)

    重要提示 xff1a 该博客不再更新 xff01 最新文章请参考LeetCode系列 xff01 为了更好地巩固算法知识 xff0c 打下扎实的计算机基础 好吧 xff0c 实在编不下去了 其实是闲着没事儿做 xff0c 不如动动脑 xff
  • 基于STM32的GPS模块驱动(AIR530)

    一 概述 由于做项目要用到GPS定位 xff0c 于是在某宝购买了这款GPS模块 项目采用的MCU是STM32 废话少说 xff0c 进入正题 二 GPS模块简介 Air530 模块是一款高性能 高集成度的多模卫星定位导航模块 体积小 功耗

随机推荐