演示DEMO
1. DEMO概述
当前SDK内有关于模型转换的一些演示demo:
示例目录
功能
网络模型
输入
输出
create_lmdb_demo
基于imageset创建lmdb文件
无
image set
lmdb
classify_demo
分类网络模型转换以及推理流程
resnet18
fp32umodel
int8 umodel
detect_demo
人脸检测网络模型转换以及推理流程
squeezenet_21k
fp32umodel
int8 umodel
googlenet_bmodel_convert
googlenet转换为int8 bmodel完整流程
googlenet
fp32 caffemodel
int8 bmodel
resnet50_bmodel_convert
resnet50 caffemodel转换为int8 bmodel完成流程
resnet50
fp32 caffemodel
int8 bmodel
2. create_lmdb_demo
create_lmdb_demo文件路径为: /workspace/examples/calibration/create_lmdb_demo demo主要描述了如何使用convert_imageset来生成量化所使用的lmdb数据集合:
function convert_imageset_to_lmdb_demo()
{
rm $IMG_DIR/img_lmdb -rif
cali_gen_imagelist; ret=$?;
if [ $ret -ne 0 ]; then echo "#ERROR: cali_gen_imagelist"; return $ret; fi
# argv[1] : image dir
# argv[2] : image list
convert_imageset --shuffle --resize_height=256 --resize_width=256 \
$IMG_DIR/ $IMG_DIR/ImgList.txt $IMG_DIR/img_lmdb
ret=$?; if [ $ret -ne 0 ]; then echo "#ERROR: convt imgage to lmdb"; fi
echo "#INFO: Convert Images to lmdb done"
return $ret;
}其中resize_width需要根据网络模型的实际输入大小来确定 在此路径下,直接执行启动脚本,可以生成对应的lmdb:
其中的images/img_lmdb就是生成的lmdb数据集。用户可以参考此示例生成模型对应的数据集合。
3. classify_demo
主要是使用resnet18.caffemodel如何生成对应的int8 umodel,并验证int8下的精度。 其中自带lmdb文件,并且校准迭代次数简化为10次,方便快速执行:
执行后打印上述top_k的置信度。同时生成了对应的umodel:
4. detect_demo
主要使用squeezenet网络来做detect演示,主要包括:
检测程序编译。
squeezennet int8模型的量化生成。
利用int8模型进行人脸检测。 用户可以根据需要参考face_demo.sh文件的最后几行执行命令。
大约10分钟后,执行完毕,使用in8umodel最终检测出19个目标框,可以查看生成的图片确认。另外可以修改face_demo.sh中的执行命令,测试fp32网络的检测结果,二者可以比对。
5. googlenet_bmodel_convert
此示例包含下载作者版模型,并且脚本一键转换模型,用户可以直接基于此demo框架添加私有模型,并修改脚本内对应参数,既可以从caffemodel转成部署使用的bmodel:
最终会生成所需bmodel:
并且会验证生成的bmodel的精度是否与原caffemodel一致(bmrt_test):
为方便演示,自带lmdb文件,为Imagenet.
6. resnet50_bmodel_convert
此demo与googlenet的量化类似,用户可以直接基于此demo框架添加私有模型,并修改脚本内对应参数,既可以从caffemodel转成部署使用的bmodel:
并且会验证生成的bmodel的精度是否与原caffemodel一致(bmrt_test):
为方便演示,自带lmdb文件,为Imagenet.
Last updated
Was this helpful?