| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> ubuntu18.04 CUDA10.0 Tensorrtx yolov5部署 -> 正文阅读 |
|
[Python知识库]ubuntu18.04 CUDA10.0 Tensorrtx yolov5部署 |
由于项目需要使用Jetson nano开发板,所以想在自己电脑上安装ubuntu18.04并部署TensorRT加速的yolov5,这样一来所有的调试都可以在本地做好,不然的话板子性能较低,跑什么都慢,浪费时间。 一、选择兼容的版本在开始之前,最最重要的就是版本的选择,想在ubuntu上让TensorRT的yolov5跑起来,中间涉及到非常多的版本选择,一旦不配套,就会直接面临重装,相当麻烦。 >首先列出需要作出版本选择的条目,以及我成功时使用的版本
这些版本的选择,真的是一个很头疼的问题,但是在开始选择之前,先介绍一下怎么查看你现有的版本,哪条命令出不来结果就说明哪个没装好
>然后我解释一下这些要求是哪儿来的 要求一:tensorrtx要求cuda10.0 / cudnn7.6.5 / TensorRT7.0.0 TensorRT是一个C++版本的深度学习架构,和tensorflow、pytorch是平行关系。我们想用TensorRT部署yolov5到开发板,那就分为两步,1.安装TensorRT,2.用TensorRT的语法重写yolov5网络。但是用TensorRT自己写一遍yolov5真的太麻烦了,我们也不会。那我们就可以用tensorrtx,这位大神用TensorRT的语法复现了yolov5等经典网络,相当于把第2步帮我们做好了,但是他对我们的环境提出了要求:
我try了一下ubuntu用18.04发现可以的,opencv用3.4.15也是可以的,但是cuda10.0 / cudnn7.6.5 / tensorrt7.0.0 的版本我没敢随便选。 要求二:CUDA10.0要求显卡驱动高于410.48 nvidia对我们的CUDA和GPU Driver的版本提出了要求,详见cuda-toolkit-release-notes
要求三:我们的显卡对驱动的要求 我们自己的显卡对驱动也有要求,并不是所有版本都支持。可以使用ubuntu-drivers devices来查看支持的显卡驱动,如果发现支持的驱动全都没超过410.48,那这条路就走不通了。如果支持>= 410.48的驱动,但你现在使用不是它,那么可以用sudo apt install nvidia-driver-xxx来安装 要求四:CUDA10.0对ubuntu版本,系统内核,gcc,glibc的要求 CUDA10.0的要求可以在表里找到
我最不能理解的就是,为啥官方文档没把CUDA10.0对系统的要求和对显卡驱动的要求放在一起,真够难找的 二、配环境,装依赖一步步的来解决吧,我就是这么成功的,中间出了问题别烦躁,相信自己一定行,大不了看看英文文档。 >ubuntu 18.04? kernel 4.15.0? gcc7.3? glibc2.27?? ubuntu18.04安装完后自带的kernel一般是4.15.0~4.18.0左右,gcc是7.3的,glibc是2.27的。也就是说,如果你是新装的18.04系统,那么这四个要求就自动满足了。 但是我在这里就出了许多问题,其一是,我有一次手滑,在系统问我要不要更新的时候点了更新,所以我的kernel变成了5.几的;其二是,我这台电脑之前装过ROS,对gcc有要求,我自己降了gcc版本,所以我的gcc版本不够7.3。实测如果什么都不管直接开始装CUDA的话是会失败的。 内核的降级可以参考ubuntu 删除不需要的内核 【转载】 先看一下自己gcc的情况
如果你现在没有gcc,那就比较简单
如果你是有gcc,但不需要保留,则先卸载再用上面命令安装,gcc卸载比较麻烦,还要按你之前安装gcc的方法来分情况讨论,误操作容易搞崩系统,这里我也不太清楚应该怎么做 如果你需要保留现在的gcc版本,想让7.3与现在版本并存,参考Ubuntu 1804 gcc、g++不同版本的切换 >显卡驱动
>CUDA10.0 显卡驱动更新后可以开始装CUDA10.0,tensorrtx教程中使用.deb文件进行安装,我尝试后发现报错了
也没有其他的报错信息,但我的显卡驱动确实已经更新好了,很奇怪,无奈只能换个方法,用.run文件进行安装。 注:如果这里你用.deb文件就能成功,那么后面的CUDA,TensorRT,opencv的安装都可以用tensorrtx教程给出的方法,这样会简单许多。但我看到其他教程也反映说用.deb文件安装CUDA容易失败,你可以自己先试一下用.deb 这里要感谢这篇文章给我提供的帮助,虽然版本不同,但思路是正确的? Ubuntu 16.04 上安装 CUDA 9.0 详细教程 开始用.run文件安装 首先去nvidia官网下载runfile,记下你保存在哪儿了
没输出则继续,有输出的话说明nouveau驱动正在加载,需手动禁用(参考上面链接,我没遇到) 重启电脑,在登录界面不要输密码,直接按Ctrl+Alt+F1进入命令行(如果你没输入密码就进了系统,先在设置->用户里把"自动登录"关了) (Ctrl+Alt+F1没反应的话试试Ctrl+Alt+F2)
读协议,按住回车,最后输入accept同意协议?(按ctrl+c可以跳过读协议)
安装成功后,会提示你installed,否则会显示failed 同时按住Ctr+Alt+F7,返回到图形化登录界面,输入密码登录(这里我的电脑是用Ctrl+Alt+F1),如果能够成功登录,重启? 进行检查
应有如图五项,其中包括/dev/nvidia0 ?/dev/nvidiactl ?/dev/nvidia-uvm则说明成功 (没出现这些的话说明安装不完全,可以参考上面链接) 添加环境变量
重启,检查显卡驱动与CUDA版本
尝试编译cuda提供的例子
我中途在simpleGL报错如下
出现Finished building CUDA samples 表示成功 运行编译生成的二进制文件
Result = PASS代表成功 >cuDNN7.6.5 下载cuDNN v7.6.5 for CUDA10.0,选择cuDNN Library for LINUX,需要登陆,登一下 将压缩包解压
打印出cuDNN版本信息就成功了, 如果遇到问题,就去cuDNN官网看下文档 >TensorRT7.0.0.11 TensorRT的安装可以参考tensorrtx教程。实际上它给出了全套软件的安装方法,包括CUDA。但是它教程里是用.deb文件安装的,而nvidia TensorRT文档说了:
所以我这里没得选,只能用tar file安装。在此感谢一下这篇文章【干货】用tensorRT加速yolov5全记录,包含加速前后的数据对比 先下载TensorRT7.0.0.11,需要登陆,注意对应版本,找到TensorRT 7.0.0.11 for Ubuntu 18.04 and CUDA 10.0 TAR package 安装,注意环境变量路径要自己改
>opencv3.4.15 先到opencv官网,点击对应版本的source下载opencv安装包
sudo make install会比较慢,最后的检查没报错就ok了 >Anaconda 下一步的Tensorrtx就要用到pytorch了,先装一下Anaconda环境 从Anaconda清华源下载Anaconda3-5.2.0-Linux-x86_64
后面要用到yolov5,我们顺手把yolov5下载下来,配好环境?
附:Anaconda换源
>Tensorrtx 安装与验证教程:Getting Started with TensorRTx, Run lenet5 Run lenet5 in pytorch
python inference.py这一步会生成一个.wts文件,我们TensorRTX使用的模型就是这个格式的,而.wts文件的获取方法一般是:拿现有网络的模型通过一定方式转换为.wts格式(例如yolov5,原本模型是.pt文件,运行一个python脚本——gen_wts.py,就能转化为.wts文件,让TensorRTX使用) Run lenet5 in tensorrtx
这时直接按照官方教程去编译会出错
原因是,我们TensorRT是用tarfile安装的,这个nvinfer是TensorRT里的一个模块,系统没找到它的路径,我们需要手动配置cmakelist.txt文件,把我们自己的安装路径给他替换掉
可以编译了?
这里可能会遇到报错,
那么应该是你的cuDNN没装好,重新配置一下
那么应该是TensorRT的环境变量没配置好,重新配置一下 解决所有问题了以后继续
我们对比一下前面pytorchx的输出,发现是很接近的,就说明成功了? >yolov5 上一步我们已经在TensorRTX里面跑通了一个简单的网络lenet5,那么在TensorRTX里使用yolov5也大同小异。主要思路就是三步:1.把原来用pytorch写的代码下载下来,用pytorch跑通;2.从TensorRTX文件夹里把gen_wts.py脚本复制过去,运行,获得.wts文件;3.把.wts文件复制回TensorRTX,编译运行。 跑通原版yolov5
这里会自动帮你下载yolov5s.pt,需要联网,搞不定的话也可以直接去github下载 获得.wts文件
把.wts文件复制回TensorRTX,编译运行 编译之前还是需要在cmakelist.txt里改一下路径
运行没报错,就可以在文件夹里看到带框的zidane.jpg了 至此,ubuntu18.04+CUDA10.0+Tensorrtx+yolov5安装完成。总结一个经验教训:动手之前要耐心去看官方的英文文档,很多途中可能遇到的问题都已经在文档里说明清楚了。但我们总是宁愿去看三四个别人的博客,也不愿意看两段英文。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/15 12:09:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |