【NCNN移植部署开发记录-模型量化】

NCNN量化学习

1、fp32->int8量化推理原理

2、ncnn模型量化方法

  • 2.1 步骤1生成优化的ncnn模型
# 优化模型:将一些算子进行融合,像batchnorm层与卷积层合并,激活层与卷积层合并等
./ncnnoptimize model_original.param model_original.bin model_original-opt.param model_original-opt.bin 0
# 0表示fp32, 1表示fp16
  • 2.2 生成量化表
# 准备量化数据集,官方建议至少大于5000张图像

# 提取文件夹中图片的名字,写入txt
find images/ -type f > imagelist.txt

# 生成用于int8量化的量化表
# 量化表的作用,存储所有需量化层的scale信息,在ncnn2int8.cpp中,代码读取量化表,读取模型文件,然后按照量化表中的scale将模型中的参数量化,然后将INT8存下来
./ncnn2table model_original-opt.param model_original-opt.bin imagelist.txt model_original.table mean=[0,0,0] norm=[0.0039216,0.0039216,0.0039216] shape=[640,640,3] pixel=RGB thread=8 method=kl
# 参数说明:
# mean 和 norm: 输入数据减均值,除方差的参数
# shape: 输入模型的图像尺度,[w,h] 或者 [w,h,c]
# 
>
    * if w and h both are given, image will be resized to exactly size.
    * if w and h both are zero or negative, image will not be resized.
    * if only h is zero or negative, image's width will scaled resize to w, keeping aspect ratio.
    * if only w is zero or negative, image's height will scaled resize to h
# pixel: 输入图像的格式,BGR/RGB/GRAY(输入模型的图像格式)
# thread: 用于量化推理的并行线程数
# method: 量化方法,kl and aciq are currently supported
  • 2.3 量化模型
./ncnn2int8 model_original-opt.param model_original-opt.bin model_original-int8.param model_original-int8.bin model_original.table
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值