4.1.2.7. hb_verifier 工具¶
hb_verifier
工具是用于对指定的定点模型和runtime模型进行结果验证的工具。
若您使用工具前指定了图片,则 hb_verifier
工具会使用指定图片进行定点模型推理、runtime模型板端和X86端模拟器上的推理,并对结果进行两两比较,
给出是否通过的结论(此过程支持自选,您可以根据需要选择进行对比的内容)。
若您在使用工具前未指定图片,则 hb_verifier
工具会默认使用随机生成的tensor数据进行推理。
注意
在进行runtime模型在板端的推理时,需要确认给定ip可以ping通且板端已经安装
hrt_tools
,若无则可以使用OE包中ddk/package/board
下的install.sh
脚本进行安装。在进行runtime模型在x86端的推理时,需要确保host端已经安装
hrt_tools
,若无则可以使用OE包中ddk/package/host/host_package/
下的install_host_package.sh
脚本进行安装。
在使用本工具前,以下内容需要请您注意:
注意
hb_verifier工具不支持除Dequantize节点外,有其他节点变化的bin模型与quanti.onnx进行对比。
如果在使用本工具前,您使用hb_model_modifier工具删除了bin模型的输出前的最后一个节点且该节点为非Dequantize节点,或者yaml文件中配置了 remove_node_type
参数,
从而删除了bin模型的输出前的最后一个节点且该节点为非Dequantize节点,那么hb_verifier工具将不再支持quanti.onnx和删除节点后的bin模型做对比。
如您想解决上述问题,需要避免出现上述删除bin模型的输出前的最后一个节点且该节点为非Dequantize节点的情况。
4.1.2.7.1. 使用方式¶
hb_verifier -m ${quanti_model},${bin_model} \
-b ${board_ip} \
-s True / False \
-i ${input_img} \
-c ${digits} \
-r True / False
4.1.2.7.2. 命令行参数¶
- hb_verifier的命令行参数:
- --model, -m
定点模型名称和bin模型名称,多模型之间用”,”进行区分。
- --board-ip, -b
上板测试使用的arm board ip地址。
- --run-sim, -s
设置是否使用X86环境的libdnn做bin模型推理,默认为False。
当该参数设置为
True
时,工具将会使用x86环境的libdnn做bin模型推理。当该参数设置为
False
时,工具不会使用x86环境的libdnn做bin模型推理。
- --input-img, -i
指定推理测试时使用的图片。
若不指定则会使用随机生成的tensor数据。
若指定图片为二进制形式的图片文件,其文件形式需要为后缀名为
.bin
形式。多输入模型添加图片的方式有以下两种传参方式,多张图片之间用”,”分割:
input_name1:image1,input_name2:image2, …
image1,image2…
- --compare_digits, -c
设置比较推理结果的数值精确度(即比较数值小数点后的位数),若不进行指定则工具会默认比较至小数点后五位。
- --dump-all-nodes-results, -r
设置是否保存模型中各个算子的输出结果,并对算子输出名称相同的结果进行对比,默认为False。
当该参数设置为
True
时,工具将会获取模型中所有节点的输出,并根据节点输出的名字做匹配,从而进行对比。当该参数设置为
False
时,工具将会只获取模型最终输出的结果,并进行对比。
注意
请您注意,目前基于性能考虑,暂不支持您在X86环境下使用dump功能。
4.1.2.7.3. 参考使用场景样例¶
1.quanti.onnx模型推理、bin模型在板端推理,bin模型在X86环境下进行推理,并对三方推理结果做对比:
hb_verifier -m quanti.onnx,model.bin -b *.*.*.* -s True (-i 选填)
2.quanti.onnx模型推理、bin模型在板端推理,并对两方推理结果做对比:
hb_verifier -m quanti.onnx,model.bin -b *.*.*.* (-i 选填)
3.quanti.onnx模型推理、bin模型在板端推理,过程中会保存两方模型中各个算子的输出,并对算子输出名称相同的结果进行对比:
hb_verifier -m quanti.onnx,model.bin -b *.*.*.* -r True (-i 选填)
4.quanti.onnx模型推理、bin模型在X86环境下进行推理,并对两方推理结果做对比:
hb_verifier -m quanti.onnx,model.bin -s True (-i 选填)
5.bin模型在板端、X86环境下进行推理,并对两方推理结果做对比:
hb_verifier -m model.bin -b *.*.*.* -s True (-i 选填)
4.1.2.7.4. 输出内容说明¶
结果对比最终会在终端展示,工具会对比多个模型在不同场景下的运行结果,若无问题应显示如下:
Comparison results of original output is model_infer_output_0
raw output 0 and raw output 0 result Strict check PASSED
Quanti.onnx and Arm result Strict check PASSED
在定点模型和runtime模型精度不一致时会输出不一致结果的具体信息,如下方log所示:
INFO ================== Sim infer log end ==========================
INFO ***************************************************************
INFO compare source: Quanti.onnx VS Arm
INFO compare model name: clr_320x800_bgr_quantized_model VS clr_320x800_bgr
Compare progress: 100%|###################################| 1/1 [00:00<00:00, 17.53it/s]
INFO =============== Original output comparison results =================
INFO Comparison results of original output is model_infer_output_0
INFO mismatch result num: 13824
INFO total result num: 14976
INFO mismatch rate: 0.923
INFO relative mismatch ratio: 1.0
WARNING raw output 0 and raw output 0 result Strict check FAILED
WARNING Quanti.onnx and Arm result Strict check FAILED
INFO ***************************************************************
INFO ***************************************************************
INFO compare source: Quanti.onnx VS Sim
INFO compare model name: clr_320x800_bgr_quantized_model VS clr_320x800_bgr
Compare progress: 100%|###################################| 1/1 [00:00<00:00, 18.51it/s]
INFO =============== Original output comparison results =================
INFO Comparison results of original output is model_infer_output_0
INFO mismatch result num: 13824
INFO total result num: 14976
INFO mismatch rate: 0.923
INFO relative mismatch ratio: 1.0
WARNING raw output 0 and raw output 0 result Strict check FAILED
WARNING Quanti.onnx and Sim result Strict check FAILED
INFO ***************************************************************
INFO ***************************************************************
INFO compare source: Arm VS Sim
INFO compare model name: clr_320x800_bgr VS clr_320x800_bgr
Compare progress: 100%|###################################| 1/1 [00:00<00:00, 48.73it/s]
INFO =============== Original output comparison results =================
INFO Comparison results of original output is model_infer_output_0
INFO raw output 0 and raw output 0 result Strict check PASSED
INFO Arm and Sim result Strict check PASSED
INFO ***************************************************************
其中:
mismatch result num
为两种模型精度不一致结果的个数,包括三种不一致情况:mismatch.line_miss num
为输出结果数量不一致的个数;mismatch.line_diff num
为输出结果差距过大的个数;mismatch.line_nan num
为输出为nan的个数。
total result num
为输出数据的总个数。mismatch rate
为不一致数据个数占输出数据总个数的比例。relative mismatch ratio
为相对误差比例,取误差比例最大的值进行展示。