当前位置:   article > 正文

001-Jetson Nano开发环境搭建与配置-开启绿色之眼(上)_jetson nano部署语义分割模型的开发环境搭建

jetson nano部署语义分割模型的开发环境搭建

本节介绍有关Jetson Nano开发环境的搭建与配置相关的内容,包括系统安装、配置和部分开发环境的设置。

目录

0.0 缘起

0.1 Jetson Nano简介

0.2 系统安装

第一步:准备

第二步:镜像下载与刻录

第三步:系统安装

0.3 其他设置

0.3.1 连接网络

0.3.2 更换关屏设置

0.3.3 安装中文输入法

0.4 配置开发环境

0.4.1 设定Python版本

0.4.2 安装pip



0.0 缘起

所在学院的教学系大概在2019年就采购了一批Jetson Nano套件,用于支持相关课程的实验,以及课程设计和毕设工作的需要。但周围大部分教授们都热衷于写paper,很少有人关注电子信息课程实验环节的更新换代,其中也包括博主本人。直到好几年后,有一次给一名留学生安排毕设题目时,这种情况才发生了变化。

按照以往惯例,一般选择一个CV算法类的题目,用某ML框架运行一个现成的Python程序,对现有的Model进行重新训练,贴出实验图片,列出一堆实验数据表格,这是一般针对国内本科生毕设工作的通常安排。但这套路不适用于留学生留学生的学习态度很认真,但专业知识不扎实,动手能力就更是欠缺,几乎没有coding的经验。这怎么办?

不过这位留学生很聪明,脑袋很活。他说:老师,我想做一个能演示的题目”。详细一问才知道,原来他在看上学期课程设计汇报时,看到有的组在一个小设备上外接摄像头,并能实时检测到人脸,对此他印象深刻,很感兴趣。我回想一下当时的情景,想起来那是学生在嵌入式平台开发的人脸检测题目。wonderful!这类题目不错吗!软硬结合,看起来工作量丰富,其实就是将现有的资源整合在一起就能实现,很适合作为入门级的本科毕设题目。好的,就是它了。

于是,就有了后面的一系列工作。环境搭建、算法仿真、资料整理、撰写论文、毕设答辩。整个一个流程下来,对基于Jetson Nano开发计算机视觉相关的应用都算是了解一二了。将来有可能还会做相关的工作,为了后面更快捷地完成设计开发工作,同时也想记录在整个过程中的一些所学、所感、所思,特整理并撰写该专栏文章,也希望对有类似需求的同行(仅限和我一样的入门级小白)有所启发和帮助。特此说明,由于博主本人在该领域绝对是初学者,因此所记录的内容可能在专业人员眼里很肤浅,甚至是错误的,希望大家批评指正。

0.1 Jetson Nano简介

NVIDIA® Jetson Nano™ 开发者套件(后面简称Jetson Nano)是一款体积小巧、功能强大的人工智能嵌入式开发板,于2019年3月由英伟达公司推出。它预装Ubuntu 18.04 LTS系统,搭载英伟达研发的128核Maxwell GPU,可以快速将AI技术落地并应用于各种智能设备。相比于Jetson之前的几款产品(Jetson TK1、Jetson TX1、Jetson TX2、Jetson Xavier),官方版的Jetson Nano售价仅需99美元,大幅减少了人工智能终端的研发成本。因此,一经推出,便受到了广泛的关注。

Jetson Nano 开发者套件规格

使用Jetson Nano平台,可以在图像分类、物体检测、分割和语音处理等应用程序中并行运行多个神经网络。相对于其他平台,该平台的突出优势包括:

  • 更小更强更便宜:类似树莓派的硬件设计,但功能更强,使用更便捷。
  • 专为AI而设计:支持一系列流行的AI框架和算法,比如TensorFlow,PyTorch,Caffe / Caffe2,Keras,MXNet等,开发人员能够简单快速的将AI模型和框架集成到产品中,轻松实现图像识别,目标检测,姿势估计,语义分割,视频增强和智能分析等强大功能。
  • 多传感器支持:可提供472 GFLOP,支持高分辨率传感器,可以并行处理多个传感器,并可在每个传感器流上运行多个现代神经网络。
  • 扩展性佳:支持英伟达的NVIDIA JetPack组件包,其中包括用于深度学习、计算机视觉、GPU计算、多媒体处理等的板级支持包,CUDA,cuDNN和TensorRT软件库。

0.2 系统安装

这方面网上的教程很多,不想过多的介绍,大家按照以下步骤逐一完成即可。有需要特别关注的地方,我会单独加以强调。

0.2.1 准备

需要准备以下物品:

一张容量够大的TF卡,用来安装系统。由于解压后的ROM文件大概有13G多,因此最少要用16G的卡,建议32G起步。

  • 一个配套的读卡器,读写速度越快越好。
  • 一台安装windows系统的计算机,系统别太老,windows10及以上。
  • Jetson Nano套件及外设,包括开发板、键盘、鼠标、DC电源(不是必须的)、无线网卡(不是必须的)、支持hdmi的显示器(建议使用触屏)

0.2.2 镜像下载与刻录

Nvidia官方为Nano提供了系统镜像,该镜像中包含对应的Ubuntu系统以及配置好的cuda环境和opencv环境,我们只需要下载和安装该镜像即可完成 Nano的大部分的环境配置,这大大降低了使用的门槛。

可以直接到Nvidia官网下载相关镜像,文件名类似“jetson-nano-****-sd-card-image.zip”(***表示版本号信息),在此就不单独给出链接了。需要说明一下版本的问题。官方提供了多个版本,目前最新版本是2022年发布的,版本号是461。但各位购买的Jetson Nano时间不同,所适配的镜像版本可能会有差别。所用的原则是,尽量不用最新版本的,因为有可能存在不匹配的问题。我在第一次安装时就遇到了类似的问题。下载了最新版的461,安装时总是提示有错。一直以为是TF卡或者烧录过程的问题,后来换用451版本,一次性通过。

下载的文件是zip文件,解压到电脑硬盘上,变成了后缀是img的镜像文件。到此便完成了下载的环节。

接下来需要将镜像文件写到SD卡中,注意是刻录,而不是简单的复制,因此需要一个镜像烧录工具。相关工具其实很多,在此推荐两款,均通过实际测试确认可用,第一个是balenaEtcher,第二个是Win32DiskImager,都建议使用最新版。至于使用方法及步骤,以及烧录过程中的注意事项,大家baidu吧,不再重复。

0.2.3 系统安装

如果下载的镜像与您使用的平台匹配,则系统安装步骤会非常流畅。在此我给出简要的流程说明。准备:将TF卡插在扩展板上(为之很隐蔽,在背面);连上键鼠等外设;连上电源(建议直接用5V~4A的外接DC电源,记得设置跳线)。

开机:什么都不要做,只需等待几分钟,然后就进入到设置流程,会让确认授权、选择系统语言(可选中文,建议选英文)、选择输入语言(建议默认),如果安装了无线网卡,或者网口接上了网线,会让选择网络(建议跳过)、选择时区(默认是中国)、设置用户名和密码(如果就你一个人使用该平台,建议选“Log in automatically(自动登录)”,这样就不用每次登录输入密码了)、设置用于安装系统的磁盘大小(默认是全盘安装,不要修改)、选择运行模式(默认是MAXN,最大功率方式,前提是你用DC供电),会让你重新登录,键入刚才录入的密码,即可完成第一次登录,类似下面的界面。至此就完成了全部的设置过程。

(看到这个界面,说明您已经顺利地完成了系统的安装和设置)

0.3 其他设置

0.3.1 连接网络

虽然可以离线使用Jetson Nano平台,但不连网络,Jetson Nano的优势则大打折扣。

参考Jetson Nano所提供的接口,其联网方式也就是三种:

  1. Lan接口连接有线网络;
  2. M.2 Key E接口的无线网卡;
  3. USB接口的无线网卡;

如果你手头上恰好有一块闲置的M2接口无线网卡,且将来该系统可能需要在移动环境下运行,则选第2种方式;否则,建议选择即便宜又方便的第3种方式;第1种方式看起来简单,但需要链接路由器,并对IP进行设置,真心不推荐。

0.3.2 更换关屏设置

Jetson Nano系统默认的不操作自动熄屏时间是5分钟,熄屏后重新开启屏幕,需要重新输入开机密码,繁琐讨厌。在使用Jetson Nano进行开发过程中经常需要等待较长时间,因此设置为较长的熄屏时间,或者直接设为不关屏,会方便我们的开发操作。

如果您能熟练使用Ubuntu,则肯定知道如何修改熄屏时间,即打开System Settings进入系统设置界面,然后单击Brightness & Lock,然后将 Turn screen off when inactive for 改为您想要的时间,比如 30 minutes 即可,并将下方的“Required my password when waking from suspend”的复选框别勾选。如下图所示:

除此之外,有时还需要键入中文,需要配置中文输入法,在此就不再单独说明了,大家可在CSDN中搜索相关内容。

0.3.3 修改SWAP内存

因为Jetson nano的内存只有4GB,且与显存共用,后期编译torchvision,生成TensorRT推理引擎文件不够用,这里通过增加swap内存的方法来解决这个问题。

在终端运行以下命令:

gnome-system-monitor

弹出任务管理器,在“Resource”一项,可见交换内存仅有1.9G,太少了。

在命令窗口键入以下命令:

sudo vim /etc/systemd/nvzramconfig.sh

按“i”进入输入模式,将

mem=$((("${totalmem}" / 2 / "${NRDEVICES}") * 1024))

改为:

mem=$((("${totalmem}" * 2 / "${NRDEVICES}") * 1024))

然后按"Esc"输入“:wq”保存退出。重启系统后再次进入任务管理器,此时显示交换内存已变为7.7个G。

0.3.4 安装中文输入法

在开发过程中经常需要使用中文搜索以及书写必要的中文注释,因此推荐为系统安装中文输入法。Jetson Nano自带ibus中文输入法,但是要简单的配置下才能进行中文的输入。在终端中直接输入命令ibus会出现下图所示界面,说明Jetson Nano已经自带了ibus输入法环境了。

下面为ibus下载拼音输入法,输入命令:

sudo apt-get install ibus-pinyin

安装完成后进入系统配置System Settings界面,选择语言支持选项Language Support 。在语言选项属性框中,选取“中文简体”,然后单击“Apply”。系统会安装一些中文语言包,安装完毕后,再语言支持中,将“汉语(中国)”调整到最前面,然后点击“应用到整个系统”,最后将键盘输入法系统改为“iBus”即可。如下图所示:

需要注意的是,以上设置需要重启系统才有效。

0.4 配置开发环境

所用的开发环境是Python,在配置开发环境时,需要用到pip安装各种扩展库。因此,首先要完成pip的安装。

0.4.1 设定Python版本

官方镜像系统和jetson nano宿主机系统一样,提供两个python版本,分别是python2.7和python3.6。使用以下命令,可查询已安装的python版本。

ls /usr/bin/python*

查看系统已经安装的版本。可以看到系统自带了python2.7和3.6的版本,如无特殊需求,不建议安装新的python版本。在终端直接使用python命令,会进入到系统默认的python版本中, 也就是2.7版本。显然,2.7版本的python过低,在此介绍如何将默认Python修改为3.6版的流程。

首先确认系统是否配置过python相关的管理信息,键入一下命令

update-alternatives --list python

如果出现以下图示,说明没有配置过。

使用以下命令,配置Python

  1. sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
  2. sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

再次查看配置情况,会发现已变为:

则说明两个版本的Python均已成功配置。

下面将Python版本切换为3.6版,键入以下命令:

sudo update-alternatives --config python

会有以下提示,系统提示选择某一个版本,此时只需键入版本序号即可。前面在配置时,将2.7版本设为序号1,3.6版本设为序号2。因此,只需键入序号2,即可完成配置。

在终端键入python,显示的Python版本已经改为3.6版,如上图所示。

至此,完成了Python版本的配置。当然除了上述方法之外,还可以通过安装conda的方式,修改Python版本。但需要说明的是,Jetson Nano采用的是ARM框架,并不能直接使用Anaconda官方提供的conda或miniconda。开发者有开发了专用于aarch平台的miniforge,大家可自行搜索安装,在此不再赘述。

0.4.2 安装pip

在Jetson Nano,没有pip工具,需要自己安装。在终端键入以下命令:

  1. sudo apt update
  2. sudo apt install python3-pip

还需要更新命令来指定pip命令的安装路径。

python -m pip install --upgrade pip setuptools wheel

调用以下命令,查询pip安装文件路径,如下图所示,即表示设置成功。

注:以下修改文件的操作,我并没有进行操作,并不影响后续的使用。

尽管完成了pip的升级,据网上贴子说,还有一个小bug需要手动修改,具体过程如下。

首先,使用下面的命令打开pip3文件

sudo vim /usr/bin/pip3

键盘输入字符a进入插入模式,然后可以开始编辑文件,将原本的代码字段如下:

  1. from pip import main
  2. if __name__ == '__main__':
  3. sys.exit(main())

更改如下:

  1. from pip import __main__
  2. if __name__ == '__main__':
  3. sys.exit(__main__._main())

然后按Esc键进入到命令模式。最后按英文的":"键进入末行模式,敲入wq按回车即可保存修改并退出编辑器。

修改结束后保存。运行pip3 -V查看是否成功。

pip3 -V

(受篇幅影响,将在下一篇将继续介绍开发环境,包括JupyterLab,以及几个重要扩展库的安装)

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/452428
推荐阅读
  

闽ICP备14008679号