netrans/quick_start_guide.md

161 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 快速入门
本文档以 onnx 格式的 yolov5s 为例演示如何快速安装Nertans 并使用 Netrans 量化、编译模型并生成 nbg 文件。
## 系统环境
- Linux操作系统推荐 Ubuntu 20.04 或 Debian12
- Python 3.8
- RAM 至少 8GB
## 安装Netrans
创建 python3.8 环境
```bash
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
```bash
cd ~/app
git clone https://gitlink.org.cn/nudt_dsp/netrans.git
```
配置 Netrans
```bash
cd ~/app/netrans
./setup.sh
```
## 使用 Netrans 编译 yolov5s 模型
进入工作目录
```bash
cd /app/netrans/examples/onnx
```
此时目录如下:
```text
onnx/
├── README.md
└── yolov5s
├── 0.jpg
├── dataset.txt
└── yolov5s.onnx
```
### 使用 netrans_cli 编译 yolov5s
#### 导入模型
```bash
load.sh yolov5s
```
该命令会在工程目录下生成包含模型信息的 .json 和 .data 数据文件。
此时 yolov5s 的目录结构如下
```text
yolov5s/
├── 0.jpg
├── yolov5s.data
├── yolov5s.json
└── yolov5s.onnx
```
#### 生成配置文件模板
配置文件定义输入数据前处理相关参数。Netrans预定义了配置文件模板生成脚本用户需根据模型前处理参数对配置文件进行修改。
```bash
config.sh yolov5s
```
此时 yolov5s 的目录结构如下:
```text
yolov5s/
├── 0.jpg
├── dataset.txt
├── yolov5s.data
├── yolov5s_inputmeta.yml
├── yolov5s.json
└── yolov5s.onnx
```
根据 yolov5s 的前处理参数 ,修改 yml 中的 scale 为 0.003921568627。
打开 ` yolov5s_inputmeta.yml ` 文件修改第30-33行
```text
scale:
- 0.003921568627
- 0.003921568627
- 0.003921568627
```
#### 量化模型
生成 unit8 量化的量化参数文件
```bash
quantize.sh yolov5s uint8
```
此时 yolov5s 的目录结构如下:
```text
yolov5s/
├── 0.jpg
├── dataset.txt
├── yolov5s_asymmetric_affine.quantize
├── yolov5s.data
├── yolov5s_inputmeta.yml
├── yolov5s.json
└── yolov5s.onnx
```
#### 导出模型
导出 unit8 量化的模型项目工程
```bash
export.sh yolov5s uint8
```
此时 yolov5s 的目录结构如下:
```text
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 模型
```bash
example.py yolov5s -q uint8 -m 0 -s 0.003921568627
```