机器学习边缘推理

Link IoT Edge支持以边缘应用的方式,将云端的机器学习模型部署到边缘端,并在边缘端执行机器学习推理(ML Inference) 。此功能非常适用于在边缘端处理实时性强、数据量大的服务(例如计算机视觉识别)。

前提条件

背景信息

您可以在阿里云人工智能平台 PAI或者任何其它地方训练您的推理模型,把训练好的模型和相关代码托管在阿里云的函数计算、对象存储OSS或者容器镜像等服务中, 然后在Link IoT Edge边缘实例中以边缘应用的方式,将模型部署到网关。在网关上使用本地模型执行推理后把结果上传到阿里云物联网平台。

Link IoT Edge ML Inference工作原理

本文通过在树莓派4B上部署基于Tensorflow Lite的深度学习Object Detection(目标检测)模型,讲述如何在Link IoT Edge上使用机器学习推理。

步骤一:配置树莓派并安装边缘推理运行时

使用SSH工具连接到树莓派终端,执行如下步骤中的命令。

  1. 打开树莓派配置工具,并使能摄像头。

    1. 执行如下命令,打开树莓派配置工具。

      sudo raspi-config
    2. 根据界面提示,选择Interfacing Options,单击Select

      Interfacing Options

    3. 选择Camera,单击Select,使能摄像头。

      Camera

    4. 根据界面提示,单击Finish后,重启树莓派。

    5. 在树莓派Shell终端执行下面的命令,使用树莓派自带raspistill工具测试摄像头是否正常工作。

      该命令将在树莓派终端输出摄像头信息,并在当前目录保存名为cam.jpg的图片文件。

      raspistill -v -o cam.jpg
  2. 安装Tensorflow Lite Interpreter。

    1. 在树莓派Shell终端执行如下命令,下载Tensorflow Lite Interpreter安装包。

      curl -O https://iotedge-web.oss-cn-shanghai.aliyuncs.com/public/LeMLInterpreter/ARMv7hf/linkedge_ml_tflite_raspi4_cp3x_armv7hf_installer.tar.gz
    2. 解压并安装软件包。

      tar xzvf linkedge_ml_tflite_raspi4_cp37_armv7hf_installer.tar.gz 
      cd linkedge_ml_tflite_raspi4_cp37_armv7hf_installer/
      ./le_ml_installer.sh

      系统显示如下图内容,表示安装Tensorflow Lite Interpreter成功。

      Tensorflow Lite Interpreter安装成功

步骤二:云端发布检测器设备驱动

  1. 下载检测器设备驱动代码包object_detector_driver.zip

  2. 登录边缘计算控制台

  3. 在左侧导航栏,单击驱动管理

  4. 添加自研驱动,具体操作,请参见云端发布

    其中,部分参数设置如下所示。

    表 1. 驱动信息参数说明

    参数

    描述

    驱动名称

    自定义驱动的名称,例如obj_detector_driver

    通信协议类型

    选择自定义

    语言类型

    选择Python 3.5

    驱动是否内置

    选择

    驱动文件

    单击上传文件,上传已下载到本地的object_detector_driver.zip驱动文件。

    驱动版本

    设置为v1.0.0

    驱动适配的边缘版本

    选择2.4.0 版本及以上

    驱动版本描述

    描述您创建的驱动和版本信息,可以为空。

    其余参数无需配置。

步骤三:分配检测器设备驱动到边缘实例

  1. 左侧导航栏单击边缘实例,在本文“前提条件”中已创建的边缘实例右侧,单击查看

  2. 实例详情页面设备与驱动页签,单击全部驱动右侧的+图标 。

  3. 分配驱动面板中,选择自研驱动,单击obj_detector_driver驱动对应操作栏中的分配,然后单击确定

    分配检测器设备驱动

  4. 单击分配子设备,在右侧弹出的分配子设备面板中,单击添加子设备,在obj_detector_driver驱动下,为边缘实例添加子设备。

    边缘推理-分配子设备

  5. 添加设备对话框中,单击新建产品,创建检测器产品。

    边缘推理-创建产品

    创建产品对话框中设置参数后,单击完成

    表 2. 参数说明

    参数

    描述

    产品名称

    此处设置为detector

    所属品类

    选择品类,为该产品定义物模型。此处选择自定义品类

    接入网关协议

    此处选择自定义

  6. 添加设备对话框,产品自动分配已创建的产品,单击产品下的前往配置,为产品添加自定义功能。具体操作和参数说明,请参见单个添加物模型

    设置如下图两种属性。

    • 物体类别属性物体类别属性

    • 检测得分属性检测得分属性

  7. 返回边缘计算控制台实例详情页面添加设备对话框,为detector产品添加设备。

    添加tflite_detector设备

  8. 将新建的tflite_detector设备分配到边缘实例。

步骤四:创建边缘推理函数

  1. 下载边缘推理函数代码包object_detector_app.zip

  2. 登录函数计算控制台
    如尚未开通该服务,请阅读并选中我已阅读并同意,单击立即开通,开通服务。
  3. (可选)在左侧导航栏单击服务及函数,在服务及函数页面服务列表区域,单击新增服务,创建一个服务。
    其中,服务名称必须填写,此处设置为EdgeFC,其余参数可根据您的需求设置,也可以不设置。
    说明
    • 若您首次在函数计算中创建服务,请根据配置向导配置参数。
    • 若已操作过其他应用场景示例或小程序示例,即已创建EdgeFC服务,则无需重复创建。
  4. 创建服务成功后,在服务及函数页面的EdgeFC区域,单击新增函数
  5. 新建函数页面,单击事件函数区域中的配置部署
  6. 设置边缘推理函数的基础管理配置参数。

    参数

    描述

    函数类型
    保持默认选项。
    所在服务
    选择已创建的EdgeFC服务。
    函数名称

    设置为object_detector_app

    运行环境

    设置函数的运行环境并选择上传代码的方式。此示例中选择Python 3

    上传代码右侧选择上传代码包,单击上传代码,上传步骤1中下载的object_detector_app.zip代码包。

    函数入口
    使用默认值index.handler

    其余参数的值请根据您的实际需求设置,也可以不设置。更多信息,请参见函数计算

    确认函数信息后,单击新建完成操作。

  7. 创建函数完成后,系统自动跳转到函数详情页面。您可在代码执行页签的代码执行管理区域下,选中在线编辑单选框,查看源码。

步骤五:分配函数到边缘实例

  1. 登录边缘计算控制台
  2. 在左侧导航栏单击应用管理
  3. 使用本文上方步骤四中已创建的函数,创建函数计算类型的边缘应用。具体操作,请参见函数计算应用

    应用信息参数说明如下:

    参数

    描述

    应用名称

    设置您应用的名称,例如le_object_detector

    应用类型

    选择函数计算

    地域

    选择您创建的服务所在的地域。

    服务

    选择EdgeFC服务。

    函数

    选择object_detector_app函数。

    授权

    选择AliyunIOTAccessingFCRole

    应用版本

    设置应用的版本,必须是该应用唯一的版本号,即一个应用不可以设置两个相同的版本号。

    函数配置区域框中,启用默认配置选择,则其余参数无需设置。

  4. 在左侧导航栏单击边缘实例
  5. 在本文“前提条件”中创建的边缘实例右侧,单击查看
  6. 实例详情页面的边缘应用页签,单击分配应用
  7. 将已创建的边缘推理函数计算应用le_object_detector分配到边缘实例中,单击关闭

步骤六:部署边缘实例

  1. 实例详情页面,单击右上角部署后,在弹出对话框中单击确定,将子设备、函数计算等资源下发到边缘端。
  2. 部署完成后,在设备与驱动页签,可查到tflite_detector设备状态变为在线

  3. 单击tflite_detector设备右侧的查看,系统跳转到设备详情页面。

  4. 设备详情页面物模型数据 > 运行状态页签,查看边缘推理结果。

    放置常见的物体到树莓派摄像头前或人站在摄像头前,函数计算应用le_object_detector,会识别物体或人脸并将识别到的结果上报到物联网平台。边缘推理-运行状态

    至此您已经完整地体验了以边缘应用的方式,将机器学习模型部署到边缘端,并在边缘端执行推理的操作。