Azure IoT Edge入门(4)实战将“识别戴口罩”算法部署到边缘(1)-Custom Vision导出容器

视频讲解:

 

您可以在B站观看视频讲解:https://www.bilibili.com/video/av93672532/

或在本站观看视频讲解:

 

图文讲解:

 

从本文开始,我们做一个案例介绍,该案例分为3小节介绍。

前边我们介绍过,IoT Edge的一个主要功能就是可以将云端的能力扩展到边缘,本次的案例涉及的内容比较多。

 

主要的背景是这样的:

结合最近的社会情况,出现了很多需要检测是否戴口罩的需求,我们之前曾经有一篇文章介绍了使用Azure Custom Vision提供的AI能力,快速开发出了一个检测是否戴口罩的模型,并发布成API供调用。

 

本案例中,我们将之前训练好的AI模型,通过Azure IoT Edge 推送到边缘设备,这么做有如下好处:

1. 未必所有的摄像头都能直接调用API,也不能大规模替换新型摄像头;

2. 未必所有的检查点/场所都有良好的网络,需要离线运行大部分功能;

3. 提供更快(时延更低)的检测结果返回;

4. 当我们研发出准确率更高的模型时,可以批量从云端更新我们部署的边缘设备;

本案例分三节内容介绍:

  1. 将Custom Vision 模型导出成linux 容器;在本地build/run,完成本地测试;
  2. 准备Azure Container Registry, 将本地Build好的镜像push到ACR里;
  3. 使用IoT Edge将 ACR里准备好的 镜像部署到IoT Edge里,在EDGE设备上调用本地的算法;

 

 

今天主要介绍第一个步骤:

  1. 将Custom Vision 模型导出成linux 容器;在本地build/run,完成本地测试;

关于Custom Vision识别是否戴口罩的做法,请参照文章《AI 应用之Azure Custom Vision检测是否戴口罩

主要注意如下两个步骤:

创建项目时,Domains 选择General,这个类型才能导出为容器。

 

训练完成后导出成容器,而不是发布成API:

 

将导出的压缩包下载到本地并解压,得到如下文件:

 

 

在命令提示符里运行如下命令:

注意,最后的空格+.

docker build -t <your image name> .

编译过程视网络情况可能会出现需要重试的情况。

编译成功,可以通过 docker images 查看本地的镜像文件。

 

执行如下命令,在本地运行容器:

其中第一个80是本地访问端口,如果您安装了IIS等占用80端口的程序,则可以更换为其他端口,例如81或82;

docker run -p 127.0.0.1:80:80 -d <your image name>

 

接下来在浏览器中访问,验证容器正常运行:

 

使用方式如下:

 

我们在Postman中测试如下:

 

点击Select Files 上传一张图片,结果如下图:

 

案例中Custom Vision 中使用的示例图片,来着于互联网:

https://videos.51azure.cloud/files/Custom-Vision.zip

注意,如果您没有Global账号可以申请试用账号后开通Custom Vision 已完成本项目或在如下连接下载作者训练好的 容器:

https://videos.51azure.cloud/files/SeanYuTestCustomVision.DockerFile.Linux.zip

 

 

 

Azure IoT Edge 入门系列其他文章,请见《Azure 智能边缘 之 Azure IoT Edge 十分钟入门系列文章目录