NCS

端设备数据预处理的强烈需求,大量 IoT 设备厂商会面临智能化变革,尤其是像智能摄像头、无人机、机器人、AR/VR 等领域的厂商。

通过将最新的 Movidius VPU 技术融入现有的 AI 端设备解决方案组合,Intel 已经准备好帮助开发者和数据科学家们开拓低功耗智能设备领域的边界。

  • Intel 的 Movidius 神经计算棒(NCS)
  • 神经计算 SDK(NCSDK)开发包

旨在降低开发者和数据科学家开发和制造智能端设备原型的门槛。

优化你深度学习模型时可以加速深度学习推理的辅助工具,这就是今天爱板网要给大家推荐的全球首款基于USB接口、便携小巧、且能加速深度学习推理的学习、开发、调试验证工具——由Intel推出的Movidius神经计算棒(Neural Compute Stick,为了方便,下文将简称NCS)。

GPU---Graphics Processing Unit 图形计算单元,通常就是我们说的显卡核心,负责处理图像信息,少量GPU也能当作CPU,协处理器负责科学计算。
CPU---Central Processing Unit 中央处理器,是电脑的核心部件,控制整个电脑的运行,显卡也不在话下。内部整合了逻辑处理器,控制器。

TPU---Tensor Processing Unit 张量处理单元,是一款为机器学习而定制的芯片,主要用于人工智能领域,一般人用不到。


不同于传统观点认为的那样,“深度学习就一定需要高性能的GPU、TPU、FPGA等硬件平台,一定需要高速的网络带宽”,NCS正在打破这种局限,为那些想入门人工智能领域的学生、从业者提供了一种边缘计算的深度学习可行性,而你达成这一切所需要的仅仅是一个支持Linux系统的便携式硬件平台,如市面上的树莓派、Up Board等,再加上一根Movidius神经计算棒即可,当然,要是有摄像头等外设那无疑是锦上添花。铺垫结束,是时候进入正题,来看看Intel的Movidius神经计算棒到底是个怎样的玩意。

Movidius的品牌很显眼,这是Intel16年收购的一家从事机器视觉芯片的公司,其Myraid系列VPU以低功耗高性能著称(下文详说),在大疆无人机,谷歌Clips相机上均被采用。

虽然暂时无法拆开NCS一探内部情况,但是从目前的信息来说,我们至少知道NCS可以加速深度学习推理主要依赖于内部的视觉处理单元(Vision Processing Unit) Myriad 2。这里有必要提一下,深度学习的细分领域非常多,而NCS主要的特点是针对深度学习中的图像和视频的处理

NCS_第1张图片


Myriad 2具体的性能指标可以以48FPS的帧率同时处理来自12个1300万像素摄像头的数据,换句话说,以60FPS拍摄4K视频是毫无压力的,当然,这是目前很多GPU也都能做到的事,而Myriad 2的优势在于在实现这些功能的前提下保持较低的功耗,相比能够提供同等效果的GPU,Myriad 2的功耗低了最少10倍。所以,如大家所见到的一样,NCS只需要通过电脑上的USB接口供电即可。对于目前市面上火爆的需要有较强图像/视频处理能力且需要电池供电的应用,如服务型机器人、无人机、AR/VR等设备,Myriad 2有着非常大的优势。

硬件平台搭建:

  • 1根神经计算棒(Intel Movidius Neural Compute Stick)
  • 1个搭载ubuntu16.04系统版本的硬件平台(官方特意强调了树莓派3B,毕竟这是全球使用最广的开源单板计算机,同时也是最具性价比的硬件平台,重要的是让人人都玩得起)

软件开发包(很重要):

  • Intel Movidius Neural Compute SDK(NCSDK)
  • Neural Compute Application Zoo (NC App Zoo)

目前,网上可以找到配套NCS使用的软件开发包主要有上面两个,放在Github上,用户很容易获取到,

NCSDK属于官方提供发布的,很权威,里面包含了软件工具、API以及例程等资料,通过对这几个工具以及API的理解可以有效的了解NCS的工作原理

NC App Zoo是一个让用户可以分享自己使用NCS做的一些应用、模型的地方,有兴趣的可以点击上面的链接查看,这里主要讲下NCSDK中的几个重要的工具。

可以看到,NCS配套的SDK中已经集成了一些网络模型,例如GoogLeNet,AlexNet,SqueezeNet等,可以直接拿来使用,开发者也可以使用自己训练的网络模型,只要这些网络模型与NCS支持的网络层匹配,当然,这要求本身有深度学习模型开发的基础了。

下面就以一个实例来了解下NCS如何加速推理工作的,在我们平时的应用中,也有不少开发者直接采用像树莓派等开源硬件平台套上CNN模型做图像识别等功能,但是会发现占用大量的CPU资源,CPU处于负荷状态且识别过程比较慢,如果使用NCS又会如何呢?笔者随意在百度上搜索了几张动物的图片进行识别测试。

修改run.py文件中识别图片路径。

第二张图片识别结果:

第四张图片识别结果:

可以发现,在识别是什么物种的时候还是非常准确的,至少知道了是猫、狗、马、虎,但是在具体是什么物种中的什么类型就难说了,毕竟,即便是一个人,不了解这个物种,你也不知道它具体属于华南虎还是东北虎。其中有一点需要注意的,除了第一张图片属于正面照,其它几张图片都是侧面照,从识别的结果判断也不难发现,侧面照识别的难度要远胜于正面照,当然也可能是样本有限的缘故。不过,这个模型至少应证了一件事,在有NCS加持的情况下,普通计算机在识别图像的时候确实已经超过了人。其它例程在本文就不演示了,之后笔者准备在树莓派上搭载摄像头进行相关测试,到时有缺漏的地方一起补齐。

小结

Intel Movidius神经计算棒(NCS)确实是一个不错的深度学习开发工具,可以帮助开发者分析、调试、验证神经网络,并为深度学习做推理加速,其主要优势在于开发和优化AI的离线应用。UP Squared Board+NCS的组合已经让笔者见识到了深度学习在图像识别领域中的优势,NCS神经计算棒结合Intel提供的NCSDK组合又能让开发者轻松入门AI,一句话,其实入门AI并没有想象的那么难,你欠缺的只是一个平台,后面笔者将继续体验Movidius NCS,并将以树莓派3B+NCS组合亮相,不知又会怎样?

好了,现在先来创建一个工作空间目录并克隆NCSDK:

  • cd ~
  • mkdir workspace
  • cd workspace
  • git clone https://github.com/movidius/ncsdk

再克隆ncappzoo,因为我们稍后会需要它。

  • git clone https://github.com/movidius/ncappzoo

然后找到下面的目录:

  • cd ncsdk/api/src

在该目录中,使用Makefile以纯API模式安装SDK:

  • make
  • sudo make install

测试NCS上的Raspberry Pi安装

安装结束后有必要测试安装情况,将NCS插到树莓派上,这里使用NC App Zoo中的代码进行测试安装情况。

  • cd ncappzoo/apps/hello_ncs_py
  • make run

运行结果

NCS_第2张图片

如果OK,你应该看到如上的输出。

SqueezeNet网络模型包含在NC App Zoo中,通过使用Makefile很容易生成所需graph文件。


本次基准测试中,首先使用树莓派3的CPU测试,然后再通过使用树莓派3与NCS的组合的测试情况。

为了好玩,后来又加入了Macbook Pro(带和不带NCS)的测试结果(不过这是通过构建和配置的Ubuntu 16.04虚拟机实现的)。

测试中使用三种深度学习模型:

  • SqueezeNet
  • GoogLeNet
  • AlexNet

为了简单起见,每次都使用同一张图片运行分类——理发椅:

NCS API模式工具链使用OpenCV 2.4,因此没有新的DNN模块。您不能在NCS中使用虚拟环境,因此您需要完全隔离的系统。

况。

为了好玩,后来又加入了Macbook Pro(带和不带NCS)的测试结果(不过这是通过构建和配置的Ubuntu 16.04虚拟机实现的)。

测试中使用三种深度学习模型:

  • SqueezeNet
  • GoogLeNet
  • AlexNet

为了简单起见,每次都使用同一张图片运行分类——理发椅:

NCS_第3张图片

由于终端输出的结果很长,所以下面我会分开截好几张图,另外,为了便于查看对比结果,最后我会整理一个对比结果表格。

以下是CPU命令(你也可以在你的树莓派或桌面/笔记本电脑上实际运行此命令):

NCS_第4张图片

下面是NCS上的命令, 使用刚刚通过的新修改后的脚本(你也可以在你的树莓派或桌面/笔记本电脑上实际运行此脚本):

NCS_第5张图片

http://www.eeboard.com/news/intel-94/

把代码放到工作目录下 run

你可能感兴趣的:(NCS)