✏️
SophonSDK3开发指南
  • SophonSDK3 开发指南
  • 1 SDK软件包
    • 1.1 SDK 简介
    • 1.2 资料简介
    • 1.3 获取SDK
    • 1.4 安装SDK
      • 1.4.1 环境配置-Linux
      • 1.4.2 环境配置-Windows
      • 1.4.3 环境配置-SoC
    • 1.5 更新SDK
    • 1.6 SDK更新记录
    • 1.7 SDK已知问题
  • 2 快速入门
    • 2.1 移植开发综述
    • 2.2 重要概念
    • 2.3 样例程序
  • 3 网络模型迁移
    • 3.1 模型迁移概述
    • 3.2 FP32 模型生成
    • 3.3 INT8 模型生成
      • 3.3.1 准备lmdb数据集
      • 3.3.2 生成FP32 Umodel
      • 3.3.3 生成INT8 Umodel
      • 3.3.4 精度测试
      • 3.3.5 生成INT8 Bmodel
      • 3.3.6 auto_cali一键量化工具
  • 4 算法移植
    • 4.1 算法移植概述
    • 4.2 C/C++编程详解
    • 4.3 Python编程详解
    • 4.4 解码模块
    • 4.5 图形运算加速模块
    • 4.6 模型推理
  • 5 打包和发布
    • 5.1 概述
    • 5.2 PCIE加速卡模式
    • 5.3 SOC模式
  • 附录
由 GitBook 提供支持
在本页
  1. 3 网络模型迁移
  2. 3.3 INT8 模型生成

3.3.1 准备lmdb数据集

上一页3.3 INT8 模型生成下一页3.3.2 生成FP32 Umodel

最后更新于2年前

我们需要将原始量化数据集转换成lmdb格式,供后续校准量化工具Quantization-tools 使用。

Quantization-tools对数据格式的要求:

  • Quantization-tools 对输入数据的格式要求是 [N,C,H,W] :即先按照 W 存放数据,再按照 H 存放 数据,依次类推

  • Quantization-tools 对输入数据的 C 维度的存放顺序与原始框架保持一致:例如 caffe 框架要求的 C 维度存放顺序是 BGR;tensorflow 要求的 C 维度存放顺序是 RGB

将数据转换成 lmdb 数据集有两种方法:

  1. 使用 工具,将图片目录转化为lmdb供分步量化使用;

  2. 运用U-FrameWork接口,在网络推理过程中或编写脚本将网络推理输入抓取存成lmdb,方法请参考 create_lmdb。与LMDB相关的功能已经独立成为ufwio包,该安装包不再依赖Sophgo的SDK,可以在任何Python3.5及以上环境下运行。

在U-FrameWork中,网络的输入数据使用LMDB形式保存,作为data layer的数据来源。对于一般简单的情况,只需将量化输入图片进行解码和格式转换就可以了, 推荐在制作LMDB过程中即进行减均值除方差等操作,lmdb中保存前处理后的数据。而对于前处理不能精确表达的复杂处理, 或者在级联网络中需要把中间结果作为下一级网络的输入进行训练的情况,用户可以自己开发预处理脚本,直接生成lmdb。

SophonSDK中提供了一套ufwio包,提供了一系列API帮助用户构建LMDB,该包已与SophonSDK解耦,可以在任何Pyhton3.5及以上环境中安装运行,具体请参考《量化工具用户开发手册》。

examples中提供了创建lmdb的示例程序: ,此示例程序可以直接作为工具使用也可以在其基础上修改加入自定义的预处理。

如何使用生成的lmdb在 中描述,配合其中描述的前处理为量化期间的推理准备好数据。

auto_cali一键量化工具
准备LMDB数据集
示例2:create_lmdb_demo
使用LMDB数据集