3.4.2 classify_demo
classify_demo位于:${BMNNSDK}/examples/calibration/classify_demo
classify_demo主要演示如何将fp32 umodel(resnet18.prototxt、resnet18.fp32umodel)转换为int8 umodel,并验证量化后int8模型的精度;目录下自带lmdb文件和restnet18 fp32 umodel。
3.4.2.1 测试脚本函数介绍
用户可以根据需要参考./classify_demo.sh文件的函数执行命令,使用source classify_demo.sh可以使能脚本中的函数,以便在命令行中直接使用这些函数:
# 切换工作目录
cd /workspace/examples/calibration/classify_demo
# 使能脚本中函数,这样就可以在命令行中直接使用脚本中的函数了
source classify_demo.sh3.4.2.2 fp32 umodel转换为int8 umodel
在命令行中执行convert_to_int8_demo,生成int8 umodel:
# 以下为命令行输出
......
I1206 13:23:29.258087 972 cali_core.cpp:1941]
I1206 13:23:29.258093 972 cali_core.cpp:1942] calibration for layer = acc/top-5
I1206 13:23:29.258097 972 cali_core.cpp:1943] id=83 type:Accuracy ...
I1206 13:23:29.258105 972 cali_core.cpp:2063] Do nothing for Layer 83 of Type Accuracy with no blobs
I1206 13:23:29.258111 972 cali_core.cpp:2072] intput 0: set_scaleconvertbacktofloat_input_mul =0.189022
I1206 13:23:29.258118 972 cali_core.cpp:2072] intput 1: set_scaleconvertbacktofloat_input_mul =1.18394
I1206 13:23:29.258123 972 cali_core.cpp:2076] output 0 set_scaleconvertbacktofloat_output_mul =0.000494048
I1206 13:23:29.258131 972 cali_core.cpp:2079] forward_with_float = 0
I1206 13:23:29.258137 972 cali_core.cpp:2080] output_is_float = 0
I1206 13:23:29.258144 972 cali_core.cpp:2081] is_shape_layer = 0
I1206 13:23:29.258150 972 cali_core.cpp:2082] use_max_as_th =0
I1206 13:23:32.369089 972 cali_core.cpp:2268] used time=0 hour:0 min:7 sec
I1206 13:23:32.369168 972 cali_core.cpp:2270] int8 calibration done.
#INFO: Run Example (Resnet18 Fp32ToInt8) Done转换好的int8 umodel文件将被保存在models目录下:
3.4.2.3 int8umodel 测试
您也可以命令行中直接执行test_int8_demo,这将同时执行int8 umodel的生成和测试,打印top_k的置信度,输出如下:
3.4.2.4 其他测试
您还可以运行脚本中的其他函数,对比验证fp32 umodel以及int8 umodel的精度差异。
最后更新于