Intel推出的人工智能神器你值得拥有

时间:2017-11-22 作者:Andrew Back 来源:欧时电子

文章素材来源于RS(欧时电子元件)



Neural Compute Stick (神经计算棒),让人工智能在低功率嵌入式应用中成为现实。

人工智能 (AI),与核聚变清洁能源一样,数十年来被人们认为将对社会产生深远的影响,凭借近年来取得的科技进步,人工智能终能应用到更广泛的实际应用中。但是仍有一个问题未解决:视觉处理等多种关键应用是计算密集型应用,低功耗设备的本地处理能力显然无法胜任。

Movidius — 现已归于 Intel 麾下 — 推出 Myriad 2 视觉处理单元 (VPU),解决了这个问题。该单元可在低功耗条件下实现软件可编程的机器视觉。

在本文中,我们对 Myriad VPU 技术和相关 SDK 进行初步探索,并利用神经计算棒 (NCS) 获得实际操作经验。神经计算棒支持低成本开发和原型制作。


100Gflops 功耗仅为1W

来源:Movidius Myriad 2 VPU 产品简述

Movidius 神经计算棒 (139-3655) 带来出众的视觉处理性能,运算性能超过 100Gflops,能耗仅约 1W。采用 600MHz 系统芯片 (SoC),集成 12x VLIW 128 位处理器,核心优势为 2MB 片上存储器,传输速率为 400Gbps。

产品的主要特点有:

  • ◆支持 FP16、FP32 和整数运算,支持 8、16 和 32 位精度

  • ◆在设备上实时推断,不需要云连接

  • ◆快速部署现有卷积神经网络 (CNN) 型号或经独特训练的网络

  • ◆通过主机 PC 上的单个 USB 3.0 端口输送所有数据和电源

尽管该产品配备 USB 3.0 端口,但 USB 2.0 端口便足以应对多数应用。另外请注意,为获得更高的性能,可通过合适的 USB 集线器连接多个 NCS。


Caffe 支持

开放资源Caffe 框架 可对深度学习应用提供支持。它由伯克利人工智能研究 (BAIR) 实验室开发。Caffe 的指导原则如下:

  • ◆表达形式:模型与相应优化以文本形式而非代码形式给出。

  • ◆速度快:对于研究和类似工业而言,速度是高科技模型和海量数据的重要基础。

  • ◆模块化:新任务和设置需要能够灵活调整和扩展。

  • ◆开放性:要取得科学和应用进步,需要公共代码、参考模型以及再现性。

  • ◆社区性:通过共同讨论和开发 BSD-2 项目,学术研究、早期原型和工业应用可以分享成功经验。

项目网站详细介绍了 Caffe 的架构和功能。如果您像我一样极少接触人工智能技术,那么还有相当多的知识需要了解。但是无需惊慌,因为 Movidius 神经计算 (NC) SDK 囊括了框架和硬件支持,以及采用现有神经网络模型的应用示例。换句话说,您可以随时开始使用,评估网络和 NCS 硬件的性能。


SDK 安装


要安装 NC SDK,需要运行 Ubuntu 16.04 的计算机。其它系统也许能够安装,但这是唯一指定的操作系统。

下面我们将介绍简要的操作步骤,推荐下载入门指南 PDF 和其它官方文件,获得更详细的说明。

一旦下载完毕,NC SDK 可以随以下组件一起安装:

$ sudo apt-get update

$ sudo apt-get upgrade

$ tar xvf MvNC_SDK_1.07.07.tgz

$ tar xzvf MvNC_Toolkit-1.07.06.tgz

$ cd bin

$ ./setup.sh

安装可能需要一段时间,因为工具包将与相关组件一起安装。请注意,安装脚本通过更新 ~/.bashrc 文件来设置相应的 PYTHONPATH 环境变量。例如,默认安装位置应加入的代码行为:

export PYTHONPATH=$env:"/opt/movidius/caffe/python":$PYTHONPATH

如果其它用户想要使用 SDK,他们也需要将该行代码加入各自的 ~/.bashrc 文件。

假设我们仍然在二进制目录中,然后为示例代码安装 Caffe 模型:

$ cd data

$ ./dlnets.sh

如果我们回到 SDK 根目录下,那么便可安装 API:

$ cd ../..

$ tar xzvf MvNC_API-1.07.07.tgz

$ cd ncapi

$ ./setup.sh

 

要安装 NC SDK,需要运行 Ubuntu 16.04 的计算机。其它系统也许能够安装,但这是唯一指定的操作系统。

下面我们将介绍简要的操作步骤,推荐下载入门指南 PDF 和其它官方文件,获得更详细的说明。

一旦下载完毕,NC SDK 可以随以下组件一起安装:

$ sudo apt-get update

$ sudo apt-get upgrade

$ tar xvf MvNC_SDK_1.07.07.tgz

$ tar xzvf MvNC_Toolkit-1.07.06.tgz

$ cd bin

$ ./setup.sh

安装可能需要一段时间,因为工具包将与相关组件一起安装。请注意,安装脚本通过更新 ~/.bashrc 文件来设置相应的 PYTHONPATH 环境变量。例如,默认安装位置应加入的代码行为:

export PYTHONPATH=$env:"/opt/movidius/caffe/python":$PYTHONPATH

如果其它用户想要使用 SDK,他们也需要将该行代码加入各自的 ~/.bashrc 文件。

假设我们仍然在二进制目录中,然后为示例代码安装 Caffe 模型:

$ cd data

$ ./dlnets.sh

如果我们回到 SDK 根目录下,那么便可安装 API:

$ cd ../..

$ tar xzvf MvNC_API-1.07.07.tgz

$ cd ncapi

$ ./setup.sh

然后有一系列示例可以从二进制目录运行,以检验 NCS 运行效果。

$ cd ../bin

$ make example00

$ make example01

$ make example02

$ make example03


视频流推断示例

Python 流_推断示例

现在我们来看看更有趣的示例!该示例需要一台视频输入设备,我们决定使用 Logitech C920 全高清网络摄像头 (125-4272),因为它能够出色地支持 Linux 系统。

$ cd ../ncapi/tools

$ ./get_models.sh

$ ./convert_models.sh

$ cd ../py_examples/stream_infer

$ python3 stream_infer.py

哎呀!60.60% 的显示上限?!好吧,先别急着发火 — NCS 做的只是苦力活,而我们依靠卷积神经网络 (CNN) 来进行推断。公平地说,这一点可以理解。无论如何,由上图可以看出,同一示例中对咖啡杯的处理效果更好,而对其它物品也有类似的处理效果。

这里的重点是人工智能进行推断的速度 — 以及所需的能耗,这一过程对能源消耗的确很快。

示例 stream_infer.py 中使用的默认模式称为 SqueezeNet。它属于一种 CNN,识别精度与比它早 4 年左右出现的 AlexNet 相似,它可以将LSVRC-2010 ImageNet 训练集中的 130 万张高清照片分成 1000 个不同的类别。据说,Albeit SqueezNet 可以用比 AlexNet 小 510 倍的模型实现这一点。

经配置,stream_infer.py 可以使用 SqueezeNet 或 AlexNet,以便对比在 NCS 上的使用效果。这仅仅与 Python 文件接近顶端位置的注释行(取消注释行)有关。除此以外,Gender 和 GoogleNet 模型也可以用同样的方法进行配置。例如:

NETWORK_IMAGE_WIDTH = 224 # the width of images the network requires

NETWORK_IMAGE_HEIGHT = 224 # the height of images the network requires

NETWORK_IMAGE_FORMAT = "RGB" # the format of the images the network requires

NETWORK_DIRECTORY = "../../networks/GoogLeNet/" # directory of the network

示例 stream_infer.py 将在 NETWORK_DIRECTORY 中寻找 “graph”、“stat.txt” 和 “categories.txt” 文件。如果我们对比 AlexNet 和 SqueezeNet 的图片文件大小:

二值图的大小差距不到 510 倍,但也相当明显。


网络编译和分析

来源:Movidius NCS 工具包文件

新的 CNN(例如用于分类现有 CNN 未涵盖的图像)可以使用合适的框架进行设计和训练。然后该网络可编入图像文件,并使用 SDK 配备的 NCS 工具包进行配置。


面向嵌入式平台

API 必须首先与工具包安装在同一台计算机上(Ubuntu 16.04 x86-64 操作系统),但是库文件、头文件等可随后安装在其它平台上。实际上,SDK 提供了一系列 Raspbian Jessie 包。这意味着一旦安装了这些包,以及来自 Raspbian repo 的相关组件,只需在 stream_infer.py 中修改一行代码,该示例便可在 Raspberry Pi 上使用。

典型应用

Movidius VPU,用于全新 Motorola Moto Mod 中的 4K VR 像素处理。来源:movidius.com

机器视觉应用包括:

  • ◆无人机和机器人

  • ◆增强现实和虚拟现实领域

  • ◆可穿戴器件

  • ◆智能安全


Myriad VPU 在安全摄像机上的作用显而易见,例如识别停靠在车道上的车辆或区别窃贼和宠物。同样显而易见的是,它对于大幅提高家用机器人(例如吸尘器)和无人机应用(躲避或搜寻物品)价值的作用。这只是该技术的部分应用,人们很容易能够找到更多的用途。


最初的想法

在 Movidius 技术的帮助下,人工智能已广泛应用于许多实际应用中,许多先进产品纷纷寻找使用契机,例如智能手机的 4K VR 像素处理附件和无人机的感知和规避系统。神经计算棒的推出意味着任何人都可以立即开始用 Myriad 2 VPU 开展实验,同时轻松赋予现有嵌入式平台强大的深度学习能力。

上一篇: 【强烈推荐】慕课课堂--听谢博士讲创客教育(连载一) 下一篇:创客教育连续统:激活众创时代的创新基因