关于在Jetson Xavier NX(EMMC 16G)设备上刷机、安装CUDA包以及测试yolov4-tiny的实时检测,虽然整个看着不是很难,却花费了我2周的时间(前面都在乱搞,其实真正的工作量2天做完,前面踩坑太多了,中间刷了3、4次机),因此在这记录一下!!!
起因:
- 因为板子是在亚博智能上买来的,Jetson NX (EMMC 16G版本),本身是不需要重装系统的,只需要安装Anaconda,对整个环境进行处理。但是因为原版是Jetpack4.6版本的,在做TensorRT转化时不能成功,后来在官网上查看时,工作人员可以去安装Jetpack5.0以上的,所以才有了下面两周的工作量,中间被折磨的很难受,出现了各种bug,最后要感谢万能的CSDN,帮助了我很多,特此记录一下从刷机到实时检测的各个流程
一、刷机(安装Nvidia SDK Manage工具)
- 1、此处用的是商家提供的虚拟机,我们只需要安装VMWare即可(也可以自己新建虚拟机,但是通常因为板子的问题,Opencv、CUDA等SDK经常安装不成功,所以此处还是建议用商家的提供的)
- 2、打开虚拟机Ubuntu18后,在搜索栏搜索SDK Manager,有可能会报错这时候需要点击右上角的check update,然后升级就好了;
- 3、在升级完成后,先将SDK Manager关掉,然后 按照说明书将补丁打上 ,大家可以前往下面的网址中下载:Jetson NX 亚博智能官网资料网站(此处资料提取密码自行找客服要),此步骤很重要,前面我刷了很多次SDK安装不成功就是因为这个。(如果不打补丁,就会像我这样下载失败,
如果成功了,当我没说)
- 4、因为EMMC版本的板子,内存之后16G,因为一开始只能先装系统,等后面将磁盘扩容之后,才能安装opencv、CUDA、CUDNN等SDK;
- 5、在装系统时需要将REC与GND短接,然后板子上电,选择连接虚拟机,这样板子就可以正式进入刷机状态了。
具体过程可参照下面的博客: Jetson Xavier NX重装Jetpack5.0.2系统、安装CUDA11.4、Cudnn8.4.1、Tensorrt8.4.
但是此处需要注意与之不同的一点就是“Pre-Config”改为“Running time”,这样后面卡机的时候就可以自己定义虚拟机的用户名和密码等信息。 - 查看虚拟机版本 uname -a ,一般为Ubuntu18.04,20.04版本
需要注意下面几点:
- 1、系统安装完成之后注意不要换源,因为opencv是需要老的依赖项的,如果换成清华源或其他源,会报很多依赖错误
- 2、正常过程为:先打补丁-> 然后再安装系统 -> 磁盘扩容 -> 安装SDK(在这个工程中一定不要换源!不要换源!不要换源!因为换源之后,opencv等依赖包会因为太新而无法正确安装),要不然就会这样:
- 3、先全部都下载下来,然后整体进行安装。
二、装机初始化工作
2.1 换源
2.2 打开风扇
- 首先需要安装pip : sudo apt-get install python3-pip,然后参考下面操作即可。
【Jetson Xavier NX】Jetson Xavier NX风扇控制
这个是我完全安装好的jetson的配置值:
接下来的工作我开始安装各种包,但是并没有安装Anaconda,后面再安装也可以。
三、Anaconda、Pytorch与torchvision安装
NVIDIA Jetson Xavier NX入门(3)——安装miniforge和Pytorch
- 这边的话基本上正常安装就可以了,但是如果torch下载较慢,可以利用windows电脑先下载现在,通过U盘来进行安装;
- 一定要注意Jetpack、pytorch与torchvision的对应情况(不是只有pytorch和torchvision有对应情况,Jetpack也是有的,这点需要非常注意,可以在官网进行查看)。因为之前我下载的是jetpack5.0.2,所以只能安装pytorch V1.11.0及版本以上的。
需要注意的点:
- 1、在安装torchvision的时候因为要访问github,所以可以在gitee上面拉取github上面的仓库,具体细节见下面的参考:
知乎上加快torchvision下载的方法 - 2、后面如果在github上下载麻烦的话都可以将仓库拉到gitee上,这样下载速度会加快很多。
因为我并没有重新安装opencv,他需要编译的时间很长,因为原环境中有opencv,但是不带cuda,这个目前没关系,而且网上教程很多,自行安装编译即可,但是在ARM上安装需要很久,大概3个小时左右
三、测试TensorRT加速的yolov4-tiny模型
可根据下面的教程进行测试:
Jetson NX 使用Tensorrt加速yolov4/yolov4-tiny模型
但是我在做的过程遇到的问题如下:
- 1、sh ./downloadyolo.sh没有反应,后面打开脚本看了一下是wget指令没有起作用,因为我的Jetson不能“科学上网”,因此我直接把脚本里面设计yolov4-tiny的cfg和权重文件自己下载下来,即yolov4-tiny.weights与yolov4-tiny.cfg。这个直接把脚本文件中wget后面网址在浏览器中打开即可,然后把现在的文件放在yolo文件夹下即可。
- 2、当安装11.4CUDA版本时,需要onnx的版本为1.11.0(如果网络连接问题,换成清华源),这个我试了很多次,最终在官网上才解决问题
- 3、缺少pycuda,可参照下面的进行解决
Ubuntu20.04.4LTS安装CUDA11.6,cuDNN,TensorRT,PyCUDA,PyTorch - 4、也可参考下面几个网站:
yolov4-tiny使用jetson nano进行目标检测+tensorrt+CSI+USB摄像头检测
可能因为这个是比较新的环境,之前的教程或多或少都有些问题,因此来记录一下,也希望可以帮助更多的人少走一些弯路吧,填坑结束!!!
最终的帧率大致40多,接近50FPS