模型推理
在PC训练模型
制作数据集
-
收集待标记的png、jpg、JPEG、bmp、webp格式图片数据,推荐使用jpg格式。图片分辨率不高于1080P,单张图片不大于1MB,推荐每个类别的图片数量在100张左右,并放置在全英文路径下。
注:图片名称不要带字符"."。
-
为模型迁移准备数据集,进行图像标注,在工具界面选择“关键点模型”。
-
单击“打开目录”选择1收集的数据集目录进行标注。
-
单击
按钮,使用多边形框包围目标后单击鼠标左键,弹出添加标签界面,如图1所示,填写对应目标分类标签与Group ID号,再单击
按钮绘制关键点,填写对应关键点分类标签与Group ID号,当一个图片中有多个目标时需填写不同的ID号,单击“确定”完成标注。
图1 添加标签

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

-
当前图片标注完成后,从图片上方菜单单击
图标或左侧文件列表选择下一张图片进行标记,直到完成所有图片的标注任务。
:::note 说明
- 标注时输入标签仅支持数字、字母、下划线。
- 数据集图片要从实际模型部署使用的环境获得。
- 要将图片中的所有待检测目标都标注出来,任何目标都不能缺少标签,漏标注将影响模型精度。
- 边框需要紧密框住每个目标,且类别正确,标注无误。 :::
-
模型迁移
-
在工具界面单击下方“一键迁移”按钮,进入配置界面,输入迁移信息,单击“一键迁移”开始迁移。
图3 模型一键迁移配置界面

- 数据集路径:2中标注的数据集路径。
- 数据集拆分:将图片划分成训练、验证以及测试集的比例,推荐值:0.3。默认拆分0.1的测试集用于边缘推理,训练集与验证集按输入拆分比例再次进行拆分。
- 迭代次数:训练轮次,推荐值:100。
- 每批图片数:参与每个批次训练的图片张数,推荐值:12。
- 输出目录:模型输出路径。
- 使用早停策略:勾选后,可根据设置的mIOU值(mIOU,语义分割的标准度量,计算所有类别交集和并集之比的平均值)和持续迭代不上升次数,提前停止训练。
- mIOU达到(值):该训练模型精度已达标,可停止训练的阈值,默认值:0.99。
- mIOU连续迭代不上升次数:mIOU值达到某一水平,多次迭代后并无提升的次数,默认值:10。
:::note 说明 当使用模型适配工具一键迁移时突然断电、重启、进程卡死或手动取消时,可能会引起输出文件残留,请用户自行删除残留文件后再进行一键迁移,请参见使用模型适配工具一键迁移时出现输出文件夹残留和手动取消迁移导致模型适配工具异常退出解决。 :::
-
迁移完成后会出现提示框,提示已生成打包好的文件,如图4所示。在训练输出目录会生成以下文件与目录,如图5所示。
- train_output:训练输出的权重文件、onnx文件以及训练数据信息json文件。
- trans_output:经过数据转换,根据数据集拆分设置生成的测试集、验证集、训练集。
- edge_infer.tar:打包好的推理相关模型文件与脚本。
图4 迁移完成
图5 输出文件
父主题: 构建关键点检测跟踪应用
模型推理
-
以root用户远程登录开发者套件,将在PC训练模型获得的压缩包上传到开发者套件,上传方法可参见Windows与开发者套件的文件传输,进入目录执行解压操作。
tar -xvf edge_infer.tar -
进入文件目录执行以下命令将Windows格式文件转换为Unix、Linux格式。
cd infer/ && dos2unix `find .`:::note 说明 若提示命令dos2unix not found,请使用命令安装。
-
Ubuntu22.04版本镜像:
apt install dos2unix -
OpenEuler22.03版本镜像:
yum install dos2unix
:::
-
-
设置环境变量。
# MindX SDK环境变量、CANN环境变量:. ${SDK-path}/set_env.sh. ${ascend-toolkit-path}/set_env.sh示例如下。
Ubuntu OS:. /usr/local/Ascend/ascend-toolkit/set_env.sh. /usr/local/Ascend/mxVision/set_env.shopenEuler OS:. /usr/local/Ascend/ascend-toolkit/set_env.sh. $HOME/Ascend/mxVision/set_env.sh -
进入解压缩目录。
cd models/ -
执行模型转换命令转换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配合使用。
-
执行编译。
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 -
模型适配。
-
图片推理,进入infer目录执行以下命令。
bash run.sh image ${INPUT}# 示例bash run.sh image ./data/val2017/推理成功回显如下:
result was written successfully$INPUT:数据集路径。
命令执行成功后会在infer/out目录下生成以测试图片名称命名的 json 文件,该文件包含图像中人物的关键点位置与置信度信息。查看文件验证人体关键点检测结果。
推理结果图如图1所示。
图1 查看推理结果

-
精度测试,进入infer目录执行以下命令。
bash run.sh evaluate ${INPUT}# 示例bash run.sh evaluate ./data/推理成功回显如下:
loading annotations into memory...Done (t=0.00s)creating index...index created!Detect image: 0 : 000000199055.jpg , image id: 199055Detect image: 1 : 000000239537.jpg , image id: 239537Detect image: 2 : 000000162415.jpg , image id: 162415Detect image: 3 : 000000223959.jpg , image id: 223959Detect image: 4 : 000000020333.jpg , image id: 20333Detect image: 5 : 000000170474.jpg , image id: 170474Loading 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检测结果文件。
-
父主题: 构建关键点检测跟踪应用
在PC训练模型
制作数据集
-
收集待标记的png、jpg、JPEG、bmp、webp格式图片数据,推荐使用jpg格式。图片分辨率不高于1080P,单张图片不大于1MB,推荐每个类别的图片数量在100张左右,并放置在全英文路径下。
注:图片名称不要带字符"."。
-
为模型迁移准备数据集,进行图像标注,在工具界面选择“分割模型”。
-
单击“打开目录”选择1收集的数据集目录进行标注。
-
单击
按钮,使用多边形框包围目标后单击鼠标左键,跳出添加标签界面,如图1所示,填写对应目标分类标签与Group ID号,单击“确定”完成标注。
图1 添加标签

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

-
当前图片标注完成后,从图片上方菜单单击
图标或左侧文件列表选择下一张图片进行标记,直到完成所有图片的标注任务。
:::note 说明
- 标注时输入标签仅支持数字、字母、下划线。
- 数据集图片要从实际模型部署使用的环境获得。
- 要将图片中的所有待检测目标都标注出来,任何目标都不能缺少标签,漏标注将影响模型精度。
- 边框需要紧密框住每个目标,且类别正确,标注无误。 :::
-
模型迁移
-
在工具界面单击下方“一键迁移”按钮,进入配置界面,输入迁移信息,单击“一键迁移”开始迁移。
图3 模型一键迁移配置界面

- 数据集路径:2中标注的数据集路径。
- 数据集拆分:将图片划分成训练、验证以及测试集的比例,推荐值:0.3。默认拆分0.1的测试集用于边缘推理,训练集与验证集按输入拆分比例再次进行拆分。
- 迭代次数:训练轮次,推荐值:100。
- 每批图片数:参与每个批次训练的图片张数,推荐值:12。
- 输出目录:模型输出路径。
- 使用早停策略:勾选后,可根据设置的IOU值(交并比,是一种计算不同图像相互重叠比例的算法)和持续迭代不上升次数,提前停止训练。
- IOU达到(值):该训练模型精度已达标,可停止训练的阈值,默认值:0.99。
- IOU连续迭代不上升次数:IOU值达到某一水平,多次迭代后并无提升的次数,默认值:10。
:::note 说明 当使用模型适配工具一键迁移时突然断电、重启、进程卡死或手动取消时,可能会引起输出文件残留,请用户自行删除残留文件后再进行一键迁移,请参见使用模型适配工具一键迁移时出现输出文件夹残留和手动取消迁移导致模型适配工具异常退出解决。 :::
-
迁移完成后会出现提示框,提示已生成打包好的文件,如图4所示。在训练输出目录会生成以下文件与目录,如图5所示。
- train_output:训练输出的权重文件、onnx文件以及训练数据信息json文件。
- trans_output:经过数据转换,根据数据集拆分设置生成的测试集、验证集、训练集。
- edge_infer.tar:打包好的推理相关模型文件与脚本。
图4 迁移完成
图5 输出文件
父主题: 构建图像分割应用
模型推理
-
以root用户远程登录开发者套件,将在PC训练模型获得的压缩包上传到开发者套件,上传方法可参见Windows与开发者套件的文件传输,进入目录执行解压操作。
tar -xvf edge_infer.tar -
进入文件目录执行以下命令将Windows格式文件转换为Unix、Linux格式。
cd edge_infer/ && dos2unix `find .`:::note 说明 若提示命令dos2unix not found,请使用命令安装。
-
Ubuntu22.04版本镜像:
apt install dos2unix -
OpenEuler22.03版本镜像:
yum install dos2unix
:::
-
-
设置环境变量。
# MindX SDK环境变量、CANN环境变量:. ${SDK-path}/set_env.sh. ${ascend-toolkit-path}/set_env.sh# 示例:Ubuntu OS:. /usr/local/Ascend/ascend-toolkit/set_env.sh. /usr/local/Ascend/mxVision/set_env.shopenEuler OS:. /usr/local/Ascend/ascend-toolkit/set_env.sh. $HOME/Ascend/mxVision/set_env.sh -
进入解压缩目录,执行模型转换命令转换yolact_edge模型。
# om 模型转换命令atc --framework=5 --model=./model.onnx --input_format=NCHW --input_shape="actual_input_1:1,3,96,96" --output=model_bs1 --log=error --soc_version=Ascend310B4模型转换成功回显如下:
ATC start working now, please wait for a moment.....................ATC run success, welcome to the next use.--model:解压的文件夹中onnx模型文件名称。
--output:输出om模型的名称。
--framework:5代表ONNX模型,默认不修改。
--log:表示日志级别,默认不修改。
--soc_version:处理器型号,默认不修改。
-
执行推理,有图片文件夹推理、视频推理两种方式,进入edge_infer/infer/sdk目录执行。
-
图片文件夹推理:
# 进入推理目录cd infer/sdk# 执行推理脚本bash build.sh推理成功回显如下:
============================================================The Mean IOU is 0.877106922632009pre_t 66.9802725315094 msinfer_t 13.050675392150879 mspost_t 161.10479831695557 mstotal_t 241.13574624061584 ms推理结果:命令执行成功后会在当前目录下生成infer_result文件夹,可查看推理后图片结果。
推理结果图如图1所示。
图1 查看推理结果

-
视频推理:
用户可自行准备视频,命名为 video.mp4,上传到 edge_infer/sample_data 目录,并执行以下命令。
# 进入推理目录cd infer/sdk# 执行推理脚本bash build_video.sh推理结果:推理后视频结果保存在 infer_result/video.mp4。
-
父主题: 构建图像分割应用
在线提单