跳到主要内容

模型推理

安装、运行和升级工具

安装模型适配工具

  1. 单击[获取链接](https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas 200I DK A2/DevKit/tools/latest/Ascend-devkit-model-adapter_latest_win-x86_64.exe)下载“Ascend-devkit-model-adapter_latest_win-x86_64.exe”。

    单击

    ,选择“保留”。

  2. 打开“显示详细信息”并选择“仍然保留”,如图1所示。

    图1 信任软件

  3. 在PC上双击模型适配工具安装包“Ascend-devkit-model-adapter_latest_win-x86_64.exe”,系统可能会弹出阻止应用启动的提示,如图2所示,单击“更多信息”。

    图2 阻止应用启动

    单击“仍要运行”,在弹出的提示(您要允许来自未知发布者的此应用对你的设备进行更改吗)页面选择“是”。

    图3 运行应用

  4. 在安装导向界面按照默认配置快速安装工具。

运行模型适配工具

  1. 进入工具安装目录,双击运行软件包“Ascend AI Devkit Model Adapter.exe”,显示界面如图4所示,启动后软件会自动对conda环境进行检测。

    图4 模型适配工具启动界面

  2. 在模型运行界面,根据需要选择模型算法,当前支持分类、检测、分割和关键点检测4类模型,单击模型任务后进入该模型的数据集准备与迁移界面。

    图5 模型运行界面

    :::note 说明

升级模型适配工具

:::note 说明 请保证PC网络正常连通,否则将无法升级工具。 :::

  1. 进入模型运行界面后,软件将自动检测是否有更新。如果有更新,则会弹出提示框,提示是否立即升级。

    图6 升级提示界面

  2. 选择“确定”开始下载升级包。

    图7 升级提示界面

  3. 下载完成后,等待片刻,会弹出新版本的安装界面,等待安装完成。

    图8 自动升级安装界面

  4. 安装完成后,单击“Finish”即可完成升级。

    图9 自动升级安装完成界面

模型适配工具功能说明

数据标注界面:当完成一个模型的数据集标注后,可单击右上角“关闭”按钮返回主界面。

图10 数据标注界面

  • 图11所示部分为工具栏:

    图11 工具栏界面

    表1 工具栏①功能说明

    功能按钮说明
    “文件”单击按钮可对数据集进行操作。
    “编辑”单击按钮可对当前图片的标记进行操作。
    “视图”单击按钮可对当前图片进行操作。
    “模型工具”单击按钮可进行一键迁移。
    “帮助”单击按钮提供软件的操作帮助。
  • 图12所示部分为标签工具栏:用于对数据集进行标注。

    图12 标签工具栏界面

    表2 工具栏②功能说明

    功能按钮说明
    单击按钮可绘制矩形框。
    单击按钮可绘制以节点相连的多边形框。
    单击按钮可绘制关键点。
    单击按钮可对绘制的标签进行操作,按住鼠标左键可拖动标签,移动至标签位置单击鼠标右键可修改标签。
    单击按钮可删除已绘制的标签。
    单击按钮可调节当前图片的亮度与对比度。
    单击按钮可撤销上一步操作。
    单击按钮可切换至上一张图片。
    单击按钮可切换至下一张图片。
    单击文本框输入数据可修改图片缩放比例。
  • 图13所示部分为全局操作与文件列表:

    图13 全局操作与文件列表界面图

    图14 全局操作与文件列表界面图

    表3 工具栏③功能说明

    功能按钮说明
    “打开目录”按钮可打开数据集目录,将目录下数据集显示在文件列表中。
    “打开图片”按钮可打开单张图片。
    “保存文件”按钮可在当前图片标记完成后保存该图片的标注信息json文件(仅自动保存标注开关关闭时可用)。
    “删除文件”按钮可删除当前图片的标注信息json文件。
    “自动保存标注”开关开启时标注图片将自动保存标注信息json文件。
    “一键迁移”按钮单击后可开始进行模型迁移。
  • 图15所示部分为标记信息框:仅分类模型可用,用于对数据进行分类。

    图15 标记信息框界面图

  • 图16所示部分为标签列表:检测、分割、关键点模型可用,显示当前图片中包含的标签信息。

    图16 标签列表界面图

  • 图17所示部分为多边形标签:检测、分割、关键点模型可用,显示当前图片包含的多边形标签信息。

    图17 多边形标签界面图

模型适配工具快捷键说明

表4 快捷键说明

快捷键说明
Ctrl + O打开图片。
D切换下一张图片。
A切换上一张图片。
Ctrl + U打开目录。
Ctrl + S保存标注。
Ctrl + W关闭图片,保存已有标签。
Ctrl + Del永久删除标签文件。
Ctrl + Q退出。
Ctrl + E编辑标注。
Ctrl + C复制标注。
Ctrl + V粘贴标注。
Del删除选择标注。
Ctrl + Z撤销/撤销最后控制点。
Ctrl + =放大图片。
Ctrl + -缩小图片。
Ctrl + 0图片原始大小。
Ctrl + F适应窗口。
Ctrl + Shift + F适应宽度。

父主题: 准备环境

在PC训练模型

制作数据集

  1. 收集待标记的png、jpg、JPEG、bmp、webp格式图片数据,推荐使用jpg格式。图片分辨率不高于1080P,单张图片不大于1MB,推荐每个类别的图片数量在100张左右,图片名称不支持字符".",需放置在全英文路径下。

  2. 为模型迁移准备数据集,进行图像标注,在工具界面选择“分类模型”。

    图1 选择数据集标签界面

    • 选择“制作数据集”,配置1收集的数据集的路径。

      1. 配置标签信息,即需要分类的类别名称,用英文表示并用逗号隔开,不支持其他字符。例如:apple,banana,watermelon,tangerine。

      2. 单击“确认”,开始标注,对应每张图片,从右侧标记栏选择对应的标签名称,当前图片标注完成后,从图片上方菜单单击

        图标或左侧文件列表选择下一张图片进行标记,直到完成所有图片的标注任务。

        图2 图片标注界面

      :::note 说明

      • 在分类任务下进行标注时,只能选择右侧“标记”栏进行标注,选择图形标注不可用。
      • 分类模型下不能在标注界面增加分类类别,如果分类类型有增加,需要重新制作数据集,在制作数据集弹框输入即可。
      • 分类时会在输入图片文件夹地址下,生成与图片一一对应的json文件,记录标注信息。
      • 分类时会在输入图片文件夹同级目录生成flags.txt文件。 :::
    • 选择“已有数据集”:无需进行图像标注,单击“确认”后,可直接开始模型迁移。

模型迁移

  1. 在工具界面单击下方“一键迁移”按钮,进入配置界面,输入迁移信息,单击“一键迁移”开始迁移。

    图3 模型一键迁移配置界面

    • 数据集路径:2中标注的数据集路径。
    • 数据集拆分:将图片划分成训练、验证以及测试集的比例,推荐值:0.3。默认拆分0.1的测试集用于边缘推理,训练集与验证集按输入拆分比例再次进行拆分。
    • 迭代次数:训练轮次,推荐值:100。
    • 每批图片数:参与每个批次训练的图片张数,推荐值:12。
    • 输出目录:模型输出路径。
    • 使用早停策略:勾选后,可根据设置的acc值(准确率,一般指在所有图片中,预测正确的概率得分)和持续迭代不上升次数,提前停止训练。
      • acc达到(值):该训练模型精度已达标,可停止训练的阈值,默认值:0.99。
      • acc连续迭代不上升次数:acc值达到某一水平,多次迭代后并无提升的次数,默认值:10。

    :::note 说明 当使用模型适配工具一键迁移时突然断电、重启、进程卡死或手动取消时,可能会引起输出文件残留,请用户自行删除残留文件后再进行一键迁移,请参见使用模型适配工具一键迁移时出现输出文件夹残留手动取消迁移导致模型适配工具异常退出解决。 :::

  2. 迁移完成后会出现提示框,提示已生成打包好的文件,如图4所示。在训练输出目录会生成以下文件与目录,如图5所示。

    • train_output:训练输出的权重文件、onnx文件以及训练数据信息json文件。

    • trans_output:经过数据转换,根据数据集拆分设置生成的测试集、验证集、训练集。

    • edge_infer.tar:打包好的推理相关模型文件与脚本。

      图4 迁移完成

      图5 输出文件

父主题: 构建图像分类应用

模型推理

  1. root用户远程登录开发者套件,将在PC训练模型获得的压缩包上传到开发者套件,上传方法可参见Windows与开发者套件的文件传输,进入压缩包上传目录执行以下命令解压压缩包。

    tar -xvf edge_infer.tar
  2. 进入解压后文件目录执行以下命令将Windows格式文件转换为Unix、Linux格式。

    cd edge_infer/ && dos2unix `find .`

    :::note 说明 若提示命令dos2unix not found,请使用命令安装。

    • Ubuntu22.04版本镜像:

      apt install dos2unix
    • OpenEuler22.03版本镜像:

      yum install dos2unix

    :::

  3. 进入解压缩目录执行如下命令进行模型转换,获得om模型。

    bash atc.sh

    模型转换成功回显如下:

    set env successfully!!
    start exec atc
    ATC start working now, please wait for a moment.
    .................................ATC run success, welcome to the next use.
  4. 执行以下命令进行推理。

    bash run.sh

    推理成功回显如下:

    set env successfully!!
    start exec atc
    [Sample] init resource stage:
    Init resource success
    load model mobilenetv3_100_bs1.om
    Init model resource
    [Model] create model output dataset:
    [Model] create model output dataset success
    [Model] class Model init resource stage success
    ....
    image name :./data/watermelon/pic (85).jpg, infer result: apple //识别pic (85).jpg中物品类别为苹果
    ....
    image name :./data/watermelon/pic (36).jpg, infer result: tangerine //识别pic (36).jpg中物品类别为柑橘
    Execute end. Acc: 0.25
    INFO: convert model success!
    Release acl resource, 1
    Start relase resource 0
    Model start release...
    Model release source success
    Release acl resource success

    推理结果图如图1图2所示。

    图1 查看推理结果1

    图2 查看推理结果2

    :::note 说明 run.sh会调用推理主程序infer.py,执行此条命令。

    python3.9 infer.py --model mobilenetv3_100_bs1.om --label_path class_indices.json --output_path ./

    命令行参数解析:

    • model:分类模型文件目录。
    • label_path:训练生成的class_indices.json地址。
    • output_path:推理分类结果输出cls_output.txt地址。 :::

父主题: 构建图像分类应用

在PC训练模型

制作数据集

  1. 收集待标记的png、jpg、JPEG、bmp、webp格式图片数据,推荐使用jpg格式。图片分辨率不高于1080P,单张图片不大于1MB,推荐每个类别的图片数量在100张左右,并放置在全英文路径下。

    注:图片名称不要带字符"."。

  2. 为模型迁移准备数据集,进行图像标注,在模型适配工具界面选择“检测模型”。

    1. 单击“打开目录”选择1收集的数据集目录进行标注。

    2. 单击

      按钮,使用矩形框包围目标后单击鼠标左键,弹出添加标签界面,如图1所示。填写对应目标分类标签与Group ID号,当一个图片中有多个目标时需填写不同的ID号,单击“确定”完成标注。

      图1 添加标签

      图2 标注结果

    3. 若标记错误可单击

      按钮,按住左键可以移动标记框,移动鼠标至矩形框并单击“鼠标右键”,对矩形标签进行修改。

      图3 修改标签

    4. 当前图片标注完成后,单击图片上方菜单栏中

      图标或在左侧文件列表选择下一张图片进行标记,直到完成所有图片的标注任务。

    :::note 说明

    • 标注时输入标签仅支持数字、字母、下划线。
    • 数据集图片要从实际模型部署使用的环境获得。
    • 需将图片中的所有待检测目标都标注出来,漏标注将影响模型精度。
    • 边框需要紧密框住每个目标,且类别正确,标注无误。 :::

模型迁移

  1. 在工具界面单击下方“一键迁移”按钮,进入配置界面,输入迁移信息,单击“一键迁移”开始迁移。

    图4 模型一键迁移配置界面

    • 数据集路径:2中标注的数据集路径。
    • 数据集拆分:将图片划分成训练、验证以及测试集的比例,推荐值:0.3。默认拆分0.1的测试集用于边缘推理,训练集与验证集按输入拆分比例再次进行拆分。
    • 迭代次数:训练轮次,推荐值:100。
    • 每批图片数:参与每个批次训练的图片张数,推荐值:12。
    • 预训练模型:可选yolov5s,yolov5n,yolov5l,yolov5x,默认yolov5s。
    • 输出目录:模型输出路径。
    • 使用早停策略:勾选后,可根据设置的mAP值(均值平均精度,一般指图片内所有类别的AP的平均值)和持续迭代不上升次数,提前停止训练。
      • mAP达到(值):该训练模型精度已达标,可停止训练的阈值,默认值:0.99。
      • mAP连续迭代不上升次数:mAP值达到某一水平,多次迭代后并无提升的次数,默认值:10。

    :::note 说明 当使用模型适配工具一键迁移时突然断电、重启、进程卡死或手动取消时,可能会引起输出文件残留,请用户自行删除残留文件后再进行一键迁移,请参见使用模型适配工具一键迁移时出现输出文件夹残留手动取消迁移导致模型适配工具异常退出解决。 :::

  2. 迁移完成后会出现提示框,提示已生成打包好的文件,如图5所示。在训练输出目录会生成以下文件与目录,如图6所示。

    • train_output:训练输出的权重文件、onnx文件以及训练数据信息json文件。
    • trans_output:经过数据转换,根据数据集拆分设置生成的测试集、验证集、训练集。
    • infer_project.tar.gz:打包好的推理相关模型文件与脚本。

    图5 迁移完成

    图6 输出文件

父主题: 构建目标检测跟踪应用

模型推理

  1. root用户远程登录开发者套件,将在PC训练模型获得的压缩包上传到开发者套件,上传方法可参见Windows与开发者套件的文件传输,进入压缩包上传目录执行以下命令解压压缩包。

    tar -zxvf infer_project.tar.gz
  2. 进入解压缩后目录执行以下命令将Windows格式文件转换为Unix、Linux格式。

    cd infer_project/ && dos2unix `find .`

    :::note 说明 若提示命令dos2unix not found,请使用命令安装。

    • Ubuntu22.04版本镜像:

      apt install dos2unix
    • OpenEuler22.03版本镜像:

      yum install dos2unix

    :::

  3. 进入解压缩目录执行如下命令进行模型转换,获得om模型。

    python3 onnx2om.py

    模型转换成功回显如下:

    bash common/onnx2om.sh --model=yolov5s --bs=1 --calib_bs=1 --soc=Ascend310B4 --type=fp16
    === onnx2om args ===
    version: 7.0
    model: yolov5s
    bs: 1
    type: fp16
    output_dir: output
    soc: Ascend310B4
    Starting onnx导出om模型(无后处理)
    ATC start working now, please wait for a moment.
    .................................ATC run success, welcome to the next use.
    onnx导出om模型 Success
  4. 执行推理。

    python3 om_infer.py --model=output/yolov5s_bs1.om --eval --visible

    推理成功回显如下:

    [INFO] acl init success
    [INFO] open device 0 success
    [INFO] load model output/yolov5s_bs1.om success
    [INFO] create model description success
    100%|█████████████████████████████████████████████| 5/5 [00:02<00:00, 2.18it/s]
    Average infer time: 116.717 ms / 1 image
    ...
    get 5 images
    Running per image evaluation...
    Evaluate annotation type *bbox*
    DONE (t=0.06s).
    Accumulating evaluation results...
    DONE (t=0.02s).
    Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.579
    ...
    Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.652
    &#123;'bbox_mAP': 0.579, 'bbox_mAP_50': 0.94, 'bbox_mAP_75': 0.71, 'bbox_mAP_s': -1.0, 'bbox_mAP_m': 0.6, 'bbox_mAP_l': 0.583, 'bbox_mAP_copypaste': '0.579 0.940 0.710 -1.000 0.600 0.583'&#125;
    [INFO] unload model success, model Id is 1
    [INFO] end to destroy context
    [INFO] end to reset device is 0
    [INFO] end to finalize acl
    • model:模型文件目录。
    • eval:开启模型评估,自动计算在测试集上的精度。
    • visible:保存模型在测试集上的推理结果。

    推理结果图如图1图2所示。

    图1 查看推理结果1

    图2 查看推理结果2

父主题: 构建目标检测跟踪应用

在线提单