前几日,刚好收到Nvidia赠送一块Jetson Nano开发版,拿到之后我做的第一件事情就是… 开机,但我发现它没有带电源。。。并且wifi什么也不自带,好吧,那拿到它的第一件事情当然就是打开淘宝啦!先把电源,wifi啥的买了,给它装上了一个漂亮的外壳。这个是封装之后的nano。这个就是我们传说中的,英伟达AIOT的一款重量级产品 - Jetson Nano!
你可别小看这快板子,它可是可以跑Ubuntu 18.04, CUDA什么的一应俱全,并且具有4G显存的而且体积非常小的神器!为什么叫做神器,后面我会慢慢的讲,大家可以看看它的外形。
如果你只是想做一个小型的AI终端,比如人脸识别啦、检测老鼠啦、检测行人啦、监控你的植物是否缺水啦、制作你自己的自动驾驶校车啦。。。等等,都可以用这个微型电脑,并且!就这么一个小玩意,拥有4G显存!!非常不错,当我们对板子进行开机之后,就会发现英伟达绿光闪闪的桌面呈现在我们眼前。可以简单的check一下系统信息,惊喜的发现,哇,居然自带CUDA。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECp6h1rv-1590114691221)(assets/a.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IPeZUlAH-1590114691223)(assets/b.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-okt2RX1t-1590114691225)(assets/c.png)]
在正式对这快板子的性能进行评测之前,我需要给大家几点上手的建议:
别问我为什么摄像头这么贵,简单的usb视频聊天的那种我没有试过,你要买工业相机更贵,99块虽然比树莓派的那个摄像头贵了些,但是1080pi,画质更清晰,拍月亮更给力。
好了,前沿差不多介绍到这里。接下来正式开始nano的测评。
先给出一个关于nano的一个整体的总结,我们以问题的形式来回答:
nano怎么刷系统?
直接官方下载ubuntu18.04景象,你准备一个64G的tf卡就可以烧录了。
nano支持CUDA几?
CUDA10,当你刷入系统后,CUDA就已经自带了。据我所知,现在CUDA10是最新的稳定版本,很多深度学习框架都依赖于CUDA10,你CUDA10.1都太新了,比如tensorflow最新版就不支持cuda10.1,只能是cuda10.所以CUDA10足够了,至于以后更新,以后再说。
nano具有opencv,cmake,gcc这样的编译工具吗?
nano的ubuntu18.04与普通ubuntu使用没有差别,cmake你可以apt安装,也可以自己编译,我自己就在链接2k显示屏,外接键盘鼠标,优盘的情况下,编译了cmake,没有什么大问题,板子发热也不是很严重。另外需要说明的是,nano自带了opencv以及tensorrt。所以基本你需要的库都在这里了。
nano怎么上网?
你用一个usb的无线网卡就行。这个其实很方便。
nano可以用来人脸识别吗?
本文后面的评测会尝试评测一些主流算法,看看显存是否满足,实时性是否满足,可供参考。
买这个nano影响我开法拉利吗?
不影响。
nano带有opencv吗?
据我所知,好像没有自带,需要自己编译或者直接从apt安装。
最后,也总结几个比较奇怪的地方:
总的来说在系统初始状态方面,足够的精简,但是简而不缺,一些重要的库都还是具备的。应该来说比树莓派强很多,树莓派那个系统才是真实要啥没啥。并且性能很弱鸡。
今日要评测的方面主要是两个:
我们评测第二个之后,基本上就对这快板子的水准心里有数了,能不能用它来做AIOT,来做我们的AI本地服务器,就看它能把常用的算法跑到什么程度。我们将会cover的评测点包括:
以上评测我们将一个一个来,每一个都会给出一个总结,即nano的速度跟CPU和GTX1080系列的速度差异,对比这个差异不是看它比gtx系列强,而是看它差多少倍,这样我们在GTX1080或者其他大卡上跑,基本上除以一个倍数就可以知道它在nano上大概的速度。另外一方面,我们也会探索一下nano的显存极限,看看它运行我们跑的最大模型是什么。
这个我们不使用tensorrt优化,而是直接在板子上编译一个GPU版本的caffe,然后inference我们的caffemodel,我们已经知道了这个模型在GTX1080 ti上的速度,看看它在nano上的表现怎么样。
首先说明一下,这是一片评测文章,很多算法可能有源代码,可能没有,有一些甚至我们内部项目尚未开源,但我们尽可能的给出每个测试的源代码,这个评测的代码可以在 http://manaai.cn 上找到。
在进行这个之前,必须得明确一个问题,nano上能编译GPU版本的caffe吗?说实话,单单这个步骤就踩了不少坑,原因不是caffe难以编译,而是硬件限制,导致最后编译阶段通常会卡死。
总结一下这个步骤的坑:
看一下我们在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机了,不确定是不是功率问题,后面等我换个电源再来评测。
但是至少我们得到了这些通过实践得来的结论:
上面那个测试扑街之后,我们不能放弃。我们继续尝试用tensorrt加速的yolov3,事实证明,tensorrt加速之后对于网络的运行效率有很大的提升。我们实际上测试的结果如下:
对于416的输入尺寸,inference一张图片的速度大概是56ms左右。 我们测试的yolov3是从darknet转换的版本,因此这个速度应该来说是非常快的,而且考虑到第一次load模型具有一定的预热时间,估计video inference的时候速度会更快。
简单测试的结果表明,nano推理yolov3模型几乎可以达到一个实时。
后面的几个测评我们后面继续测试,由于我们的电源供电不足导致caffemodel推理的时候出现掉电的情况,还需要更换电源继续测试。但初步可以总结如下:
在接下来的测试中,我们将基于jetson nano开发一些比较有趣的应用程序,并且会将代码开源到mana平台,我们打算做的list包括:
如果你想继续跟进我们的更新,欢迎订阅我们的专栏,这样我们只要已更新,你就可以收到更新通知。也欢迎来我们的社区交流更多的AI问题:
http://talk.strangeai.pro