Jetson orin nano(4GB--CLB套件)的烧录以及部署YoloV5与Deepstream的流程,同时分享一些实用软件。

1.硬件及软件版本

        在这过程中踩了许多坑,并且其他教程有的软件版本为旧版本,每个人的过程都不太一样,所以想着分享一下自己的部署过程。我是参考了别人的教程进行部署,下面为链接:

https://blog.csdn.net/jam12315/article/details/130264074

Jetson:jetson orin nano(4GB)

Jetpack:5.1.3

Deepstream:6.3

CUDA:11.4

OpenCV:4.5.4

Python:3.8.11(Conda环境中创建的python版本,并非jetson中原始的3.8版本)

2.烧录流程

        采用英伟达官网中的SDK manager的方式进行系统烧录,在进行烧录前必须要在自己的PC端安装虚拟机,我采用的是vmware软件来创建虚拟机,虚拟机的系统为ubuntu20.04,B站上有很多关于这一方面的教程。CLB套件(并非单独的一个开发板,其中包括固态硬盘以及无线网卡等附件,并且系统已经烧录完毕。)中采用ubuntu18.04烧录的系统,我没有进入系统中查看Jetpack的版本。选择自己重新烧录系统,因为ubuntu18.04的版本有点老,而jetson orin nano相比于jetson nano性能更好一些,所以想要安装高版本的jetpack。

        首先在浏览器中搜索SDK manager,选择第一个即可。下载界面中的.deb文件,打开ubuntu20.04虚拟机,在虚拟机中按照下载的.deb文件运行以下程序,如下图:

        运行完以上命令之后在命令窗口中输入sdkmanager即出现图形化下载界面,之后需要用typec与A接口将开发板与电脑连接,开发板插上电源,然后按照本文顶端中的参考教程将引脚短接,然后按照步骤进行,注意当出现连接到本地还是虚拟机的提示时要及时连接到虚拟机。还需要注意的是要注册英伟达账户,并且下载的速度较慢,因为CLB开发套件自带固态硬盘,所以能下载的可以都下载上。

3.下载Jtop与pip

        参考文章中配置了CUDA,因为我用SDK manager烧录的,并且烧录时下载了CUDA同时也能检测到CUDA的版本,所以本文没有CUDA配置的内容,可以通过参考文章来下载Jtop。并且下载pip3。

4.扩大运存

参照参考文章中的做法来扩大运存,因为之前我没有实施这一步总是在运行时出现killed,最后发现是运存低无法满足性能要求。命令如下:

sudo gedit /etc/systemd/nvzramconfig.sh

'''
修改mem = $((("${totalmem}"/2/"${NRDEVICES}")*1024))
为mem = $((("${totalmem}"*2/"${NRDEVICES}")*1024)) # 不要复制粘贴,可能会导致修改不成功
'''

这样操作通过我的显存变化,可以估计扩大了1倍。

5.下载Anaconda

        由于开发板并不仅仅只是部署yolo,所以需要一个软件进行环境管理,搜索网上的教程了解到可以下载与conda类似的miniforge,几乎与conda相同,但是基本的库比较少,而且因为是固态硬盘,所以不担心空间问题。而且因为对anaconda比较了解,所以决定下载conda。

        可以从官网上下载linux的ARM64版本,可以从PC端下载用U盘转到开发板上。如下图:

下载到开发板上后采用如下代码运行:

chmod +x Anaconda3-2024.06-1-Linux-aarch64.sh
./Anaconda3-2024.06-1-Linux-aarch64.sh

运行以上两行命令之后命令端口尾部出现more的字样,一直按回车直到出现yes/no。输入yes进行安装。之后可以创建自己想要的环境。

6.下载torch以及torchvision

        英伟达官网有专门的对应的torch以及torchvision的包,通过下面的链接访问。

https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048

参考文章中的jetpack版本为5.1.1,torch以及torchvision的版本分别为torch.14与torchvision v0.15.1,我下载的版本与参考文章相同。首先在开发板中下载torch1.14的包,如果通过wget...下载的话,由于是国外网站,失败率大(不能科学上网)。所以先通过u盘将包传到开发板。按照网站的提示进行安装。如下图:

下载完成后可以通过pip list命令来查看。

7.手动编译OpenCV并使能GStreamer=ON

这一步与参考文章所写几乎一样,不同的是现在开发板中并没有opencv,需要从第2步开始进行,不需要验证。

        下载了opencv-4.5.4的压缩包后,需要在开发板中解压。进行参考文章的第5步时需要用cd命令先进入opencv-4.5.4文件夹在opencv-4.5.4中建立build文件夹,然后按照顺序运行代码。

        需要注意以下代码:

make -j8        # j后边代表的为内核数,如果出现错误可以适当的减少,比如用j4

        还需要注意的点是如果Gstreamer还是为NO有极大的可能是存在opencv-python,需要将其移除之后才能打开Gstreamer。通过gpt搜索如何移除。还应需要注意的是python的版本,如果python的版本过高,例如我刚开始版本为3.8.19会导致不兼容,无法检测到cv2,因此可以用conda install python=3.8.11来覆盖,这样就可以使用import cv2了

8.部署YoloV5

        这一步完全与参考文章一样,只不过最后测试摄像头可能会在命令行出现Autoupdating的字样,只需要ctrl+c结束。之后便能正常运行。只不过是我采用的为csi摄像头,所以是一片绿色。如果是usb摄像头应该已经出现画面。如果是csi摄像头则需要继续进行安装deepstream。

9.安装Deepstream

        本节与参考文章类似,只不过下载的是Deepstream6.3版本,将代码中出现的6.2改为6.3即可,因为代码命令为建立文件夹,所以更改不会产生影响。需要注意的是下载的版本为6.3。将下载的包转移到开发板上进行安装。

        有一个需要注意的地方,可能会出错,看下面的代码:

sudo deepstream-app -c source1_csi_dec_infer_resnet_int8.txt

注意一下这一段代码,要查看其中txt文件中的内容。因为我的开发板运行时一直报代号为642与687的错误,经过寻找得知自己的txt文件中csi摄像头代号为source0,并非source1。所以无法找到文件,所以我用mv命令更改了.txt文件的名称将source1改为了source0,代码中做相应更改后运行成功。

        后边的二者结合并没有操作,以后再试一下。

10.好用的软件

1.pycharm:pycharm有专门的ARM64版本,可以通过这个IDE软件进行代码开发。

2.nomachine:可以通过这个软件远程控制开发板并且传输文件

3.mobaxterm:通过typeC-A将电脑与开发板连接,从而不必将开发板连接显示屏,直接在软件中下达命令,只不过是在调用摄像头这种需要显示的命令时需要在开发板上运行代码。

4.向日葵:可以从网上搜ARM系统的向日葵控制,有专门的教程。nomachine只能通过局域网连接,不在一个局域网下无法使用,即使能用配置较为麻烦。

11.总结

        自己在这个过程中踩了许多坑,甚至重新烧录了一遍系统。有的时候很多错误重启一遍开发板就好了,有的通过gpt解决的。每个人的部署过程可能都不太一样,我只是将我的大致过程简单分享给大家,因为这方面的资料比较少,过程比较艰辛。同时将过程记录下来,以便后边操作新的开发板。可以知道jetpack5.1.3与deepstream6.3以及python3.8.11不影响使用opencv-4.5.4运行YOLO

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值