Toybrick

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

zhuhairong

注册会员

积分
148
发表于 2019-7-18 11:17:54    查看: 28049|回复: 23 | [复制链接]    打印 | 显示全部楼层
mobilenet ssd caffe模型转换到 rknn 模型,转换过程的打印:
--> config model
done
--> Loading model
W Unhandle status: the input shape of reshape layer mbox_conf_reshape_186 is not 4-D
done
--> Building model
W The RKNN Model generated can not run on simulator when pre_compile is True.
W Unhandle status: the input shape of reshape layer mbox_conf_reshape_186 is not 4-D
W Unhandle status: the input shape of reshape layer mbox_conf_reshape_186 is not 4-D
done
--> Export RKNN model
done


转换完的模型效果和pc有比较大的差距。
1. 请问W Unhandle status: the input shape of reshape layer mbox_conf_reshape_186 is not 4-D, 会引起什么问题?
2. 量化的时候图片多少,差别很大,图片多效果也不一定好,甚至出现乱框。如何量化可以达到和原始模型一样的效果 ?
回复

使用道具 举报

jefferyzhang

版主

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

使用道具 举报

Qmax

新手上路

积分
36
发表于 2019-7-24 17:46:36 | 显示全部楼层
jefferyzhang 发表于 2019-7-23 10:11
量化是个比较大的专题,我个人也在研究,很难给出一个完美的答案。
不过量化图片肯定是越多越好,我有一个 ...

我只想问下,已经用tflite量化好的模型在转的时候要指定量化类型吗
回复

使用道具 举报

jefferyzhang

版主

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

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

使用道具 举报

zhuhairong

注册会员

积分
148
 楼主| 发表于 2019-7-29 19:13:33 | 显示全部楼层
多谢,混合量化也是个麻烦的事情,不清楚哪些层影响大。
回复

使用道具 举报

protossw512

中级会员

积分
252
发表于 2019-7-30 07:47:16 | 显示全部楼层
jefferyzhang 发表于 2019-7-23 10:11
量化是个比较大的专题,我个人也在研究,很难给出一个完美的答案。
不过量化图片肯定是越多越好,我有一个 ...

请问一下,有没有办法把tflite量化好的模型的rknn量化参数读出来进行手动调整?我怀疑自动转换的环节有些地方match的不对,我们现在相同的输入tflite的量化模型输出和转成rknn的模型输出差距很大。
回复

使用道具 举报

abcehac

注册会员

积分
163
发表于 2019-8-8 12:12:14 | 显示全部楼层
jefferyzhang 发表于 2019-7-23 10:11
量化是个比较大的专题,我个人也在研究,很难给出一个完美的答案。
不过量化图片肯定是越多越好,我有一个 ...

请问,我是不是可以理解成,在执行 rknn_transform.py 时,do_quantization=True,我在data中放入的图片越多,那么量化后转换出来的模型就会更好呢?

如果不开启量化,转换后的模型和yolo原模型的精度是不是基本一致的?

这个量化是说在提高了转换模型的速度还是说回头可以提高实际使用时的识别速度?
回复

使用道具 举报

jefferyzhang

版主

积分
12848
发表于 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算力就会下降很多。
回复

使用道具 举报

abcehac

注册会员

积分
163
发表于 2019-8-8 14:26:09 | 显示全部楼层
jefferyzhang 发表于 2019-8-8 14:00
量化提高了速度,降低了成本。正常来说肯定是量化图片越多精度越高。
不开启量化默认是用FP16,可以手动 ...

感谢解答!!!也就是说不开启量化的话,NPU的计算力达不到最大!

也麻烦您帮忙看看《yolov3_demo中py文件源代码是不是有点小问题?原贴有问题重发》仔细看了下yolov3_demo的python代码,有些地方似乎有点小问题,多谢!
回复

使用道具 举报

jefferyzhang

版主

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

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

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

使用道具 举报

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

本版积分规则

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


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