Toybrick

转换后的rknn版yolov3-tiny在预测时精度下降

double_s

注册会员

积分
98
楼主
发表于 2020-4-23 16:09:14    查看: 12028|回复: 9 | [复制链接]    打印 | 只看该作者
本帖最后由 double_s 于 2020-4-23 16:19 编辑

您好!因我在测试rknn版yolov3-tiny模型时,较原darknet版模型的精度下降,不开启量化时,精度也下降了,主要表现为漏检多了,以及检测框框出的物体不全(原darknet版框出的是全的),如下:
  rknn版结果:   darknet版结果: 请问这有什么办法改善吗?量化版也进行了尝试,大概添加了几万张量化图,可是结果还是框不全。

还有一个问题,由于上述精度下降,因此想尝试先将原darknet版tiny模型转换为tensorflow版,然后再将tensorflow版的模型转换为rknn版进行测试,成功转换成了rknn版,但是在测试时报错:
--> Init runtime environment
E [op_check:103]Invalid broadcast for inputs[0] size[2]
E [setup_node:383]Check node[52] ADD fail
Create RKNN model fail!
E Catch exception when init runtime!
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 988, in rknn.api.rknn_base.RKNNBase.init_runtime
E   File "rknn/api/rknn_runtime.py", line 320, in rknn.api.rknn_runtime.RKNNRuntime.build_graph
E Exception: RKNN init failed. error code: RKNN_ERR_MODEL_INVALID
Init runtime environment failed

请问能看出这是哪里出现问题了吗?





本帖子中包含更多资源

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

x
回复

使用道具 举报

jefferyzhang

版主

积分
13580
沙发
发表于 2020-4-23 16:39:53 | 只看该作者
精度问题需要靠混合量化解决。
第二个问题确认下你的tf文件在当前转换版本上能不能被加载和推理再转换rknn。
回复

使用道具 举报

double_s

注册会员

积分
98
板凳
 楼主| 发表于 2020-4-24 10:48:07 | 只看该作者
jefferyzhang 发表于 2020-4-23 16:39
精度问题需要靠混合量化解决。
第二个问题确认下你的tf文件在当前转换版本上能不能被加载和推理再转换rknn ...

我之前还尝试过将darknet版yolov3-tiny转为caffe版,再通过caffe版转为rknn,转rknn是成功了,但是预测阶段,Init runtime environment时就会报段错误,无法进行,这又是什么原因呢?
这个转换的caffe版模型已经确认过可以进行目标检测,且精度和原darknet版差不多。
回复

使用道具 举报

jefferyzhang

版主

积分
13580
地板
发表于 2020-4-24 14:50:04 | 只看该作者
https://github.com/rockchip-linux/rknn-toolkit
你先试试1.3.2,因为你一些问题都是以前碰到的已知问题。。。
回复

使用道具 举报

double_s

注册会员

积分
98
5#
 楼主| 发表于 2020-4-24 18:25:24 | 只看该作者
jefferyzhang 发表于 2020-4-23 16:39
精度问题需要靠混合量化解决。
第二个问题确认下你的tf文件在当前转换版本上能不能被加载和推理再转换rknn ...

已经试过了,tf文件可以加载和推理。。那我先试下1.3.2版的吧
回复

使用道具 举报

double_s

注册会员

积分
98
6#
 楼主| 发表于 2020-4-27 18:20:05 | 只看该作者
jefferyzhang 发表于 2020-4-24 14:50
https://github.com/rockchip-linux/rknn-toolkit
你先试试1.3.2,因为你一些问题都是以前碰到的已知问题。 ...

我更改为1.3.2版本后,还是同样的问题。。
从darknet版的yolov3-tiny,不开启量化(即do_quantization=False),使用转换后的rknn进行测试,框就已经画得不全了(可以检测出物体,就是不能框全),这种情况也能通过混合量化解决吗?
回复

使用道具 举报

jefferyzhang

版主

积分
13580
7#
发表于 2020-4-27 18:27:13 | 只看该作者
double_s 发表于 2020-4-27 18:20
我更改为1.3.2版本后,还是同样的问题。。
从darknet版的yolov3-tiny,不开启量化(即do_quantization=Fa ...

可以,也只能通过混合量化解决。
思路就是先不量化,看下结果是不是可以接收,如果可以的话就开始混合量化。
把量化和不量化的各层输出都dump出来,然后比对精度损失最大的层,把这层改非量化,就可以了。

量化的层越多时间越快,不量化层越多精度越高,最后就是在这两者进行平衡
回复

使用道具 举报

double_s

注册会员

积分
98
8#
 楼主| 发表于 2020-4-27 18:38:53 | 只看该作者
jefferyzhang 发表于 2020-4-27 18:27
可以,也只能通过混合量化解决。
思路就是先不量化,看下结果是不是可以接收,如果可以的话就开始混合量 ...

好的,我尝试下,谢谢您
回复

使用道具 举报

double_s

注册会员

积分
98
9#
 楼主| 发表于 2020-4-28 11:29:45 | 只看该作者
jefferyzhang 发表于 2020-4-27 18:27
可以,也只能通过混合量化解决。
思路就是先不量化,看下结果是不是可以接收,如果可以的话就开始混合量 ...

还想请问下,进行混合量化后的精度是不是肯定不会比不进行量化的精度高了?
回复

使用道具 举报

jefferyzhang

版主

积分
13580
10#
发表于 2020-4-28 12:10:42 | 只看该作者
double_s 发表于 2020-4-28 11:29
还想请问下,进行混合量化后的精度是不是肯定不会比不进行量化的精度高了? ...

不一定。建议你了解下什么是量化,tf还提供训练量化,精度是可以跟你出来的模型一样的。
我们目前客户用到的模型通过混合量化很多都可以达到原模型精度,这个需要时间去调试
回复

使用道具 举报

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

本版积分规则

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


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