Toybrick

模型转换,量化的一些问题

jefferyzhang

版主

积分
12952
楼主
发表于 2019-7-23 10:11:48 | 显示全部楼层
量化是个比较大的专题,我个人也在研究,很难给出一个完美的答案。
不过量化图片肯定是越多越好,我有一个算法公司的客户模型都是用了10w+张照片量化,半个多小时才量化完,
而且rknn支持混合量化,需要微调每一层的量化结构,如果某些层需要精度很高可以关闭量化。可调性很强,需要多调试。
回复

使用道具 举报

jefferyzhang

版主

积分
12952
沙发
发表于 2019-7-25 10:22:42 | 显示全部楼层
Qmax 发表于 2019-7-24 17:46
我只想问下,已经用tflite量化好的模型在转的时候要指定量化类型吗

我问不到这个问题的答案,理论上是不需要的,你存储时候就已经是int8了,转换时候还是int8,不需要再次量化
回复

使用道具 举报

jefferyzhang

版主

积分
12952
板凳
发表于 2019-8-8 14:00:42 | 显示全部楼层
abcehac 发表于 2019-8-8 12:12
请问,我是不是可以理解成,在执行 rknn_transform.py 时,do_quantization=True,我在data中放入的图片 ...

量化提高了速度,降低了成本。正常来说肯定是量化图片越多精度越高。
不开启量化默认是用FP16,可以手动设置成FP32。只要类型一致,计算结果和原模型运算结果是一样的。

NPU计算单元最多的是INT8,其次是FP16,最少的是FP32。量化后全部使用INT8,是可以达到满3T的算力的。FP16和FP32算力就会下降很多。
回复

使用道具 举报

jefferyzhang

版主

积分
12952
地板
发表于 2019-8-9 12:57:08 | 显示全部楼层
abcehac 发表于 2019-8-8 14:26
感谢解答!!!也就是说不开启量化的话,NPU的计算力达不到最大!

也麻烦您帮忙看看《yolov3_demo中py文 ...

是的,量化后才能达到最大算力。这也是目前业界算力功耗比最高的做法。
回复

使用道具 举报

jefferyzhang

版主

积分
12952
5#
发表于 2019-8-12 15:48:40 | 显示全部楼层
17708867778 发表于 2019-8-12 13:56
版主您好,我们在量化的时候用了8W+的图,但是在转换的过程,感觉根本没有加载图片去量化,量化函数是Tru ...

为什么会有这种感觉。8W+都写入dataset.txt里了么
回复

使用道具 举报

jefferyzhang

版主

积分
12952
6#
发表于 2019-8-13 11:00:36 | 显示全部楼层
本帖最后由 jefferyzhang 于 2019-8-13 11:02 编辑
abcehac 发表于 2019-8-12 23:00
如果要是量化10W+的图片,那是不是batch_size = 1000000?
我现在开启量化,把coco2014的所有图片名字都放 ...

rknn只支持batch_size=1,10w+图片就是epoch=10w,batch_size=1.
量化时候的batch_size应该是指多少张图片作为一组结果进行量化,所以你10w的batchsize实际上只计算了一组量化数据,还是需要开高epoch
回复

使用道具 举报

jefferyzhang

版主

积分
12952
7#
发表于 2019-8-13 18:34:18 | 显示全部楼层
abcehac 发表于 2019-8-13 13:12
噢噢!好嘞!!!多谢!

模型转换这里我觉得很神奇,我只需要给模型resize后的图片,都不用给每个图片的 ...

就用默认就好了,设置多少合理是没有准确答案的,只能不停的试验(深度学习不就是这样)
量化和Label是没有关系的,他的目的是将每一层的float转成int8 + 反量化参数,所以需要大量图片来测试每层数据通过时候这层的定浮点转换如何在最小精度损失情况下完成量化。
量化是一门很大的学问,要具体研究下,我对量化的理解可能也不够专业。
回复

使用道具 举报

jefferyzhang

版主

积分
12952
8#
发表于 2019-8-13 23:27:49 | 显示全部楼层
abcehac 发表于 2019-8-13 22:19
噢!!原来是这个逻辑!那我是不是也应该放进去一些假的图片或者说不在我label内的图片,这样是不是能起 ...

量化不是训练!!!
量化只是把浮点转定点,运算速度快而已
回复

使用道具 举报

jefferyzhang

版主

积分
12952
9#
发表于 2020-4-2 18:08:28 | 显示全部楼层
呱唧 发表于 2020-4-2 18:04
do_quantization设置成False的时候默认是FP16吗?那要怎么设置成FP32呢?

混合量化后一层层改fp32.
不提供直接的接口,因为没人用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表