Skip to main content

模型推理

在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

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

在PC训练模型

制作数据集

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

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

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

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

    2. 单击

      按钮,使用多边形框包围目标后单击鼠标左键,弹出添加标签界面,如图1所示,填写对应目标分类标签与Group ID号,再单击

      按钮绘制关键点,填写对应关键点分类标签与Group ID号,当一个图片中有多个目标时需填写不同的ID号,单击“确定”完成标注。

      图1 添加标签

    3. 若标记错误可单击

      按钮,按住左键可以移动标记框,移动鼠标至图片并单击鼠标右键,对多边形进行修改,移动鼠标至关键点单击鼠标右键,对关键点进行修改。

      图2 修改标签

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

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

    :::note 说明

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

模型迁移

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

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

    • 数据集路径:2中标注的数据集路径。
    • 数据集拆分:将图片划分成训练、验证以及测试集的比例,推荐值:0.3。默认拆分0.1的测试集用于边缘推理,训练集与验证集按输入拆分比例再次进行拆分。
    • 迭代次数:训练轮次,推荐值:100。
    • 每批图片数:参与每个批次训练的图片张数,推荐值:12。
    • 输出目录:模型输出路径。
    • 使用早停策略:勾选后,可根据设置的mIOU值(mIOU,语义分割的标准度量,计算所有类别交集和并集之比的平均值)和持续迭代不上升次数,提前停止训练。
      • mIOU达到(值):该训练模型精度已达标,可停止训练的阈值,默认值:0.99。
      • mIOU连续迭代不上升次数:mIOU值达到某一水平,多次迭代后并无提升的次数,默认值: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 infer/ && dos2unix `find .`

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

    • Ubuntu22.04版本镜像:

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

      yum install dos2unix

    :::

  3. 设置环境变量。

    # MindX SDK环境变量、CANN环境变量:
    . $&#123;SDK-path&#125;/set_env.sh
    . $&#123;ascend-toolkit-path&#125;/set_env.sh

    示例如下。

    Ubuntu OS:
    . /usr/local/Ascend/ascend-toolkit/set_env.sh
    . /usr/local/Ascend/mxVision/set_env.sh
    openEuler OS:
    . /usr/local/Ascend/ascend-toolkit/set_env.sh
    . $HOME/Ascend/mxVision/set_env.sh
  4. 进入解压缩目录。

    cd models/
  5. 执行模型转换命令转换yolov3模型、 AlphaPose模型。

    #yolov3模型转换命令
    atc --model=./yolov3_tf.pb --framework=3 --output=./yolov3_tf_bs1_fp16 --soc_version=Ascend310B4 --insert_op_conf=./aipp_yolov3_416_416.aippconfig --input_shape="input:1,416,416,3" --out_nodes="yolov3/yolov3_head/Conv_22/BiasAdd:0;yolov3/yolov3_head/Conv_14/BiasAdd:0;yolov3/yolov3_head/Conv_6/BiasAdd:0"
    #AlphaPose模型转换命令
    atc --framework=5 --model=fast_res50_256x192_bs1.onnx --output=fast_res50_256x192_aipp_rgb --input_format=NCHW --input_shape="image:1,3,256,192" --soc_version=Ascend310B4 --insert_op_conf=aipp_192_256_rgb.cfg

    模型转换成功回显如下:

    ATC start working now, please wait for a moment.
    ....................ATC run success, welcome to the next use.
    • --model:解压的文件夹中onnx模型文件名称。
    • --output:输出om模型的名称。
    • --input_format:输入数据的格式。
    • --input_shape:输入数据的shape。
    • --framework:3代表pb模型,5代表ONNX模型,默认不修改。
    • --soc_version:处理器型号,默认不修改。
    • --out_nodes:模型输出节点。
    • --insert_op_conf:AIPP插入节点,通过config文件配置算子信息,功能包括图片色域转换、裁剪、归一化,主要用于处理原图输入数据,常与DVPP配合使用。
  6. 执行编译。

    cd ..
    bash build.sh

    编译成功回显如下:

    -- The C compiler identification is GNU 11.3.0
    ...
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/test/keyp/plugin/preprocess/build
    [ 50%] Building CXX object CMakeFiles/mxpi_alphaposepreprocess.dir/MxpiAlphaposePreProcess.cpp.o
    [100%] Linking CXX shared library libmxpi_alphaposepreprocess.so
    [100%] Built target mxpi_alphaposepreprocess
  7. 模型适配。

    • 图片推理,进入infer目录执行以下命令。

      bash run.sh image $&#123;INPUT&#125;
      # 示例
      bash run.sh image ./data/val2017/

      推理成功回显如下:

      result was written successfully

      $INPUT:数据集路径。

      命令执行成功后会在infer/out目录下生成以测试图片名称命名的 json 文件,该文件包含图像中人物的关键点位置与置信度信息。查看文件验证人体关键点检测结果。

      推理结果图如图1所示。

      图1 查看推理结果

    • 精度测试,进入infer目录执行以下命令。

      bash run.sh evaluate $&#123;INPUT&#125;
      # 示例
      bash run.sh evaluate ./data/

      推理成功回显如下:

      loading annotations into memory...
      Done (t=0.00s)
      creating index...
      index created!
      Detect image: 0 : 000000199055.jpg , image id: 199055
      Detect image: 1 : 000000239537.jpg , image id: 239537
      Detect image: 2 : 000000162415.jpg , image id: 162415
      Detect image: 3 : 000000223959.jpg , image id: 223959
      Detect image: 4 : 000000020333.jpg , image id: 20333
      Detect image: 5 : 000000170474.jpg , image id: 170474
      Loading and preparing results...
      ...
      Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets= 20 ] = 0.716
      ...

      ${INPUT}:需要测试精度的数据集目录,包括验证集和标签压缩文件,目录结构如下 。

      .
      ├── data
      │ ├── annotations
      │ │ └── person_keypoints_val2017.json
      │ └── val2017
      │ ├── 000000581615.jpg
      │ ├── 000000581781.jpg
      ...
      │ └── other-images

      命令执行结束后输出评测结果,并在当前目录生成val2017_keypoint_detect_result.json检测结果文件。

父主题: 构建关键点检测跟踪应用

在线提单