演示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演示,主要包括:

  1. 检测程序编译。

  2. squeezennet int8模型的量化生成。

  3. 利用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?