Link IoT Edge支持以边缘应用的方式,将云端的机器学习模型部署到边缘端,并在边缘端执行机器学习推理(ML Inference) 。此功能非常适用于在边缘端处理实时性强、数据量大的服务(例如计算机视觉识别)。
前提条件
在树莓派4B(Raspberry Pi 4B)或树莓派3B/B+(Raspberry Pi 3B/B+)系统上安装并启动Link IoT Edge软件包,具体操作,请参见基于树莓派搭建环境。
在您的树莓派上连接好摄像头,具体操作,请参见树莓派摄像头安装指南。
背景信息
您可以在阿里云人工智能平台 PAI或者任何其它地方训练您的推理模型,把训练好的模型和相关代码托管在阿里云的函数计算、对象存储OSS或者容器镜像等服务中, 然后在Link IoT Edge边缘实例中以边缘应用的方式,将模型部署到网关。在网关上使用本地模型执行推理后把结果上传到阿里云物联网平台。
本文通过在树莓派4B上部署基于Tensorflow Lite的深度学习Object Detection(目标检测)模型,讲述如何在Link IoT Edge上使用机器学习推理。
步骤一:配置树莓派并安装边缘推理运行时
使用SSH工具连接到树莓派终端,执行如下步骤中的命令。
打开树莓派配置工具,并使能摄像头。
执行如下命令,打开树莓派配置工具。
sudo raspi-config
根据界面提示,选择Interfacing Options,单击Select。
选择Camera,单击Select,使能摄像头。
根据界面提示,单击Finish后,重启树莓派。
在树莓派Shell终端执行下面的命令,使用树莓派自带raspistill工具测试摄像头是否正常工作。
该命令将在树莓派终端输出摄像头信息,并在当前目录保存名为cam.jpg的图片文件。
raspistill -v -o cam.jpg
安装Tensorflow Lite Interpreter。
在树莓派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
解压并安装软件包。
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成功。
步骤二:云端发布检测器设备驱动
下载检测器设备驱动代码包object_detector_driver.zip。
登录边缘计算控制台。
在左侧导航栏,单击驱动管理。
添加自研驱动,具体操作,请参见云端发布。
其中,部分参数设置如下所示。
表 1. 驱动信息参数说明 参数
描述
驱动名称
自定义驱动的名称,例如obj_detector_driver。
通信协议类型
选择自定义。
语言类型
选择Python 3.5。
驱动是否内置
选择否。
驱动文件
单击上传文件,上传已下载到本地的object_detector_driver.zip驱动文件。
驱动版本
设置为v1.0.0。
驱动适配的边缘版本
选择2.4.0 版本及以上。
驱动版本描述
描述您创建的驱动和版本信息,可以为空。
其余参数无需配置。
步骤三:分配检测器设备驱动到边缘实例
左侧导航栏单击边缘实例,在本文“前提条件”中已创建的边缘实例右侧,单击查看。
在实例详情页面设备与驱动页签,单击全部驱动右侧的
+
图标 。在分配驱动面板中,选择自研驱动,单击obj_detector_driver驱动对应操作栏中的分配,然后单击确定。
单击分配子设备,在右侧弹出的分配子设备面板中,单击添加子设备,在obj_detector_driver驱动下,为边缘实例添加子设备。
在添加设备对话框中,单击新建产品,创建检测器产品。
在创建产品对话框中设置参数后,单击完成。
表 2. 参数说明 参数
描述
产品名称
此处设置为detector。
接入网关协议
此处选择自定义。
在添加设备对话框,产品自动分配已创建的产品,单击产品下的前往配置,为产品添加自定义功能。具体操作和参数说明,请参见单个添加物模型。
设置如下图两种属性。
物体类别属性
检测得分属性
返回边缘计算控制台实例详情页面添加设备对话框,为detector产品添加设备。
将新建的tflite_detector设备分配到边缘实例。
步骤四:创建边缘推理函数
下载边缘推理函数代码包object_detector_app.zip。
- 登录函数计算控制台。如尚未开通该服务,请阅读并选中我已阅读并同意,单击立即开通,开通服务。
- (可选)在左侧导航栏单击服务及函数,在服务及函数页面服务列表区域,单击新增服务,创建一个服务。其中,服务名称必须填写,此处设置为EdgeFC,其余参数可根据您的需求设置,也可以不设置。说明
- 若您首次在函数计算中创建服务,请根据配置向导配置参数。
- 若已操作过其他应用场景示例或小程序示例,即已创建EdgeFC服务,则无需重复创建。
- 创建服务成功后,在服务及函数页面的EdgeFC区域,单击新增函数。
- 在新建函数页面,单击事件函数区域中的配置部署。
设置边缘推理函数的基础管理配置参数。
参数
描述
函数类型保持默认选项。所在服务选择已创建的EdgeFC服务。函数名称设置为object_detector_app。
运行环境设置函数的运行环境并选择上传代码的方式。此示例中选择Python 3。
在上传代码右侧选择上传代码包,单击上传代码,上传步骤1中下载的object_detector_app.zip代码包。
函数入口使用默认值index.handler。其余参数的值请根据您的实际需求设置,也可以不设置。更多信息,请参见函数计算。
确认函数信息后,单击新建完成操作。
创建函数完成后,系统自动跳转到函数详情页面。您可在代码执行页签的代码执行管理区域下,选中在线编辑单选框,查看源码。
步骤五:分配函数到边缘实例
- 登录边缘计算控制台。
- 在左侧导航栏单击应用管理。
使用本文上方步骤四中已创建的函数,创建函数计算类型的边缘应用。具体操作,请参见函数计算应用。
应用信息参数说明如下:
参数
描述
应用名称
设置您应用的名称,例如le_object_detector。
应用类型
选择函数计算。
地域
选择您创建的服务所在的地域。
服务
选择EdgeFC服务。
函数
选择object_detector_app函数。
授权
选择AliyunIOTAccessingFCRole。
应用版本
设置应用的版本,必须是该应用唯一的版本号,即一个应用不可以设置两个相同的版本号。
函数配置说明如下:参数 描述 运行模式 运行模式有两种。此处选择持续运行模式。程序部署后会立即执行。 内存限制(MB) 函数运行可使用的内存资源上限,单位为MB。此处设置为512 MB。当函数使用内存超出该限制时,该函数计算程序会被强制重启。 超时限制(秒) 函数收到事件后的最长处理时间,此处使用默认值5秒。如超过该时间函数仍未返回结果,该函数计算程序将会被强制重启。 定时运行 使用默认配置:关闭。 其余参数无需配置。
- 在左侧导航栏单击边缘实例。
- 在本文“前提条件”中创建的边缘实例右侧,单击查看。
- 在实例详情页面的边缘应用页签,单击分配应用。
将已创建的边缘推理函数计算应用le_object_detector分配到边缘实例中,单击关闭。
步骤六:部署边缘实例
- 在实例详情页面,单击右上角部署后,在弹出对话框中单击确定,将子设备、函数计算等资源下发到边缘端。
部署完成后,在设备与驱动页签,可查到tflite_detector设备状态变为在线。
单击tflite_detector设备右侧的查看,系统跳转到设备详情页面。
在设备详情页面 页签,查看边缘推理结果。
放置常见的物体到树莓派摄像头前或人站在摄像头前,函数计算应用le_object_detector,会识别物体或人脸并将识别到的结果上报到物联网平台。
至此您已经完整地体验了以边缘应用的方式,将机器学习模型部署到边缘端,并在边缘端执行推理的操作。