Nvidia--Jetson Nano开发版测评

时间:2024-04-02 14:33:47

本文介绍 Apollo Cyber RT操作系统学习记录(一)

前几日,刚好收到Nvidia赠送一块Jetson Nano开发版,拿到之后我做的第一件事情就是… 开机,但我发现它没有带电源。。。并且wifi什么也不自带,好吧,那拿到它的第一件事情当然就是打开淘宝啦!先把电源,wifi啥的买了,给它装上了一个漂亮的外壳。这个是封装之后的nano。这个就是我们传说中的,英伟达AIOT的一款重量级产品 - Jetson Nano!

你可别小看这快板子,它可是可以跑Ubuntu 18.04, CUDA什么的一应俱全,并且具有4G显存的而且体积非常小的神器!为什么叫做神器,后面我会慢慢的讲,大家可以看看它的外形。

Nvidia--Jetson Nano开发版测评

Nvidia--Jetson Nano开发版测评

如果你只是想做一个小型的AI终端,比如人脸识别啦、检测老鼠啦、检测行人啦、监控你的植物是否缺水啦、制作你自己的自动驾驶校车啦。。。等等,都可以用这个微型电脑,并且!就这么一个小玩意,拥有4G显存!!非常不错,当我们对板子进行开机之后,就会发现英伟达绿光闪闪的桌面呈现在我们眼前。可以简单的check一下系统信息,惊喜的发现,哇,居然自带CUDA。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECp6h1rv-1590114691221)(assets/a.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IPeZUlAH-1590114691223)(assets/b.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-okt2RX1t-1590114691225)(assets/c.png)]

在正式对这快板子的性能进行评测之前,我需要给大家几点上手的建议:

  • 板子价格不贵,如果你搞AIoT,别用瑞芯什么的rk3399了,直接nano,为什么?CUDA还比不上你嵌入式的GPU?跑深度学习模型,得益于CUDA和TensorRT,完爆大部分嵌入式板子;
  • 板子买回来之后,别听网上人瞎扯淡买电源,一个microusb就可以供电,也就是以前的安卓手机充电线即可,为什么?因为我淘宝买了一个发现根本没有用。。白花了20块大洋,淘宝坑货多,后面实际用起来也没有功率不够的情况;
  • 板子买回来以后,别急着买鼠标键盘或者小的显示屏,**事实证明,nano链接我的2k显示屏没有任何压力!!**而且尺寸是21寸的!!我没有管那么多,插上DP接口就用,发现板子打起来没任何压力呀!!这超出我的意料,这要是raspberry或者rk3399估计发热已经爆炸了。
  • 板子回来以后,第一件事情去买个亚克力的外壳以及99块钱的摄像头。
  • 虽然用一个microusb可以处理大部分情况,但是如果你所有外设都加上的时候,还是可能会掉电,此时就需要再增加一个电源供电了。

别问我为什么摄像头这么贵,简单的usb视频聊天的那种我没有试过,你要买工业相机更贵,99块虽然比树莓派的那个摄像头贵了些,但是1080pi,画质更清晰,拍月亮更给力。

好了,前沿差不多介绍到这里。接下来正式开始nano的测评。

Summary

先给出一个关于nano的一个整体的总结,我们以问题的形式来回答:

  1. nano怎么刷系统?

    直接官方下载ubuntu18.04景象,你准备一个64G的tf卡就可以烧录了。

  2. nano支持CUDA几?

    CUDA10,当你刷入系统后,CUDA就已经自带了。据我所知,现在CUDA10是最新的稳定版本,很多深度学习框架都依赖于CUDA10,你CUDA10.1都太新了,比如tensorflow最新版就不支持cuda10.1,只能是cuda10.所以CUDA10足够了,至于以后更新,以后再说。

  3. nano具有opencv,cmake,gcc这样的编译工具吗?

    nano的ubuntu18.04与普通ubuntu使用没有差别,cmake你可以apt安装,也可以自己编译,我自己就在链接2k显示屏,外接键盘鼠标,优盘的情况下,编译了cmake,没有什么大问题,板子发热也不是很严重。另外需要说明的是,nano自带了opencv以及tensorrt。所以基本你需要的库都在这里了。

  4. nano怎么上网?

    你用一个usb的无线网卡就行。这个其实很方便。

  5. nano可以用来人脸识别吗?

    本文后面的评测会尝试评测一些主流算法,看看显存是否满足,实时性是否满足,可供参考。

  6. 买这个nano影响我开法拉利吗?

    不影响。

  7. nano带有opencv吗?

    据我所知,好像没有自带,需要自己编译或者直接从apt安装。

最后,也总结几个比较奇怪的地方:

  • 没有 nvidia-smi,查看显存占用不太方便,我不知道这算不算驱动安装成功了???
  • 没有locate,还得手动安装,这说明这个系统是个阉割版本,不过问题不大,毕竟是物联网板子,整太多东西先的臃肿。

总的来说在系统初始状态方面,足够的精简,但是简而不缺,一些重要的库都还是具备的。应该来说比树莓派强很多,树莓派那个系统才是真实要啥没啥。并且性能很弱鸡。

评测

今日要评测的方面主要是两个:

  • 板子的硬件性能,以及它的极限;
  • 一些常用算法的速度。

我们评测第二个之后,基本上就对这快板子的水准心里有数了,能不能用它来做AIOT,来做我们的AI本地服务器,就看它能把常用的算法跑到什么程度。我们将会cover的评测点包括:

  • caffe版本的yolov3+mobilenetv的速度;
  • TensorRT加速的yolov3的检测速度;
  • SSD目标检测的速度;
  • Nvidia官方FasterRCNN的运行速度;
  • TensorRT加速的MTCNN的运行速度;
  • Libtorch的HumanPose Estimation模型的推理速度;
  • TensorRT加速的BERT的运行速度。

以上评测我们将一个一个来,每一个都会给出一个总结,即nano的速度跟CPU和GTX1080系列的速度差异,对比这个差异不是看它比gtx系列强,而是看它差多少倍,这样我们在GTX1080或者其他大卡上跑,基本上除以一个倍数就可以知道它在nano上大概的速度。另外一方面,我们也会探索一下nano的显存极限,看看它运行我们跑的最大模型是什么。

caffe版本yolov3+mobilenetv2的运行速度

这个我们不使用tensorrt优化,而是直接在板子上编译一个GPU版本的caffe,然后inference我们的caffemodel,我们已经知道了这个模型在GTX1080 ti上的速度,看看它在nano上的表现怎么样。

首先说明一下,这是一片评测文章,很多算法可能有源代码,可能没有,有一些甚至我们内部项目尚未开源,但我们尽可能的给出每个测试的源代码,这个评测的代码可以在 http://manaai.cn 上找到。

在进行这个之前,必须得明确一个问题,nano上能编译GPU版本的caffe吗?说实话,单单这个步骤就踩了不少坑,原因不是caffe难以编译,而是硬件限制,导致最后编译阶段通常会卡死。

总结一下这个步骤的坑:

  • 除非交叉编译,否则难免需要在nano上编译你需要的库,但好歹nano能扛得过去,这要是树莓派或者rk3399,估计…. 已经炸了;
  • caffe算是一个比较复杂的,库依赖比较多的库,但是操作下来没有发现什么东西不支持的情况 (如果是raspberry的debian那个系统就有很多库没有arm版本),这个不错,最起码生态比较好。
  • 调用nano的nvcc编译cuda代码,似乎除了慢一些,没有其他的问题,别看它个子小,上阵杀敌不输于它的GTX哥哥们。

看一下我们在nano上编译caffe的过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tfblj35l-1590114691226)(https://s2.ax1x.com/2019/08/11/evyRRP.png)]

可以看到,还是可以编译的,并且编译比较成功,没有出现啥幺蛾子,主要是我们自己维护的caffe已经比较健壮了,采用cmake可以避免很多makefile造成的乱七八糟的坑。

另外我们再次编译了一些由caffe驱动的应用程序:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HKj6tYsC-1590114691227)(https://s2.ax1x.com/2019/08/11/evcr4A.png)]

依旧问题不是很大。这些代码其实在manaai.cn上可以找到对应的,寻找caffe框架的即可,最经典的是yolov3的mobilenetv2版本。网址传送门:

http://manaai.cn

大家可能关心nano上运行yolov3+mobilenetv2的速度如何,但是我得遗憾的告诉大家,nano在这个任务上扑街了。。。至于原因,猜测可能是我的电源功率不足,因为实际上是能跑起来的,但是跑起来之后系统就掉点down机了,不确定是不是功率问题,后面等我换个电源再来评测。

但是至少我们得到了这些通过实践得来的结论:

  • nano跑caffemodel没有问题,编译GPU版本的caffe是没有问题;
  • nano load yolov3这么大的网络是没有问题的,并且可以成功load网络。

tensorrt加速的yolov3

上面那个测试扑街之后,我们不能放弃。我们继续尝试用tensorrt加速的yolov3,事实证明,tensorrt加速之后对于网络的运行效率有很大的提升。我们实际上测试的结果如下:

Nvidia--Jetson Nano开发版测评

对于416的输入尺寸,inference一张图片的速度大概是56ms左右。 我们测试的yolov3是从darknet转换的版本,因此这个速度应该来说是非常快的,而且考虑到第一次load模型具有一定的预热时间,估计video inference的时候速度会更快。

简单测试的结果表明,nano推理yolov3模型几乎可以达到一个实时。

结论

后面的几个测评我们后面继续测试,由于我们的电源供电不足导致caffemodel推理的时候出现掉电的情况,还需要更换电源继续测试。但初步可以总结如下:

  • 这是一块性能非常强悍的板子,更重要的是软件资源非常丰富,你可以编译依赖库非常复杂的caffe,并且你还可以任意编译任何你的tensorrt加速的模型;
  • 这快板子的推理速度可以满足一些基本的需求。比如目标检测等。

在接下来的测试中,我们将基于jetson nano开发一些比较有趣的应用程序,并且会将代码开源到mana平台,我们打算做的list包括:

  • 基于yolov3的人流和车流的检测;
  • 基于MTCNN的人脸检测和比对(带人脸建库);
  • 我们将会尝试使用TensorRT加速onnx模型,给大家展示一个头盔检测的demo;
  • 基于yolov3的手检测器,也就实时检测你的左右手。

如果你想继续跟进我们的更新,欢迎订阅我们的专栏,这样我们只要已更新,你就可以收到更新通知。也欢迎来我们的社区交流更多的AI问题:

http://talk.strangeai.pro