Jetson Nano 夜用超长评测

板子的基本配置:

目前来说,我也算是国内比较早拿到板子的吧!

盒子背面还是有比较详细的一些介绍.

特别注意的是,这里提供电源有四种模式,分别是5V 2A(USB)/5V 3A(GPIO引脚)/5V 4A(DC接口)/5V 6A(所有电源IO反向供电),5V 2A是受限于USB自身,这就奇怪了,明显可以做Type-c接口,支撑更大功率?为什么没有做呢?

另外由于架构和核心多重原因,这个板子满功率大概是10W,剩余的功耗,是用于提供其他外设,比如以太网,USB等等.我实测如果使用华为5A USB线,也能启动带的动这个板子.(注:适配器标定5V 8A)

另外,如果使用DC供电,则必须禁用USB电源.(短路帽插上)

串口和音频口在不是很显眼的位置出现.

不过,标注是非常清晰的.(这串口还有流控?)

另一边还有40P的树莓派兼容排针,他的右边,当然就是POE排针了.

同样的,有很清晰的标注,这一点,比树莓派强.

为了更方便地散热,风扇接口也做了,就是不知道是否兼容大多数主板风扇定义.

在底部还留有电池座,应该是芯片内有RTC外设.

在核心板下方,还有MiniPCIE的接口.

想来可以接无线或者其他什么设备进来,看走线,走的是PCIE协议.

在主板有个非常特别的飞线电容.

核心板预留了EMMC位置.

可能以后会提供带EMMC版本?

当然,上图还有突兀之极的中文丝印,不过想到板子全是在国内生产,这样也不是很奇怪的事情.只是老外看得懂吗?

总体来说,用料是很扎实的,网口是EDAC的,核心板接插件是TE的.

除了主板,还包含一份简易说明,只是这个说明,有点简单.

这个板子必须要买的配件有哪些?首先,如果要做实时分析,摄像头是一定要的,可以是Pi官方摄像头,也可以是USB摄像头,只不过,如果是USB摄像头的话,程序要微调一下.屏幕,是必备品,因为开机配置如果不做的话,启动根本不会继续往下执行.

虽然,我很多时候也只是用来做分析,通常在终端环境下就够用了,但是如果没屏幕根本没法进行下一步,我测试过这个屏幕可以用:http://wiki.52pi.com/index.php/5-Inch-800×480-HDMI-TFT-LCD-Touch-Screen_SKU:Z-0053

当然,没有键鼠,也没法继续,这些,也要自备了.

最后,因为Jetson Boot时间比较长,所以,一开始是没画面的,大概要等30秒才能看到开机过程,并且,首次启动网络灯是不会闪的.(路由侧会闪烁),也不怎么发热.配置完整个过程还需大约20分钟,主要还是大多数资源在网络,且拔掉网线也会使劲重试到超时,还不如多等一会.

软件资源基本就是系统一个,Ubuntu 16.04 x64宿主机(包括nvidia-docker并下载有DIGITS.),其他东西基本没有.

至于其他软件?你就当他是ARMv8板子跑就是,CPU性能的话,肯定不是值得炫耀的部分,但是也不会差到哪里,毕竟还要靠CPU打包数据.至于从数据看,是比树莓派出彩的!

以图形部分,BCM2837 VideoCore IV:(28.8 GFLOPS) 对比 128 Maxwell GPU(472 GFLOPs),完全不是一个水平线.

最后补刀,如果要扩展配件,将是无底洞~ 欢迎入坑~ (已经通过买各种模块板子,至少是5位数水平了吧.)

测试软件:

  1. 系统镜像:jetson-nano-sd-r32.1-2019-03-18.zip (你猜哪里下载?不知道?那你一定没好好读说明书:https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit)
  2. 其他软件:https://github.com/dusty-nv/jetson-inference

很幸运的是,由于Jetson Nano出生比较晚,所以JetPack是预装在系统里面了.但是,系统也真的大,以至于我烧了1个小时以上.建议大家有条件,还是买个更快一点的TF卡,不然会拖后腿的.

另外这个比较挑卡,我这里有好多不同品牌的卡,结果只有一个能启动?

JetPack大概就是TensorRT/Caffe等各种神器集合,也算是CUDA的一个中间件.

废话太多了,太多了,下面马上….上….前奏.主要是实现物体标记和物体识别.大家接触了很多CNN相关的东西,所以对这两个肯定也不陌生.至于基础的方程预测之类的,官方没有给出例子,当然,这些自己写也很简单.

先安装cmake,下载需要的源.

$ sudo apt update
$ sudo apt install cmake
$ git clone --recursive https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ mkdir build
$ cd build
$ cmake ../

嗯,这个过程很漫长,因为下载大量的软件.如果你网络可以直接访问英伟达的网站,那可以直接cmake,如果不能的话.就需要处理一下,至于怎么做,就不方便说了,大家肯定有办法.

下载过程如下图.(大约1.5GB+数据要下载,根据网速不同,所需时间也不同,Jetson Nano配备的是千兆网卡)

cmake完成后应该如此:

接下来make编译,但是产生了很多警告,这类警告只是编码规范问题,不影响程序结果.

通过sudo make install完成安装.

完成后,你得到了一个支持GOOGLENET/GOOGLENET-V12/ALEXNET网络框架的CUDA优化的机器学习支持库.

先试试图像分类,目前用的是默认训练好的库.

$ cd jetson-inference/build/aarch64/bin
$ ./imagenet-console bird_0.jpg output.jpg

运行过程日志也是有输出的,第一次运行会比较慢,因为神经网络第一次加载时候需要解释.后面会讲到如何构造自己的神经网络训练结果包,这个包也就是丢到Jetson上面用的.

嗯,判断准确度还可以,他认为这个图是American robin,实际上他肯定不止一个结果,只是显示了最可信的结果出来.

但是由于这个库可能是训练不太好,我上传了个苹果,识别出来是石榴?

而其他候选结果,分别是无花果>澳洲青苹>橙子>七叶树.

不过,处理速度确实很快,可见,直到输出层也只需要80ms,相对于在树莓派上来做,都要用秒来衡量的.

这个程序还是开源,代码也不难:https://github.com/dusty-nv/jetson-inference/blob/master/imagenet-console/imagenet-console.cpp

而特定物体查找的例子,跟这个也差不多.

$ ./detectnet-console peds-001.jpg output.jpg facenet

从返回结果看到,捕获了3个对象以及他们的坐标.

结果是这样的.

但是当我随机在互联网上找到另一张图时,表现就差了一些了,也许还是训练不足的原因.

而且,目前也只有几个模型,更多,还是去训练吧.(注意看classes,就是能识别的类)

既然训练不足,不能满足现状的话,只能使用DIGITS重新训练了.

但是,训练只能在PC上做,做好之后,把训练结果变成一个压缩包放在SD卡上,实现离线识别.至于为什么不用开发板直接跑识别,我觉得主要问题不在性能,而在储存上(带宽/容量).

记得Movidius上也是如此,先在PC上训练,再最终训练结果写入棒子(本来训练结果就比较小,训练集比较大),然后实际使用就可以了.

不过,有一点特别要注意的是,nvdia-docker中绑定的路径,才是真正的操作路径.而非官方git中给出的参考路径形式,如下图,目录是/data下的ilsvrc12目录.

只要训练之后,下载训练后的结果层次,就可以使用了,当然也可以自己添加训练数据,目录中的形式表示得很明白,最后还可以先在PC上测试.

下载的训练结果,复制到Jetson Nano中解压,指定NET环境变量之后,就可以开始使用了.由于这些数据试验结果也是没什么差别的,所以就不再重复了.

NET=networks/GoogleNet-ILSVRC12-subset

如果真要得到更准确的数据,还需要自己真正的找一堆数据来分类,让学习结果更靠谱.

其他方面来说,系统是基于ARMv8的,真正的64位系统.

从sysbench结果来看,CPU性能大约是30倍于树莓派3B Plus @ ARMv7,主要得益于DDR4,CPU内核较好,且使用64bit指令集.

在连续执行识别操作,并运行stress耗尽CPU性能,再观察内部温度传感器,竟然如此凉快?当然,也许是因为大散热器的原因,但是,实际温度依然在缓慢上升,在实际使用中,最好是配备散热器的.

5分钟后的温度结果.

另外系统中配备了很多针对NV GPU优化的软件,这也是一大亮点.

并且是Unity桌面系统,尤其漂亮,只是比较吃GPU.

还内置了Docker,Python 3,Cuda支持,OpenGL支持,OpenCV支持,谷歌浏览器,文档编辑器,GCC7等,可以看作是比较完整的Ubuntu发行版.16G的TF写入后预计剩余空间都不足1G,推荐使用32G以上或者外挂储存.

如果给他定位成高端树莓派,那还是不值当的,毕竟人家擅长的是GPU啊.

最后来一个功耗实测,共同的测试条件:

  • 无USB设备
  • 无额外配件
  • 以太网有线连接(10Gbps)
  • SSH登录
  • 使用DC接口供电

测试结果,满载时为死循环识别图片(GPU)或使用stress耗尽性能(CPU):

  • 空载:0.533A @ 5.1V
  • CPU满载,GPU空载:1.117A @ 5.1V
  • GPU满载,CPU空载:2.133A @ 5.0V
  • CPU,GPU满载:2.838A @ 5.0V
  • CPU,GPU满载,且接入HDMI屏幕,HDMI屏幕独立供电:3.017A @ 5.0V

转载请注明:《Jetson Nano 夜用超长评测

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据