2.2 跑通第一个例子:模型迁移

为了运行${BMNNSDK}/examples/SSD_object/cpp_cv_bmcv_bmrt这个例子,需要使用原始Caffe模型生成2个模型:

  • fp32_ssd300.bmodel

  • int8_ssd300.bmodel

2.2.1 下载原始模型

若您可以访问google网络硬盘,则可以使用${BMNNSDK}/examples/SSD_object/model下脚本文件download_ssd_model.sh从google网络硬盘下载原始SSD模型:

# 从google网盘下载原始SSD Caffe模型
cd ${BMNNSDK}/examples/SSD_object/model
./download_ssd_model.sh

脚本将在下载完压缩包后自动解压为当前目录下的models文件夹;并创建ssd300.caffemodel和ssd300_deploy.prototxt的软链接指向models下的实体文件。这两个文件就是我们所需的原始Caffe模型文件。

若您无法访问google网络硬盘,则您需要手动从百度网盘下载所需文件,然后参考下述说明将文件解压到SDK中对应目录。

从百度网盘下载所需文件

若您无法访问google网络硬盘,请从以下百度网盘链接下载后拷贝到该目录。

原始Caffe模型数据:models_VGGNet_VOC0712_SSD_300x300.tar.gz:

https://pan.baidu.com/s/1pLxeLaVoisqN7IVyfrNhag Password: i4x9

量化使用的图片集数据:VOC712.tgz:

https://pan.baidu.com/s/1o9e7uqKBFx0MODssm4JdiQ Password:nl7v

解压所需文件

# 切换到指定目录
cd ${BMNNSDK}/examples/SSD_object/model
# 解压数据集到data目录下,完成后应该能看到data.mdb lock.mdb
tar zxf VOC712.tgz全路径 -C ./data/
# 将下载的文件models_VGGNet_VOC0712_SSD_300x300.tar.gz放到examples/SSD_object/model目录下
./download_ssd_model.sh

2.2.2 准备开发环境

转换模型前需要进入docker环境,切换到sdk根目录,启动docker容器:

# 从宿主机SDK根目录下执行脚本进入docker环境
./docker_run_bmnnsdk.sh

在docker容器内安装SDK及设置环境变量:

# 在docker容器内执行
cd /workspace/scripts
# 安装库
./install_lib.sh nntc
# 设置环境变量,注意此命令只对当前终端有效,重新进入需要重新执行
source envsetup_pcie.sh    # for PCIE MODE
source envsetup_cmodel.sh  # for SoC MODE

2.2.3 生成fp32 bmodel

# 切换到指定目录
cd /workspace/examples/SSD_object/model
# 生成fp32 bmodel
./gen_bmodel.sh

以上步骤正确执行后,会在out目录下生成fp32_ssd300.bmodel 文件。

2.2.4 生成int8 bmodel

# fp32模型转换完成之后,接着执行如下指令生成int8 bmodel
./gen_umodel_int8bmodel.sh 

成功执行后,会看到out目录下多了一个文件int8_ssd300.bmodel

至此,fp32和int8的模型迁移我们就完成了!

最后更新于