大家好,我是写代码的篮球球痴,最近我朋友写了一篇英伟达开发板的文章,分享给大家。
前言:
最近拿到一块jetson nano 2GB版本的板子,折腾了一下,从烧录镜像、修改配件等,准备一篇开箱基础文章给大家介绍一下这块AI开发板。
作者:良知犹存
转载授权以及围观:欢迎关注微信公众号:羽林君
或者添加作者个人微信:become_me
Jetson nano初步介绍:
Jetson Nano是Nvidia在TX2和Xavier获得成功后推出的低配版GPU运算平台。在官方的资料上,Jetson Nano公布的参数如下:
技术规格:
包含了一块128核Maxwell架构的GPU,虽然已经是几代前的架构,不过因为用于嵌入式设备,从功耗、体积、价格上也算一个平衡。Nano的计算能力不高,勉强可以使用一些小规模、并且优化过的网络进行推理,训练的话还是不够用的。
内存减半这种情况确实让人有些顾虑,官方的主要应对措施是换用更轻量的桌面环境LXDE。这个已经在10月21日刚发布的JetPack 4.4.1镜像中提供。
那么这块板子能帮我们实现是什么呢?
这是我从其他人文章摘录过来的一些分析,供大家参考
Jetson Nano 2GB Developer Kit虽然与4GB的nano相比,将内存容量砍半,但价格却锐减40%,对于用这款开发组件作为入门学习教材的用户来说,是个相当划算的取舍,笔者也将在这篇文章中分析2种版本的硬件规格差异,以及实际性能比较。
Jetson Nano 2GB Developer Kit开宗明义的目标就是推广教育市场,所以在推出破盘“学生价”的同时,也不会将规格阉割太多,以免影响到功能与应用。
Jetson Nano 2GB Developer Kit(文中以2GB版简称)与原版Jetson Nano Developer Kit(文中以原版简称)最大的差别,当然就是名称所暗示的2GB版仅搭载2GB内存,而原版则是搭载4GB,两者除了容量有所差异外,在信道宽度与时脉、带宽方面则皆相同,此外两者的处理器、绘图处理器也都相同,因此可以预期执行小型程序的性能并不会有太大落差,但2GB版可能会因内存容量不足,在执行大型程序的时候需要通过Swap(Linux的换置空间,可以理解为虚拟内存)来存储程序资料,进而影响性能。
另一个可能会影响使用的规格,则是摄影机的连接端子。最初期的原版只有1组MIPI CSI-2端子,后期增加为2组,而2GB版则改回1组,因此只能同时连接1组MIPI CSI-2接口摄影机。
除此之外2GB版也取消了M.2 Key E无线网络模块插槽、DisplayPort图片输出端子,并将4组USB 3.2 Gen1改为1组USB 3.2 Gen1加2组USB 2.0,这个改变对创客来说可能影响不大,但对想将Jetson Nano Developer Kit当成迷你计算机、多媒体娱乐机的用户来说影响就会比较大。
最后2GB版将电源输入由5V DC插座改为USB Type-C端子,这个对于许多用户来说或许更为方便,可以视为正面的功能改进。
至于和Raspberry Pi 4或是Coral Dev Board等定位相近的产品相比,2GB版不但维持性能领先的优势,更在降价后增加了价格竞争力。另一方面,2GB版依然与原版相同能够支持CUDA绘图处理器加速运算,以及TensorFLow、PyTorch、Caffe、MxNet等业界常见,甚至应用于大型运算中心的软件框架,对于学习程序开发来说相当吃香。虽然2GB版的价格比Raspberry Pi 4贵,但是性能、功能、支持的软件框架都更强大。
根据NVIDIA官方提供的性能对照表,2GB版在不同AI软件的性能表现能达到Raspberry Pi 4的数十倍之谱。(图中将Raspberry Pi 4的性能表现标准化为1)
在操作系统部分,笔者使用NVIDIA提供的最新版本Jetson Nano镜像文件,安装完成后会发现它的桌面环境改为LXDE18.04,与先前的Ubuntu接口有些许不同,但是整体操作仍相当接近。
值得注意的是,在第一次开机的初始设置过程中,系统会建议用户激活Swap功能,若选择默认选项,系统则会自动创建容量约为4.95GB的换置空间,以在主内存容量不足的时候存储资料,发挥虚拟内存的功效。不过由于Swap的实际路径为microSD内存卡,所以带宽与访问性能将受到很大的限制,而且反复访问也可能会加速耗损内存卡寿命。
Jetson Nano可以运行各种各样的高级网络,包括流行的ML框架的完整原生版本,如TensorFlow,PyTorch,Caffe / Caffe2,Keras,MXNet等。通过实现图像识别,对象检测和定位,姿势估计,语义分割,视频增强和智能分析等强大功能,这些网络可用于构建自动机器和复杂AI系统。
多流视频分析,Jetson Nano可实时处理多达8个高清全动态视频流,并可部署为网络视频录像机(NVR),智能相机和物联网网关的低功耗边缘智能视频分析平台。NVIDIA的DeepStream SDK 使用ZeroCopy和TensorRT优化端到端推理管道,以在边缘和本地服务器上实现最佳性能。下面的视频显示了Jetson Nano在8个1080p30流上同时执行物体检测,基于ResNet的模型以全分辨率运行,吞吐量为每秒500万像素(MP / s)。
下图显示了在线提供的流行模型的推理基准测试结果。有关在 Jetson Nano上运行这些基准测试的说明,请参见 此处。推理使用批量1和FP16精度,采用 JetPack 4.2附带的NVIDIA TensorRT加速器库。Jetson Nano在许多场景中都具有实时性能,能够处理多个高清视频流。
2GB版与4G原版的性能表现相差无几,并没有因为是阉割版而有明显落差,表现可以说让人相当满意。其中原因不外乎是双方的处理器、绘图处理器规格完全相同,且也都可以使用10W的电力模式,让彼此在运算性能部分可以有一样的表现。
从双方的规格差异来看,会造成整体性能落差的主要因素,仍在程序的内存消耗量,而Jetson Benchmarks工具可能没有触碰到该瓶颈。若程序使用超过2GB的内存,系统就需要将部分资料存储于Swap,将形成访问性能瓶颈,并影响整体性能表现。
由于2GB版的目标用户群体为AI程序与AIoT设备的入门者,撰写大型程序的机会不大,因此考量价格与性能的平衡,这样确实是不错的取舍,很适合教育单位或初学者选用。
介绍完使用场景以及一些性能分享,接下来给大家介绍一下硬件信息
大家可以在官网里面搜索对应的开发板,查看对应的接口信息,点击下面的网站 /embedded/learn/getting-started-jetson#support
我使用的是2GB的版本,所以我里面选择了Jetson Nano 2GB Developer Kit
打开其中的User Guide选项
选中之后我们就可以看到板子详细的硬件信息。或者大家可以直接用这个传送门查看信息。
详细的硬件信息介绍,
配合上图给大家介绍一下这块板子,硬件一一对应的位置:
40 针接头 (J6)
40 引脚接头提供对电源、接地和接口信号引脚的访问。
电源引脚
有两个 3.3V 电源引脚和两个 5V 电源引脚。这些是不可切换的;当开发人员套件连接到电源时,电源始终可用。
两个 5V 引脚可用于以每个 2.5A 的电流为开发人员套件供电。(不要同时通过这些引脚和 USB-C 连接器为开发人员套件供电。) 接口信号引脚 所有信号使用 3.3V 电平 默认情况下,所有接口信号引脚都配置为 GPIO,支持 I2C 和 UART 的除外
12 针按钮接头 (J12)
该头提供 GPIO 来控制板的状态。我们额外加的套件的外壳可以连接到此接头。
8 针按钮接头 (J11)
这是一个备用的 8 针 (2x4) 按钮接头,可焊接在载板上的位置 J11 上,并用作主按钮接头的替代。
标题详细信息:
总引脚/位置 8
2 排 4 针
间距为 2.54 毫米
无遮挡
通孔垂直
4 针风扇接头 (J7)
J7 位置的 4 针风扇控制接头的引脚排列如下所示。
接头可支持 3 针风扇连接(GND、PWR 和 TACH)或 4 针风扇连接(GND、PWR、TACH 和 PWM)。使用具有 PWM 功能的风扇允许软件根据需要调整风扇的速度。仅支持 5V 风扇。
控制风扇
风扇可通过PWM控制。
如果要向系统中添加风扇,请选择一个5V风扇:
具有40mm x 40mm的螺钉间距,用于与显影剂套件散热器连接
耗电量 开发工具包的总功耗是载体板、模块和外围设备功耗的总和,由您的特定用例决定。
Jetson模块有两种软件定义的电源模式。电源模式可以通过桌面右上角的UI界面进行切换,也可以按照L4T电源管理指南进行切换。
两种模块电源模式为:
10W-更高性能的默认模式 5W-建议减少能源使用
摄像头
照相机 有关Jetson生态系统支持的摄像头的完整列表,请访问我们的合作伙伴支持的摄像头页面。
所有与Jetson Nano显影剂套件和Jetson Xavier NX显影剂套件兼容的MIPI CSI-2相机也将与Jetson Nano 2GB显影剂套件配合使用。
安装软排线摄像头模块
要安装摄像头模块,请将其柔性带状电缆连接到摄像头连接器(J5)中。遵循以下步骤:
1.轻轻地提起连接器闩锁(参见第一个图)。
2.插入摄像头带状电缆。(参见第2和第3图)金属触点应朝向显影剂套件的中心。
3.轻轻按下连接器闩锁,直到停止。这可能需要两个手指,每个手指位于闩锁的一端。不要用力过猛。
至于USB摄像头,大家可以直接插入USB端口即可。
烧录镜像使用初体验
需要准备:
电源 type-c端口的5V-4A的电源
MicroSD卡(建议最低16GB UHS-1)
HDMI显示屏
USB键盘
USB鼠标
首先我拿到的nano2g版本是只有板子的,如果要板卡运行起来,我还需要准备一张64G的闪迪(建议用闪迪,因为有些内存卡不支持nano),用来烧录nano的镜像,此外还需要一根给板卡供电的type-c端口的电源适配器,大家也可以用现在支持3a或者4a的手机充电器配一个type-c端口的线。
这里要注意自己板子的版本
下载Jetson 下载中心 | NVIDIA Developer并解压得到镜像文件sd-blob.img 镜像下载
下载SD卡镜像,:/embedded/dlc/jetson-nano-dev-kit-sd-card-image
下载JetPack(看官网,需要JetsonPack 4.4.1才支持Jetson Nano 2GB ):/embedded/jetpack
使用官方的Etcher的SD卡烧录,或者也可以用Win32 Diskimg写入镜像
最好在烧系统前格式化SD卡一下,即 SD Card formatter(官网推荐)
连接外设(鼠标、键盘、显示器)并启动,这里如果我们要进行屏幕显示的启动,除了连接的HDMI显示器,鼠标和键盘也是必须要连接的,在Jetson Nano 2GB Developer Kit里面有描述。
通过这张图,大家可以清晰看到要是启动display,则Monitor, keyboard and mouse是必须的。
烧写完成后,将SD卡插入Jetson Nano,接上显示器和电源开机
最终启动效果如图:
配件使用
硬件风扇 和 wif模块 因为nano使用起来发热挺严重的,所以我在上面加了一个散热的风扇,nano 2g里面默认风扇的配件是没有,所以这个部分也是我自己购买的,不过我没有使用pwm控制的风扇,而是使用了直驱的风扇,并且在nano 2gb 板子上焊接了排插,接入风扇。
排插位置,以及对应的丝印的电源和GND位置:
实际安装情况:
安装之后检测一下CPU温度情况:这部分我们使用了jetson-stats这个包,此外我们也可以使用lm-sensors进行查询CPU实时温度。jetson-stats是一个软件包,用于监测和控制Nvidia Jetson设备的,其中jtop可以实时监测温度;
安装:
sudoapt-getinstallpython-pipsudo-Hpipinstalljetson-stats
使用:jtop 命令
这个时候在右下角,我们可以看到CPU温度在23.5摄氏度,这个是一个正常温度,而在没有风扇散热情况下,板卡待机的CPU温度能达到33摄氏度。所以还是很有效的散热。
此外因为板卡有时候需要进行下载东西以及进行远程调试,所以我们最好加一个wifi模块,方便我们的工作。
远程VNC 因为nano上面我们想跑一些视觉等等需要界面查看的模型,而不只是单纯的使用命令行进行访问,那么我们就需要用到远程桌面了。
说到远程桌面,可能大家会比较熟悉VNC Viewer这个软件。这里我们介绍如何配合Jetson Nano的 Desktop功能来远程访问。首先,下载并安装VNC Viewer软件到你的电脑上。(这里是下载链接) 需要先用HDMI屏幕和键盘等链接到Jetson Nano
安装vino
sudo apt install vino
设Enable VNC 服务 (此时手动可打开vnc server)
sudo ln -s ../vino-server.service /usr/lib/systemd/user/graphical-session.target.wants
配置VNC server:
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
编辑org.gnome,恢复丢失的“enabled”参数,输入一下命令进入文件,将下方key内容添加到文件的最后面。保存并退出。
sudo vi /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
设置为Gnome编译模式
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
现在屏幕共享面板在单位控制中心工作…但这并不足以让vino运行!所以您需要在会话启动时添加程序:Vino-server,使用以下命令行:
/usr/lib/vino/vino-server 这种是属于手动启动,如果每次都需要手动启动会比较麻烦下面会设置开机自启动的形式。
设置VNC登陆密码('thepassword' 修改为自己的密码)
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password $(echo -n 'thepassword'|base64)
重启机器,验证是否设置vnc 成功
sudo reboot
设置开机自启动VNC Server
VNC服务器只有在您本地登录到Jetson之后才可用。如果您希望VNC自动可用,请使用系统设置应用程序来启用自动登录。
gsettings set org.gnome.Vino enabled true
mkdir -p ~/.config/autostart
vi ~/.config/autostart/vino-server.desktop
将下面的内容添加到该文件中,保存并退出。
[Desktop Entry]
Type=Application
Name=Vino VNC server
Exec=/usr/lib/vino/vino-server
NoDisplay=true
如果系统设置为需要输入用户密码才可以进入桌面,以上的改脚本需要等进入桌面后才会启动,建议将系统设置为用户自动登录到桌面。
连接VNC Server 使用vnc viewer软件进行VNC连接,首先需要查询ip地址,我这里查到的是172.16.60.147,输入IP地址后点击OK,双击对应的VNC用户输入密码,最后进入到VNC界面
下载安装vnc deb包,链接
启动vnc界面,输入对应IP 进行连接:
结果如图:
nano使用介绍以及资料分享:
镜像完成安装了,使用的基本配套工具也准备好了,那么我们该怎么进行nano的使用呢?下面就给大家分享一些nano使用中,我们可以参考的学习资料,方便大家进行学习使用。
官方资料
首先进入官网最开始的nano介绍网页,里面就有对应的学习引导:
里面有AI的部分,有配合的机器小车的教程。
官方 Jetson Nano Developer Kit User Guide
/embedded/learn/get-started-jetson-nano-2gb-devkit#next
技术论坛:/embedded-computing
对应的英文技术论坛:https://forums./
还有jetson nano本身对应的社区,比如jetson projects以及专门tutorials
jetsontutorials
/embedded/learn/tutorials
jetson项目
大家可以在里面去搜寻符合自己需求的功能,看该项目的的源码或者博文,这是一个很快速的搭建自己工程的方法。
/embedded/community/jetson-projects
详细嵌入式开发指导说明:
这个部分就是比较详细的底层开发的指导了,包含基本的驱动的音视频开发,这个部分属于大家要深度定制化自己的板卡时候对应的资料:
/jetson/archives/l4t-archived/l4t-325/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/introduction.html#wwpID0E3HA
JetBot
NVIDIA JetBot是一个新的开源自动机器人套件,它提供了所有软件和硬件计划,以低于250美元的价格构建一个人工智能的深度学习机器人。硬件材料包括Jetson Nano,IMX219 800万像素摄像头,3D打印机箱,电池组,电机,I2C电机驱动器和配件。/master/index.html
国内的一些资料
创客智造:jetson/search/jetson/
微雪:jeston nano官方网页里面显示,微雪是nano的国内合作伙伴。/wiki/Jetson_Nano_Developer_Kit
英伟达嵌入式系统技术介绍资料:
/u/liumingkang
或者微信公众号 NVIDIA英伟达企业解决方案
去里面搜索Jetson nano 2GB 就可以看到相关的文章
结语
相比Jetson Nano 4GB 使用的GNOME桌面,Jetson Nano 2GB 使用的是轻量化的LXDE桌面,大幅节省内存。这也是Jetson Nano 2G版可以和4G版本运行大多数相同的项目的原因之一。
NVIDIA Jetson Nano 2GB对于想要运行计算量不大的项目,且预算不多的开发者来说绝对是性价比之选,可以仅以54美元就享受到其4GB版的绝大多数功能,但是不能否认的是其2GB的内存,在需要使用Jetson Nano训练模型的时候会略感缓慢。总而言之,Jetson Nano绝对是性价比之选。配合Jetson社区丰富的项目和课程,可以高效地进行AI学习。可以说是新手入门AI计算的绝佳之选。接下来我们就开始玩起来哈。
这就是我jetson nano使用的初步分享,后面继续分享在一些自己使用这块AI计算板卡的经验。如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。
作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧