Toybrick

楼主: zhuhairong

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

abcehac

注册会员

积分
163
发表于 2019-8-9 15:45:40 | 显示全部楼层
jefferyzhang 发表于 2019-8-9 12:57
是的,量化后才能达到最大算力。这也是目前业界算力功耗比最高的做法。 ...

好滴!我发现,如果只用demo中的几张图做transform的话,运行yolov3tiny根本识别不到东西,识别到了也基本都是错的。不知道您用的coco80个label的是哪版coco?

这个3399pro板子tranform darnet53的weights,cpu直接超频了……看来全网络只能在电脑上transform……
回复

使用道具 举报

17708867778

注册会员

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

版主您好,我们在量化的时候用了8W+的图,但是在转换的过程,感觉根本没有加载图片去量化,量化函数是True,请问还有可能是哪些问题,或者调哪些函数解决这样的情况?
回复

使用道具 举报

jefferyzhang

版主

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

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

使用道具 举报

17708867778

注册会员

积分
77
发表于 2019-8-12 22:52:28 | 显示全部楼层
本帖最后由 17708867778 于 2019-8-12 22:54 编辑
jefferyzhang 发表于 2019-8-12 15:48
为什么会有这种感觉。8W+都写入dataset.txt里了么

8W+的数据全部写入了,出现这种感觉是因为3分钟就转化完成了C:\Users\yhy\Desktop\11.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

abcehac

注册会员

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

如果要是量化10W+的图片,那是不是batch_size = 1000000?
我现在开启量化,把coco2014的所有图片名字都放在 dataset.txt中,但是依旧1-2分钟就量化完了。是不是我也要根据txt中的图片数量调整batch_size的数值?
回复

使用道具 举报

17708867778

注册会员

积分
77
发表于 2019-8-13 01:34:28 | 显示全部楼层
jefferyzhang 发表于 2019-8-12 15:48
为什么会有这种感觉。8W+都写入dataset.txt里了么

rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2', batch_size=16)

上面的这个batch_size的数量只会被加载一次,也就是只会量化batch_size数量这么多的图片

我看rknn.py文件中有个rknn_batch_size,这个函数是不是把batch_size加载进来的图片分rknn_batch_size次量化完,然后就执行rknn.export_rknn了?

我把batch_size=600,再往上加电脑就崩溃了,16g内存扛不住

回复

使用道具 举报

jefferyzhang

版主

积分
12851
发表于 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
回复

使用道具 举报

abcehac

注册会员

积分
163
发表于 2019-8-13 13:12:01 | 显示全部楼层
jefferyzhang 发表于 2019-8-13 11:00
rknn只支持batch_size=1,10w+图片就是epoch=10w,batch_size=1.
量化时候的batch_size应该是指多少张图片 ...

噢噢!好嘞!!!多谢!

模型转换这里我觉得很神奇,我只需要给模型resize后的图片,都不用给每个图片的label,它就能参考图片调整精度,它是怎么做到的???是不是我每个图片名字必须是这个图片中物体的label才行?

我只是在板子上的python库中的rknn/api/rknn.py中看到
def config(self, batch_size=100, ......)发现默认值是100。没想到它竟然只支持1!我要是用PC转换模型,这batch_size可以设置的更大吗?

回复

使用道具 举报

jefferyzhang

版主

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

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

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

使用道具 举报

abcehac

注册会员

积分
163
发表于 2019-8-13 22:19:18 | 显示全部楼层
jefferyzhang 发表于 2019-8-13 18:34
就用默认就好了,设置多少合理是没有准确答案的,只能不停的试验(深度学习不就是这样)
量化和Label是没 ...

噢!!原来是这个逻辑!那我是不是也应该放进去一些假的图片或者说不在我label内的图片,这样是不是能起到防止量化后的模型过度拟合呢???

我在1.1.0版本的rknn/api/rknn.py 中看到 config和build两个类中都有了batch_size参数,build中是rknn_batch_size ,范围是[0-128),默认值为1。官方文档和py中都没有写明这两个batch_size的关系。所以我准备把他们都先设置成30看看,数大了,我的电脑跑不动。
回复

使用道具 举报

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

本版积分规则

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


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