在过去的五年中,深度神经网络已经解决了许多计算困难的问题,特别是计算机视觉。因为深度神经网络需要大量的计算力来训练模型,所以我们经常使用多块 GPU 或云端服务器进行分布式地训练。实际上,在深度神经网络模型经过训练后,它只需要相对较少的计算资源就能执行预测。这就意味着我们能将模型部署到低功耗的边缘设备中,并且在没有网络连接的情况下运行。 亚马逊的开源深度学习引擎 Apache MXNet 除了支持多 GPU 训练和部署复杂模型外,还可以生成非常轻量级的神经网络模型。我们也可以将这些模型表征部署到有限内存和计算力的移动端中。这就令 MXNet 可以完美地在树莓派中运行深度学习模型。 在本文中,我们将使用 MXNet 在树莓派上创建计算机视觉系统。我们同样也会讨论如何使用 AWS IoT 以连接到 AWS Cloud 中,因此我们可以使用云端管理轻量卷积神经网络,并令其在树莓派中实时执行目标识别。 所需设备 为了跟随本文完成这一实现,我们需要一个 Raspberry Pi 3 Model B 设备,并且它运行 Jessie 或其他更新版的 Raspbian 操作系统,同时还需要 Raspberry Pi Camera Module v2 和一个 AWS 账号。 配置树莓派 首先,我们需要设置树莓派的相机模块为摄像机,然后再安装 MXNet。这两步允许我们对树莓派「看见」的物体执行基于深度神经网络的分析。 设置相机模块:https://www.raspberrypi.org/learning/getting-started-with-picamera/worksheet/ 设置树莓派的相机模块,并通过以太网端口或 WiFi 连接设备到网络中。然后打开终端,键入以下命令以安装本文所需要的 Python 依赖库: sudo apt-get updatesudo apt-get install python-pip python-opencv python-scipy python-picamera 跟着安装指导在树莓派上安装 MXNet: 在本文中,我们构建的 MXNet 不需要 OpenCV 库。 如果在树莓派的终端键入如下命令行可以打开 Python 2.7 Read-Eval-Print-Loop (REPL) 环境,那么就安装成功了: python>>> import mxnet as mx>>> mx.__version__ 本地执行预测 如果需要对树莓派相机所捕捉到的图像执行预测,我们需要从 MXNet Model Zoo 中抽取预训练深度神经网络模型。在树莓派的根目录创建一个 Python 文件,并命名为 load_model.py,然后从 Model Zoo 下载 ImageNet 预训练模型并加载到树莓派的 MXNet 中: 源代码请见原文 下载了高精度的轻量模型后,可以尝试利用 ImageNet 预训练的 SqueezeNet V1.1 模型识别一张猫的照片,我们可以在树莓派的根目录上运行如下命令行: wget https://upload.wikimedia.org/wikipedia/commons/b/b9/CyprusShorthair.jpg -O cat.jpgpython load_model.py --img 'cat.jpg' --prefix 'squeezenet_v1.1' --synset 'synset.txt' --params-url 'http://data.mxnet.io/models/imagenet/squeezenet/squeezenet_v1.1-0000.params' --symbol-url 'http://data.mxnet.io/models/imagenet/squeezenet/squeezenet_v1.1-symbol.json' --synset-url 'http://data.mxnet.io/models/imagenet/synset.txt' 如下所示,输出确实将「猫」作为最佳的标签: [(0.57816696, 'n02123045 tabby, tabby cat'), (0.19830757, 'n02124075 Egyptian cat'), (0.16912524, 'n02325366 wood rabbit, cottontail, cottontail rabbit'), (0.020817872, 'n02123159 tiger cat'), (0.020065691, 'n02326432 hare')] 为了对树莓派相机所捕捉到的图片进行识别,我们需要将相机指向需要分类的目标,并在树莓派的根目录中运行如下命令: python load_model.py –img ‘cam’ –prefix ‘squeezenet_v1.1’ –synset ‘synset.txt’ 然后我们会看到抓拍图片的快速预览,然后我们的模型会执行并返回预测的目标标签。 连接到 AWS IoT 在树莓派上本地运行模型只是第一步。如果我们需要可靠性集中(reliably centralize)和储存预测结果,或远程更新模型,我们就需要连接树莓派到 AWS Cloud 中。为了连接到 AWS,首先第一步就需要在树莓派中设置 AWS IoT。 在 AWS IoT 控制台中,我们可以使用 AWS IoT Connect wizard。对于平台,选择 Linux/OSX;对于 SDK 类型,选择 Python,然后就可以选择下一步了。 注册你的设备名为「MyRaspberryPi」。 (责任编辑:本港台直播) |