Intel推出的人工智能神器你值得拥有
时间:2019-1-09 来源:BataGo倍塔狗 访问数:776次
文章素材来源于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 开展实验,同时轻松赋予现有嵌入式平台强大的深度学习能力。