Toybrick

[求助] 使用RKNN_API运行mtcnn模型的pnet结果不正确

nevin007

注册会员

积分
127
楼主
发表于 2019-3-1 15:56:44    查看: 40276|回复: 25 | [复制链接]    打印 | 只看该作者
问题:使用RKNN_API运行mtcnn模型的pnet结果不正确

1、使用python脚本将mtcnn中pnet的caffe模型转换为rknn模型
a. 模型转换脚本的配置:rknn.config(channel_mean_value='127.5 127.5 127.5 128', reorder_channel='0 1 2')
b. prototxt中,input的shape: {dim:1, dim:3, dim:72, dim: 96}
转换后得到det1.rknn

2、在开发板上运行编译好的测试例程
a. 输入图片w=480, h=640
b. 将图片转置为w=640, h=480,并转换为RGB格式
c. resize到wxh=96x72大小作为inputs[0]

模型的输入输出信息如下:
resized h:72, resized w:96, scale:0.1500
model_len:17352
input_output_num:
io_num.n_input:1
io_num.n_output:2
outputs_attr:
outputs_attr[0].dims:43,31,4,1
outputs_attr[0].n_elems:5332
outputs_attr[0].type:3
outputs_attr[0].fmt:0

outputs_attr[1].dims:43,31,2,1
outputs_attr[1].n_elems:2666
outputs_attr[1].type:1
outputs_attr[1].fmt:0

input_attr:
inputs_attr[0].index:0
inputs_attr[0].dims:96,72,3,1
inputs_attr[0].n_elems:20736
inputs_attr[0].type:3
inputs_attr[0].fmt:0

inputs[0].index:0
inputs[0].pass_through:0
inputs[0].type:3
inputs[0].fmt:0

pnet_boxes size :5
得到的proposals比较少,而且都偏离人脸,请教是哪里出了问题?非常感谢!



回复

使用道具 举报

jefferyzhang

版主

积分
13578
沙发
发表于 2019-3-1 16:14:18 | 只看该作者
只有pnet?
在pc上运行结果呢?
大小尺寸缩放比率有作用在bounding box上么?
回复

使用道具 举报

nevin007

注册会员

积分
127
板凳
 楼主| 发表于 2019-3-1 16:20:57 | 只看该作者
jefferyzhang 发表于 2019-3-1 16:14
只有pnet?
在pc上运行结果呢?
大小尺寸缩放比率有作用在bounding box上么?

是的,我正在做mtcnn的移植,先从pnet调起...我发现如果在模型转换的时候do_quantization设置为False,代码中输入改为:
inputs[0].type = RKNN_TENSOR_FLOAT32;       
inputs[0].fmt = RKNN_TENSOR_NHWC;  
得到的输出结果与PC上原有代码跑出的结果基本一致。但量化以后目前还得不到正确结果。
回复

使用道具 举报

jefferyzhang

版主

积分
13578
地板
发表于 2019-3-1 17:11:44 | 只看该作者
nevin007 发表于 2019-3-1 16:20
是的,我正在做mtcnn的移植,先从pnet调起...我发现如果在模型转换的时候do_quantization设置为False,代 ...

我觉得是因为量化给的样本不够多,你可以试着多弄几张你当前摄像头拍摄出来的图片作为量化使用。
然后再试试精度。
回复

使用道具 举报

nevin007

注册会员

积分
127
5#
 楼主| 发表于 2019-3-2 15:13:27 | 只看该作者
本帖最后由 nevin007 于 2019-3-2 15:51 编辑
jefferyzhang 发表于 2019-3-1 17:11
我觉得是因为量化给的样本不够多,你可以试着多弄几张你当前摄像头拍摄出来的图片作为量化使用。
然后再 ...

问题已解决,非常感谢!
还有个小问题希望确认一下,模型转换的时候如果设置do_quantization=False,得到的rknn模型是fp16吗?是不是rknn不支持fp32?
回复

使用道具 举报

jefferyzhang

版主

积分
13578
6#
发表于 2019-3-3 19:35:49 | 只看该作者
nevin007 发表于 2019-3-2 15:13
问题已解决,非常感谢!
还有个小问题希望确认一下,模型转换的时候如果设置do_quantization=False,得到 ...

我仔细看了下文档,好像是的。。。
回复

使用道具 举报

jefferyzhang

版主

积分
13578
7#
发表于 2019-3-4 09:16:50 | 只看该作者
nevin007 发表于 2019-3-2 15:13
问题已解决,非常感谢!
还有个小问题希望确认一下,模型转换的时候如果设置do_quantization=False,得到 ...

我问过相关同事了,fp32是支持的。
回复

使用道具 举报

nevin007

注册会员

积分
127
8#
 楼主| 发表于 2019-3-4 09:34:37 | 只看该作者
jefferyzhang 发表于 2019-3-4 09:16
我问过相关同事了,fp32是支持的。

上面说到的rknn模型格式应该只有fp16和uint8,那是怎么支持fp32的啊
回复

使用道具 举报

771488533

注册会员

积分
174
9#
发表于 2019-3-4 09:39:41 | 只看该作者
nevin007 发表于 2019-3-4 09:34
上面说到的rknn模型格式应该只有fp16和uint8,那是怎么支持fp32的啊

能否分享一下移植好的mtcnn代码?@nevin007
回复

使用道具 举报

zhangzj

超级版主

积分
1117
10#
发表于 2019-3-4 16:31:30 | 只看该作者
nevin007 发表于 2019-3-4 09:34
上面说到的rknn模型格式应该只有fp16和uint8,那是怎么支持fp32的啊

有些层精度要求比较高的时候会使用fp32
回复

使用道具 举报

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

本版积分规则

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


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