Toybrick

caffe 模型转换为rknn后 识别一直错

jarvis

新手上路

积分
11
发表于 2019-5-16 16:09:53    查看: 695|回复: 12 | [复制链接]    打印 | 显示全部楼层
根据demo的代码转换caffe模型  转换成功了 可是预测结果一直不对
求大佬看下问题
# Create RKNN object
rknn = RKNN()

# pre-process config
print('--> config model')
rknn.config(channel_mean_value='84.29 84.8 83.61 1', reorder_channel='2 1 0')
print('done')

# Load tensorflow model
print('--> Loading model')
ret = rknn.load_caffe(model='./model.prototxt',
                      proto='caffe',
                      blobs='./model.caffemodel')
if ret != 0:
    print('Load mobilenet_v2 failed! Ret = {}'.format(ret))
    exit(ret)
print('done')

# Build model
print('--> Building model')
ret = rknn.build(do_quantization=
False)
if ret != 0:
   
print('Build mobilenet_v2 failed!')
    exit(ret)
print('done')

# Export rknn model
print('--> Export RKNN model')
ret = rknn.export_rknn(
'./model.rknn')
if ret != 0:
   
print('Export mobilenet_v2.rknn failed!')
    exit(ret)
print('done')

# Set inputs
img = cv2.imread('./000.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

print('--> Init runtime environment')
ret = rknn.init_runtime()
if ret != 0:
   
print('Init runtime environment failed')
    exit(ret)
print('done')

# Inference
print('--> Running model')
outputs = rknn.inference(
inputs=[img])
show_outputs(outputs)
print('done')

回复

使用道具 举报

jefferyzhang

超级版主

积分
1233
发表于 2019-5-17 12:03:05 | 显示全部楼层
可以的话建议你一层一层输入输出转换调试,看看具体是哪一层造成的输出差异
回复

使用道具 举报

yoline

新手上路

积分
48
发表于 2019-6-12 09:08:15 | 显示全部楼层
我也是这样 caffe训练好的模型 转过来和caffe上的结果差异很大 LZ找到问题所在了么
回复

使用道具 举报

yoline

新手上路

积分
48
发表于 2019-6-12 09:49:08 | 显示全部楼层
把量化关了 结果基本一致了
回复

使用道具 举报

uuii9988

注册会员

积分
84
发表于 2019-7-26 21:57:39 | 显示全部楼层
jefferyzhang 发表于 2019-5-17 12:03
可以的话建议你一层一层输入输出转换调试,看看具体是哪一层造成的输出差异 ...

请问怎么一层层的输出,我的模型和转换完rknn差距也很大
回复

使用道具 举报

uuii9988

注册会员

积分
84
发表于 2019-7-26 22:01:45 | 显示全部楼层
jefferyzhang 发表于 2019-5-17 12:03
可以的话建议你一层一层输入输出转换调试,看看具体是哪一层造成的输出差异 ...

量化已经关掉了
回复

使用道具 举报

puyanan

注册会员

积分
125
发表于 2019-8-5 09:47:34 | 显示全部楼层
jefferyzhang 发表于 2019-5-17 12:03
可以的话建议你一层一层输入输出转换调试,看看具体是哪一层造成的输出差异 ...

您好,.pb模型转换成rknn模型后,只能查看输入层和输出层数据?  您说的一层一层输入输出转换调试,是不是要选择中间的两个层分别作为输入输出层重新转换成rknn模型,再查看这两层的数据?
回复

使用道具 举报

puyanan

注册会员

积分
125
发表于 2019-8-5 09:49:39 | 显示全部楼层
uuii9988 发表于 2019-7-26 21:57
请问怎么一层层的输出,我的模型和转换完rknn差距也很大

是否要将中间的两个层分别作为输入输出层,重新转换成rknn模型,然后再查看这两层的数据?我还没有试,你试过了吗?
回复

使用道具 举报

jefferyzhang

超级版主

积分
1233
发表于 2019-8-5 11:58:09 | 显示全部楼层
puyanan 发表于 2019-8-5 09:49
是否要将中间的两个层分别作为输入输出层,重新转换成rknn模型,然后再查看这两层的数据?我还没有试,你 ...

是的,可以的,但是 建议你 卷积+激活+池化 不要拆开
回复

使用道具 举报

puyanan

注册会员

积分
125
发表于 2019-8-5 17:58:36 | 显示全部楼层
jefferyzhang 发表于 2019-8-5 11:58
是的,可以的,但是 建议你 卷积+激活+池化 不要拆开

您好。在RK虚拟机里面,将pb模型转换成rknn模型,不量化(do_quantization=False)。那么模型转换前后的中间层数据一样吗?我在PC端直接用pb模型,在RK虚拟机里面用转换后的rknn模型,发现经过第一个conv+relu后(该层没有池化),数据完全不一样,数量级都不同。请问,理论上应该一样的吗?
回复

使用道具 举报

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

本版积分规则

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


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