Toybrick

CenterNet精度量化效果很差

LSC

注册会员

积分
142
楼主
发表于 2019-12-31 16:25:14    查看: 31839|回复: 12 | [复制链接]    打印 | 只看该作者
感谢版主这两天的回复,量化终于跑通了,但是效果真的很差。不使用量化的结果和pytorch版效果一样,使用uint8量化时,结果值能检测到一个框(一共十几个框)。数据集是预先按照CenterNet中预处理方式对图片进行resize得到的图片,dataset为5000张图,batchsize=100,epochs=50。
个人猜想精度损失很大有以下原因:
(1)归一化方式:CenterNet预处理中对图片三个通道分别进行归一化(均值方差均不同,均值[0.408, 0.447, 0.470],方差[0.289, 0.274, 0.278]),而转换RKNN模型时,由于归一化参数中方差只有一位,所以我设置的是方差三个的平均值。但我觉得这一点影响不大,因为三个方差差不太多。
(2)后处理:CenterNet输出的是物体中心点的热力图,后处理要使用Maxpooling找到峰值,即9个点中的最大值。量化之后热力图上原本很多比较接近的点数值都变成一样的数,就找不到最大值的点了。
(3)这个警告的影响?
  1. W Adjust min from [-5.106467] to [0.] for relu relu8_39
  2. W Adjust min from [-5.106467] to [0.] for relu relu13_67
  3. W Adjust min from [-5.106467] to [0.] for relu relu15_76
  4. W Adjust min from [-5.106467] to [0.] for relu relu17_85
  5. W Adjust min from [-4.101224] to [0.] for relu relu18_90
  6. W Adjust min from [-2.5565655] to [0.] for relu relu43_218
  7. W Adjust min from [-4.101224] to [0.] for relu relu23_118
  8. W Adjust min from [-4.101224] to [0.] for relu relu25_127
  9. W Adjust min from [-4.101224] to [0.] for relu relu27_136
  10. W Adjust min from [-3.4539304] to [0.] for relu relu28_141
  11. W Adjust min from [-24.208406] to [0.] for relu relu38_193
  12. W Adjust min from [-1.8253068] to [0.] for relu relu44_223
复制代码
请问我该怎样混合量化?



回复

使用道具 举报

jefferyzhang

版主

积分
13578
沙发
发表于 2020-1-2 08:53:39 | 只看该作者
1. 确定是精度差还是压根就算错了,如果得出来结果和pytorch或者tf差距很大,或者符号位都不一样,那就是计算结果出问题了,而不是精度问题
2. 混合量化可以用二分法尝试,先一半量化一半不量化,看精度和速度是否可接受,然后再不断的加减量化层数
回复

使用道具 举报

LSC

注册会员

积分
142
板凳
 楼主| 发表于 2020-1-2 09:36:58 | 只看该作者
file:///C:/Users/hello/Desktop/result1.jpg
回复

使用道具 举报

LSC

注册会员

积分
142
地板
 楼主| 发表于 2020-1-2 09:46:16 | 只看该作者
jefferyzhang 发表于 2020-1-2 08:53
1. 确定是精度差还是压根就算错了,如果得出来结果和pytorch或者tf差距很大,或者符号位都不一样,那就是计 ...

好的感谢提供思路,请问有没有办法查看每一层的参数?开对比一下量化前后参数差异。
回复

使用道具 举报

jefferyzhang

版主

积分
13578
5#
发表于 2020-1-2 10:14:28 | 只看该作者
LSC 发表于 2020-1-2 09:46
好的感谢提供思路,请问有没有办法查看每一层的参数?开对比一下量化前后参数差异。 ...

看参数没啥用吧,
你要把output输出节点配置不断往前挪,来确定输出和原模型差异
回复

使用道具 举报

LSC

注册会员

积分
142
6#
 楼主| 发表于 2020-1-2 10:48:26 | 只看该作者
jefferyzhang 发表于 2020-1-2 08:53
1. 确定是精度差还是压根就算错了,如果得出来结果和pytorch或者tf差距很大,或者符号位都不一样,那就是计 ...

我上传不了图片,所以我传到百度云里了,result1.jpg是不使用量化的结果,result3.jpg是u8量化的结果,result5.jpg是f8量化的结果。应该是精度的问题而不是算错了吧。

百度云
链接:https://pan.baidu.com/s/1KQ9ViKzAiy1nNOhbYmzFew
提取码:vy2t
回复

使用道具 举报

jefferyzhang

版主

积分
13578
7#
发表于 2020-1-2 11:05:33 | 只看该作者
本帖最后由 jefferyzhang 于 2020-1-2 11:07 编辑
LSC 发表于 2020-1-2 10:48
我上传不了图片,所以我传到百度云里了,result1.jpg是不使用量化的结果,result3.jpg是u8量化的结果,re ...

额,不是看图片啊,图片哪能看出具体结果,你要看模型输出的值打印出来。。。。
如果不是bug,那就只能试试二分法做混合量化
回复

使用道具 举报

LSC

注册会员

积分
142
8#
 楼主| 发表于 2020-1-2 11:07:44 | 只看该作者
jefferyzhang 发表于 2020-1-2 11:05
如果不是bug,那就只能试试二分法做混合量化

明白,我传的是三张结果图,确认一下是不是只是精度问题。
回复

使用道具 举报

jefferyzhang

版主

积分
13578
9#
发表于 2020-1-2 12:01:47 | 只看该作者
LSC 发表于 2020-1-2 11:07
明白,我传的是三张结果图,确认一下是不是只是精度问题。

从图是看不出精度问题的,只能推断出很可能是精度问题。。。
检不捡的出还得看你NMS阈值设置多少,得看NMS之前的数据才有可能看出问题。
回复

使用道具 举报

LSC

注册会员

积分
142
10#
 楼主| 发表于 2020-1-2 14:47:59 | 只看该作者
jefferyzhang 发表于 2020-1-2 12:01
从图是看不出精度问题的,只能推断出很可能是精度问题。。。
检不捡的出还得看你NMS阈值设置多少 ...

谢谢,我用二分法调一下试试看
回复

使用道具 举报

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

本版积分规则

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


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