智慧连接
终端入云

使用Azure IoT Edge + AI部署边缘智能

来源 | 微软公众号

 

本期专家阵营

来自微软 Visual Studio 中国-物联网开发部门。

参与 Azure IoT 开发体验设计,

主导 Arduino for VS Code,

Azure IoT Edge 开发体验等项目。

史鑫 | Program Manager

方喆然 | Software Engineer

 

大家好,我是史鑫,边缘计算+人工智能是最近很火的话题。我和我的同事方喆然是来自微软开发者平台事业部,专注于为物联网开发者提供各式各样的方便的开发工具。今天我们在这里给大家介绍一下如何使用 Azure IoT Edge 来简单的开发一个 Edge+AI 的场景,Azure 识花。

配置和启动 Azure IoT Edge 设备


Azure IoT Edge 将云带来的价值转移至物联网设备。本节主要介绍如何在你的开发机上虚拟一台 Azure IoT Edge 设备。您可以使用 Windows, Linux, macOS 来完成这项工作。如果你手边有可以用作网关的物理设备,例如树莓派或者 beaglebone,也可以将 Azure IoT Edge 配置其上。

注:

这部分内容在六月底会有一些更新,最新的步骤请参考这里

 

准备工作


准备开发环境

本教程使用 Windows 开发机来虚拟一个 IoT Edge 设备。若要将计算机转换为 IoT Edge 设备并进行开发,需要安装以下工具:

• Python pip,用于安装 IoT Edge 运行时。

Linux: sudo apt-get install python-pip。

MacOS: sudo easy_install pip。

Windows: 适用于 Windows 的 Python 

• Docker,用于运行 IoT Edge 模块。

参考这里选择合适的 Docker CE 版本。

• Visual Studio Code 

• 适用于 Visual Studio Code Azure IoT Edge 扩展 

• 适用于 Visual Studio Code 的 C#扩展(由 OmniSharp 提供支持)

• 适用于Visual Studio CodeDocker扩展

使用 Cloud Shell 创建一个免费的 IoT Hub


Azure 订阅,可以在开始前创建一个免费帐户。本篇教程基于国际版 Azure 来编写,使用中国版 Azure 也可以实现相同的内容。

在 Azure 订阅中创建一个 IoT  Hub。 免费级的 IoT Hub 就可以了。如果过去用过 IoT 中心并且已经创建免费的中心,则可以跳过此部分,然后转到注册 IoT Edge 设备。 每个订阅仅能有一个免费 IoT 中心。

1. 登录到 Azure 门户。

2. 选择“Cloud Shell”按钮。

3. 创建资源组。 以下代码在“美国西部”区域中创建名为“IoTEdge”的资源组:

az group create –name IoTEdge –location westus

4. 在新的资源组中创建 IoT 中心。 以下代码在资源组“IoTEdge”中创建名为“MyIotHub”的免费“F1”中心:

az iot hub create –resource-group IoTEdge –name MyIotHub –sku F1

 

注册一个新的 IoT Edge 设备


为模拟设备创建设备标识,以便它可以与 IoT 中心通信。 由于 IoT Edge 设备的行为和托管方式与典型 IoT 设备不同,请从一开始就将此设备声明为 IoT Edge 设备。

1. 在 Azure 门户中导航到 IoT 中心。

2. 选择“IoT Edge (预览版)”。

3. 选择“添加 IoT Edge 设备”。

4. 为模拟设备指定唯一设备 ID。例如为 iot-edge-device。

5. 选择“保存”以添加设备。

6. 从设备列表中选择新设备。

7. 复制“连接字符串 – 主密钥”的值并保存。 在下一部分中配置 IoT Edge 运行时时将用到此值。

 

在 VS Code 中配置 IoT Edge 运行时


1. IoT Edge 运行时部署在所有 IoT Edge 设备上。 它由两个模块组成。 首先,IoT Edge 代理协助部署和监视 IoT Edge 设备上的模块。 其次,IoT Edge 中心管理 IoT Edge 设备模块之间以及设备和 IoT 中心之间的通信。

2. 打开 VS Code,在左侧的 Azure IoT Hub devices 浏览窗口中点击“按钮”,选择 Select IoT Hub,根据提示绑定在前一节中创建的 IoT Hub。绑定成功后可以看到设备列表。

3. 右键选择你的 IoT Edge 设备(本文使用 iot-edge-device 该 IoT Edge 设备作为示例)。在右键菜单选择 Setup IoT Edge。

4. 在 VS Code 中,按下 F1 打开命令面板,输入 Azure IoT Edge: Start IoT Edge 并回车。

5. 检查 VS Code 中的 Docker 浏览器,在 Container 中,查看是否有 EdgeAgent 容器是否在运行。

 

部署示例模块代码


我们为大家准备了一份示例代码,请点击这里获取,代码中包含两个主要的 IoT Edge 模块。第一个模块用来上传和处理图片。第二个模块是一个机器学习 AI 模块,该模块中包含一个已经训练好的 Custom Vision 模型。

1. 使用 Git 克隆代码到本地 git clone

git@github.com:VSChina/iot-edge-flower-classifier.git

2. 在 VS Code 中打开该工程

code iot-edge-flower-classifier

3. 打开 Edge Solution 文件夹下的 deployment.template.json 文件,其中包括三个主要的内容。

a. systemModules 里面包含两个系统模块,edgeAgent 用来管理用户自定义模块。edgeHub 模块管理不同模块之间的通信和 Edge 和 Hub 之间的通信。

b. modules 里面包含两个用户自定义模块。第一个是 camera_server,用来读取和处理图片。这个部分的代码在 EdgesSolution/modules/camera_server,是一个由 Node.js 写的模块。第二个模块是我们预先训练和发布好的 imageclassifier 模块,目前是放在 Docker Hub 上给大家使用。

c. routes 部分定义了模块之间的关系,camera_server 会将处理好的图片传送给 imageclassifier 进行预测,结果会从 imageclassifier 模块发送到 IoT 中心。

4. 在 VS Code 中,打开内置的终端,使用以下命令给安装前端页面依赖。

cd Page

npm i

npm run compile

5. 打开

EdgeSolution/modules/camera_server/module.json.

将其中的{DOCKER_REGISTRY}替换成 localhost:5000 并保存文件。

6. 右键点击

EdgeSolution/deployment.template.json,

点击 Build IoT Edge Solution 来编译和打包所有的模块。这一步若成功执行,终端输出将显示成功编译并推送到 Docker 仓库:

7. 在 EdgeSolution/config 文件夹中找到 deployment.json 右键选择 Create Deployment for IoT Edge device. 在下拉菜单中选择 iot-edge-device 设备。在 VS Code 的输出面板中可以看到部署成功的信息。

 

运行和验证结果


1. 在部署成功后,等待所有模块顺利启动。在 VS Code 中在左侧的 Azure IoT Hub devices 浏览窗口中,右键选择 iot-edge-device,点击 Start Monitoring D2C Messages

2. 在浏览器中访问 http://localhost:5001;

3. 点击 Select Picture,选择 Images 文件夹中的一张花朵图片;

4. 点击 Upload Picture 上传图片。

5. 返回 VS Code,在输出面板中查看识花结果;

在实际部署时,您可以使用树莓派或其他网关设备作为真正的 AI 模块计算平台。于此同时,图片或视频的采集也可以使用摄像头等设备,其中的机器学习模型也可以自己定制,来实现更多物联网中的实际应用场景,例如工厂设备诊断,医疗影像检查等等。本示例仅仅是抛砖引玉,让大家了解一个最简单的 Azure IoT Edge + AI 的开发部署流程。有关 IoT Edge + AI,还有非常多的好玩的玩法,更多内容在六月底 Azure IoT Edge GA 后为大家呈现。

 

 

 

 

赞(0) 打赏
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏