netrans/quick_start_guide.md

3.0 KiB
Raw Blame History

快速入门

本文档以 onnx 格式的 yolov5s 为例演示如何快速安装Nertans 并使用 Netrans 量化、编译模型并生成 nbg 文件。

系统环境

  • Linux操作系统推荐 Ubuntu 20.04 或 Debian12
  • Python 3.8
  • RAM 至少 8GB

安装Netrans

创建 python3.8 环境

wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
mkdir -p ~/app
INSTALL_PATH="${HOME}/app/miniforge3"
bash Miniforge3-Linux-x86_64.sh -b -p ${INSTALL_PATH}
echo "source "${INSTALL_PATH}/etc/profile.d/conda.sh"" >> ${HOME}/.bashrc
echo "source "${INSTALL_PATH}/etc/profile.d/mamba.sh"" >> ${HOME}/.bashrc
source ${HOME}/.bashrc
mamba create -n netrans python=3.8 -y
mamba activate netrans

下载 Netrans

cd ~/app
git clone https://gitlink.org.cn/nudt_dsp/netrans.git

配置 Netrans

cd ~/app/netrans
./setup.sh

使用 Netrans 编译 yolov5s 模型

进入工作目录

cd /app/netrans/examples/onnx

此时目录如下:

onnx/
├── README.md
└── yolov5s
    ├── 0.jpg
    ├── dataset.txt
    └── yolov5s.onnx

使用 netrans_cli 编译 yolov5s

导入模型

load.sh yolov5s

该命令会在工程目录下生成包含模型信息的 .json 和 .data 数据文件。

此时 yolov5s 的目录结构如下

yolov5s/
├── 0.jpg
├── yolov5s.data
├── yolov5s.json
└── yolov5s.onnx

生成配置文件模板

配置文件定义输入数据前处理相关参数。Netrans预定义了配置文件模板生成脚本用户需根据模型前处理参数对配置文件进行修改。

config.sh yolov5s

此时 yolov5s 的目录结构如下:

yolov5s/
├── 0.jpg
├── dataset.txt
├── yolov5s.data
├── yolov5s_inputmeta.yml
├── yolov5s.json
└── yolov5s.onnx

根据 yolov5s 的前处理参数 ,修改 yml 中的 scale 为 0.003921568627。 打开 yolov5s_inputmeta.yml 文件修改第30-33行

        scale:
        - 0.003921568627
        - 0.003921568627
        - 0.003921568627

量化模型

生成 unit8 量化的量化参数文件

quantize.sh yolov5s uint8

此时 yolov5s 的目录结构如下:

yolov5s/
├── 0.jpg
├── dataset.txt
├── yolov5s_asymmetric_affine.quantize
├── yolov5s.data
├── yolov5s_inputmeta.yml
├── yolov5s.json
└── yolov5s.onnx

导出模型

导出 unit8 量化的模型项目工程

export.sh yolov5s uint8

此时 yolov5s 的目录结构如下:

yolov5s/
├── 0.jpg
├── dataset.txt
├── wksp
│   └── asymmetric_affine
│       └── network_binary.nb
├── yolov5s_asymmetric_affine.quantize
├── yolov5s.data
├── yolov5s_inputmeta.yml
├── yolov5s.json
└── yolov5s.onnx

使用 netrans_py 编译 yolov5s 模型

example.py yolov5s -q uint8 -m 0 -s 0.003921568627