|
||
---|---|---|
.. | ||
README.md | ||
config.py | ||
dump.py | ||
example.py | ||
export.py | ||
file_model.py | ||
import_model.py | ||
infer.py | ||
netrans.py | ||
quantize.py | ||
quantize_hb.py | ||
setup.py | ||
utils.py |
README.md
Python api netrans_py 使用介绍
netrans_py 支持通过 python api 灵活地将模型转换成pnna 支持的格式。 使用 ntrans_py 完成模型转换的步骤如下:
- 导入模型
- 生成并修改前处理配置文件 *_inputmeta.yml
- 量化模型
- 导出模型
netrans_py api
Netrans 导入api及创建实例
创建 Netrans
描述: 实例化 Netrans 类。 代码示例:
from netrans import Netrans
yolo_netrans = Netrans("../examples/darknet/yolov4_tiny")
参数
参数名 | 类型 | 说明 |
---|---|---|
model_path | str | 第一位置参数,模型文件的路径 |
netans | str | 如果 NETRANS_PATH 没有设置,可通过该参数指定netrans的路径 |
输出返回: 无。
注意: 模型目录准备需要和netrans_cli一致,具体数据准备要求见introduction。
Netrans.load_model 模型导入
描述: 将模型转换成 pnna 支持的格式。 代码示例:
yolo_netrans.load_model()
参数: 无。
输出返回: 无。 在工程目录下生成 pnna 支持的模型格式,以.json结尾的模型文件和 .data结尾的权重文件。
Netrans.config 预处理配置文件生成
描述: 将模型转换成 pnna 支持的格式。 代码示例:
yolo_netrans.config()
参数:
参数名 | 类型 | 说明 |
---|---|---|
inputmeta | bool,str, [Fasle, True, "inputmeta_filepath"] | 指定 inputmeta, 默认为False。 如果为False,则会生成inputmeta模板,可使用mean、scale、reverse_channel 配合修改常用参数。 如果已有现成的 inputmeta 文件,则可通过该参数进行指定,也可使用True, 则会自动索引 model_name_inputmeta.yml |
mean | float, int, list | 设置预处理中 normalize 的 mean 参数 |
scale | float, int, list | 设置预处理中 normalize 的 scale 参数 |
reverse_channel | bool | 设置预处理中的 reverse_channel 参数 |
输出返回: 无。
Netrans.quantize 量化模型
描述: 对模型生成量化配置文件。 代码示例:
yolo_netrans.quantize("uint8")
参数:
参数名 | 类型 | 说明 |
---|---|---|
quantize_type | str | 第一位置参数,模型量化类型,仅支持 "uint8", "int8", "int16" |
输出返回: 无。
Netrans.export 模型导出
描述: 对模型生成量化配置文件。 代码示例:
yolo_netrans.export()
参数: 无。
输出返回: 无。请在目录 “wksp/*/” 下检查是否生成nbg文件。
Netrans.model2nbg 一键生成nbg文件
描述: 模型导入、量化、及nbg文件生产 代码示例:
# 无预处理
yolo_netrans.model2nbg(quantize_type='uint8')
# 需要对数据进行normlize, menas为128, scale 为 0.0039
yolo_netrans.model2nbg(quantize_type='uint8',mean=128, scale = 0.0039)
# 需要对数据分通道进行normlize, menas为128,127,125,scale 为 0.0039, 且reverse_channel 为 True
yolo_netrans.model2nbg(quantize_type='uint8'mean=[128, 127, 125], scale = 0.0039, reverse_channel= True)
# 已经进行初始化设置
yolo_netrans.model2nbg(quantize_type='uint8', inputmeta=True)
参数
参数名 | 类型 | 说明 |
---|---|---|
quantize_type | str, ["uint8", "int8", "int16" ] | 量化类型,将模型量化成该参数指定的类型 |
inputmeta | bool,str, [Fasle, True, "inputmeta_filepath"] | 指定 inputmeta, 默认为False。 如果为False,则会生成inputmeta模板,可使用mean、scale、reverse_channel 配合修改常用参数。 如果已有现成的 inputmeta 文件,则可通过该参数进行指定,也可使用True, 则会自动索引 model_name_inputmeta.yml |
mean | float, int, list | 设置预处理中 normalize 的 mean 参数 |
scale | float, int, list | 设置预处理中 normalize 的 scale 参数 |
reverse_channel | bool | 设置预处理中的 reverse_channel 参数 |
输出返回: 请在目录 “wksp/*/” 下检查是否生成nbg文件。
使用实例
from nertans import Netrans
model_path = 'example/darknet/yolov4_tiny'
netrans_path = "netrans/bin" # 如果进行了export定义申明,这一步可以不用
# 初始化netrans
net = Netrans(model_path,netrans=netrans_path)
# 模型载入
net.load_model()
# 生成 inputmeta 文件
net.gen_inputmeta()
# 配置预处理 normlize 的参数
net.config(scale=1,mean=0)
# 模型量化
net.quantize("uint8")
# 模型导出
net.export()
# 模型直接量化成 int16 并导出, 直接复用刚配置好的 inputmeta
net.model2nbg(quantize_type = "int16", inputmeta=True)