Movidius 神经计算棒和 Raspberry 3 — quick start guide
我一直想尝试使用 Movidius神经计算棒(NCS)一段时间,并决定将它与Raspberry Pi 3结合使用 - 这个想法当然是将设置转移到支持移动功能的底盘(带轮或带翼的) !) 在不远的将来。
他们在英国卖得像热蛋糕一样 - 无论是制造批量还是制造批量。 RS Online上周获得了他们的最新批次,他们已经售罄 - 他们在过去几个月里已售罄两次。
硬件方面,120英镑+增值税可以为您提供NCS,Raspberry Pi 3和v2相机模块。操作系统和SDK当然是免费的,因此这是一个有趣的深度学习项目的相对较小的支出。
我发现Movidius文档要么丢失要么不完整 - 很多链接由Google索引现在404,论坛非常安静,Youtube视频和其他资源意味着需要运行完整Ubuntu的主机PC。事实并非如此 - 可以直接在您的Raspberry Pi 3上进行完整安装,如下所示。所以步骤如下(所有这些步骤都在Pi上执行,我们根本没有使用主机PC):
1.将Raspbian安装到您的Pi上 - 我们直接从网站上安装了 Stretch with Desktop。
2.接下来,从Github上的Movidius组织克隆ncsdk repo:
git clone https://github.com/movidius/ncsdk.git
快速说明:这不是您快速启动和运行所需的唯一仓库(见下文)。
3.确保使用bash运行install.sh,因为它有“bashisms” - 所以“sudo bash install.sh”。现在我们需要等待,因为Pi CPU的功能非常不足以满足下一步的需求。
4. scikit-image需要约30分钟才能编译 - 请耐心等待,喝杯咖啡和饼干。
5. Caffe需要大约1个小时才能编译(看起来它会耗尽RAM而不会 - 它使用~800 MB而Pi 3有1 GB所以我们可以在这里使用) - 更加耐心,参与其中必要的咖啡和饼干..
6. install.sh完成后,通过运行此文件来测试您的安装( https://github.com/movidius/ncsdk/blob/master/examples/apps/hello_ncs_py/hello_ncs.py),例如
python hello_ncs.py
您应该看到如下输出:
您好NCS!设备正常打开。
再见NCS!设备正常关闭。
NCS设备正常工作。
我们现在有一个有效的神经计算棒!
7.现在跑
做所有
在examples子目录中下载并构建一些模型进行测试(预训练的权重从dl.caffe.berkeleyvision.org下载)。这将构建三个模型 - GoogLeNet,AlexNet和SqueezeNet。这些模型在ImageNet上训练,因此他们可以识别构成ImageNet语料库的1,000个类别中的对象。实际上,您可以构建其中一个模型 - 我们希望比较相对性能,因此我们构建了所有模型。此步骤需要为每个模型下载预先训练的权重矩阵,并将Caffe模型编译为内部NCS格式,因此所花费的时间取决于网络连接的速度。
8.现在我们需要我们的第二个Movidius回购 - 克隆ncappzoo GH repo以获取stream_infer.py(这是 本视频中提到的相同脚本) - 否则你将需要OpenCV,这需要** 4小时!!! * *构建,你还需要编写Python代码来访问视频流 - 这不是问题,但我们不需要在这个快速入门指南中这样做。所以这是:
git clone https://github.com/movidius/ncappzoo
9.确保你跑步
sudo modprobe bcm2835-v4l2
将v2相机模块作为/ dev / video0设备加载,否则python脚本将只是挂起,因为它想要使用此句柄访问相机。
10.根据我上面链接的Youtube视频,你需要
sudo apt install gir1.2-gstreamer-1.0 git1.2-gst-plugins-base-1.0 python3-gst-1.0
不,我不知道为什么这些包装也有这么友好且容易记住的名字。这为我们提供了stream_infer.py想要使用的窗口系统API。
好的,现在我们终于可以看到NCS如何运行我们的目标模型!从ncappzoo / app / stream_infer目录运行stream_infer.py。我们加载了GoogleNet模型 - 确保您使用模型所需的正确图像尺寸(我们需要224x224x3用于GoogleNet),否则代码会因重新塑形问题而出错(ValueError:无法将尺寸为XXXX的数组重塑为形状(224) ,224,3))。
这是一个运行示例 - 安全别针是ImageNet的一个 类别,运行GoogleNet的NCS轻松地对其进行分类(95%)。凉..
PS NCS运行得非常热!
PPS TODO - 生成PR回到回购中有两件事:
(a)在Pi 3上编译时,获取脚本以使用make -j4至少更快地运行
(b)让脚本对Pi 3平台更具有网络感知能力。