智能边缘BIE

    操作指南

    本教程说明BIE如何与EasyEdge集成。

    获取示例模型MobileNet-SSD

    原始模型可以是用户自己训练的模型,也可以使用现成的模型。在本教程当中,我们将使用github上开源的一个基于 Caffe 实现的 物体检测 深度学习模型 MobileNet-SSD。该模型当中缺少模型标签文件label_list.txt,本教程在后面提供了label_list.txt的下载连接。用于验证模型的测试图片也来自于该github项目。

    在EasyEdge上传模型

    • 打开EasyEdge官网,点击 立即使用 ,登录EasyEdge控制台。这里使用的登录账号就是百度智能云的账号,与BIE账号一致。

    image.png

    • 进入 EasyEdge,点击 上传模型

    raw-model-list.png

    • 上传原模型 界面,输入原模型信息:

      • 模型名称:用户自定义,此处输入 MobileNet-SSD-Caffe
      • 模型类型:物体检测
      • 模型框架:Caffe
      • 模型网络:MobileNetV1-SSD
      • 网络结构:选择模型目录当中以 .prototxt 为后缀的文件,如 deploy.prototxt,点此下载
      • 网络参数:选择模型目录当中以 .caffemodel 为后缀的文件,如 mobilenet_iter_73000.caffemodel,点此下载
      • 模型标签:选择模型目录当中以 .txt 为后缀的文件,如 label_list.txt,点此下载
      • 其他配置:预置默认文件
      • 自定义分组:用户自定义,此处输入 Caffe
      • 功能描述:用户自定义,此处输入 MobileNet SSD Demo

    upload-raw-model.png

    生成端模型

    • 点击 校验并提交模型 ,校验通过以后,进入到 生成端模型 菜单,在此处设置此模型需要适配的端环境,如下图所示:

    create-edge-model.png

    • 此处我们生成适配 Linux-arm64Linux-amd64 两个应用平台的模型。应用平台与软硬件的对应关系如下表所示:
    应用平台 芯片/硬件 操作系统
    Linux-arm64 通用x86芯片 Linux
    Linux-amd64 通用ARM芯片 Linux
    • 点击 生成模型 ,进入到模型生成阶段,这个过程大约需要几分钟,实际实际取决于模型的大小。

    create-edge-model-2.png

    • 在模型生成完毕以后,进入到 SDK列表 ,可以看到 MobileNet-SSD-Caffe 模型的两个版本,分别适配不同的应用平台:

      • V1 版本:对应 Linux-amd64 平台
      • V2 版本:对应 Linux-arm64 平台

    edge-model-list.png

    在BIE中新建EasyEdge模型存储卷

    • 打开BIE官网,点击 立即使用 ,登录BIE控制台。

    bie_offical.png

    • 进入 存储卷 列表页面,点击 创建存储卷

      • 存储卷名称:自定义,此处输入 easyedge-model
      • 存储卷模板:选择 EasyEdge模板
      • 标签:自定义,选填
      • 描述:自定义,选填

    create_volume.png

    • 进入 easyedge-model 存储卷,点击 引入模型

      • 应用平台:Linux-arm64,本实验将在运行 GNU/Linux aarch64树莓派4上实验。
      • 模型名称:MobileNet-SSD-Caffe,选择之前EasyEdge生成的端模型

    import_model.png

    • 点击确定,完成模型引入。在文件列表当中可以看到有一个RES目录,表示EasyEdge模型引入成功。

    model_file.png

    • 点击 发布新版本 ,生成存储卷V1版本,此版本将与后续的模型服务绑定。

    release_new_version.png

    在核心中创建服务

    • 创建用于实验的边缘核心 easyedge-demo ,并将其安装至树莓派4,详细的安装部署教程可参考官方文档-快速入门,此处不再赘述。

    create_core.png

    • 在核心中添加服务:

      • 名称:自定义,此处输入 MobileNet-SSD-Caffe
      • 来源:官方
      • 模块:选择 easyedge-inference
      • 镜像地址:下拉选择最新版本,此处选择 hub.baidubce.com/baetyl/easyedge-inference:0.4.3
      • 描述:自定义,此处输入 边缘物体检测服务
      • 端口映射:8088:8088

    create_service_3.png

    • 点击确定,服务创建完成。
    • 点击 查看 ,编辑刚创建的 MobileNet-SSD-Caffe 服务,进行存储卷挂载。存储卷也可以直接在创建服务的时候直接挂载。

    conf_service.png

    • 在弹窗中进入到 存储卷挂载 tab页,点击 添加存储卷挂 ,设置挂载信息:

      • 存储卷:选择 easyedge-model
      • 版本:选择 V1 版本
      • 容器目录:使用默认的 var/db/baetyl。容器服务在边缘核心上启动时,存储卷默认会被挂载到容器内 /var/db/baetyl 目录下,容器启动参数 需要使用此目录。

    band_volume.png

    • 点击 确定 ,完成存储卷挂载。
    • 在弹窗中切换到 服务 tab页,打开 高级设置 ,配置 easyedge-inference 服务的 启动参数,总共需要5个参数,需要按顺序添加:

      • bash
      • run.sh
      • /var/db/baetyl/RES:此处路径为绝对路径,使用存储卷挂载的容器目录再加上'/',如果前面存储卷挂载的容器内目录使用绝对路径,可省略此'/'。
      • 0.0.0.0
      • 8088:此处的8088是容器内物体检测服务的运行端口号,前面已经将其同端口号映射至容器外
    • 点击确定,完成服务配置。

    下发应用

    • 完成服务配置以后,需要将此配置发布为版本,如下图所示,发布为V2版本。

    new_core_conf_version.png

    • 点击 下发,将此版本下发至边缘核心。
    • 查看服务运行状态,如果是 运行中,表示服务启动正常,如果处于一直处于 重启 状态,则需要进入容器内部查看容器日志。

    service_status.png

    模型校验

    在MobileNet-SSD-Caffe服务正常启动以后,需要验证 物体检测模型 在边缘节点上是否正常运行。

    浏览器校验

    通过浏览器打开物体检测服务的控制台,访问地址为:http://[边缘核心设备IP地址]:8088/ 。如果能够看到如下界面,则表示服务正常运行。

    service_console.png

    接下来可以上传样例图片校验模型效果,以下为几个样例结果:

    000001_result.png

    000542_result.png

    001150_result.png

    001763_result.png

    API校验

    MobileNet-SSD-Caffe 本身作为一个容器应用运行在边缘核心当中,它同时对外提供API访问接口,支持被其他应用调用,并返回物体检测结果。

    这个API访问接口是由EasyEdge SDK提供的,具体API使用参考EasyEdge SDK文档,此文档对于Windows和Linux版本的SDK都适用。

    下面通过python代码调用接口进行示例说明:

    • 拷贝下面的python代码保存至本地,命名为test_easyedge_api.py。
    import requests
    
    with open('./1.jpg', 'rb') as f:
        img = f.read()
    
    # params is GET params,  data is POST Body
    result = requests.post('http://[边缘核心设备IP地址]:8088/', params={'threshold': 0.1},data=img).json()
    
    print result
    • 下载图片 1.jpg,保存至与test_easyedge_api.py同目录下。
    • 执行test_easyedge_api.py
    python test_easyedge_api.py
    • 查看接口返回结果为如下JSON
    {
        "error_code": 0, 
        "cost_ms": 179, 
        "results": [
            {
                "index": 8, 
                "confidence": 0.9999642372131348, 
                "y2": 0.9531263113021851, 
                "label": "cat", 
                "y1": 0.0014175414107739925, 
                "x2": 0.9970248937606812, 
                "x1": 0.0014758188044652343
            }
        ]
    }
    上一篇
    EasyEdge概述
    下一篇
    video-infer实现边缘视频AI推断