模型推理
- 以root用户远程登录开发者套件,将在PC训练模型获得的压缩包上传到开发者套件,上传方法可参见Windows与开发者套件的文件传输,进入目录执行解压操作。
tar -xvf edge_infer.tar
- 进入文件目录执行以下命令将Windows格式文件转换为Unix、Linux格式。
cd infer/ && dos2unix `find .`
若提示命令dos2unix not found,请使用命令安装。
- Ubuntu22.04版本镜像:
apt install dos2unix
- OpenEuler22.03版本镜像:
yum install dos2unix
- Ubuntu22.04版本镜像:
- 设置环境变量。
# 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.sh openEuler 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所示。
- 精度测试,进入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: 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检测结果文件。
- 图片推理,进入infer目录执行以下命令。
父主题: 构建关键点检测跟踪应用