Toybrick

移植openpose tensorflow 版本遇到的问题

kitedream

中级会员

积分
284
楼主
发表于 2019-3-21 14:43:21    查看: 7658|回复: 1 | [复制链接]    打印 | 只看该作者
本帖最后由 kitedream 于 2019-3-21 15:33 编辑

移植所参考的模型主要源自于  https://github.com/alesolano/openpose_explained   以及  https://github.com/ildoonet/tf-pose-estimation本人使用的是 mobile thin 版本,模型训练所使用的是432×368尺寸训练,输入为opencv的image图片。
模型编译
  1. rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2', batch_size=1)
复制代码
  1. rknn.load_tensorflow(tf_pb='./models/mobilenet_thin/graph_opt.pb', inputs=['image'], outputs=['Openpose/concat_stage7'], input_size_list=[[368, 432, 3]])
复制代码
  1. rknn.build(do_quantization=True, dataset='./data.txt',pre_compile=False)
复制代码
此处 quantization 的数据是我将一张图片resize到相应输入尺寸得到的。
./data/person_432_368.jpg

编译输出为
D [rknn_init:749] Input Tensors:
D [printRKNNTensor:662] index=0 name= n_dims=4 dims=[1 3 368 432] n_elems=476928 size=476928 fmt=NCHW type=UINT8 qnt_type=AFFINE fl=0 zp=0 scale=0.003922
D [rknn_init:762] Output Tensors:
D [printRKNNTensor:662] index=0 name= n_dims=4 dims=[1 57 46 54] n_elems=141588 size=141588 fmt=NCHW type=UINT8 qnt_type=AFFINE fl=6 zp=6 scale=0.004017
done

模型调用

  1. rknn = RKNN(verbose=False)
  2. rknn.load_rknn('./openpose_432_368.rknn')
  3. rknn.init_runtime()

  4. w, h = 432, 368
  5. frame = cv2.imread("person.jpg")
  6. image = cv2.resize(frame, (w, h), interpolation=cv2.INTER_AREA)
  7. frame_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  8. [output] = rknn.inference(inputs=[frame_rgb])

  9. output=output.reshape(1, 57, 46, 54)
  10. output = np.transpose(output, (0, 2, 3, 1))
复制代码


但是,将此output结果进过一定的后处理后,结果完全错乱。但原pb模型输出的output结果经过相同的后处理,结果正常。

回复

使用道具 举报

zhangzj

超级版主

积分
1117
沙发
发表于 2019-4-12 09:39:24 | 只看该作者
rknn的output数据和原pb模型output数据有差很多吗?
回复

使用道具 举报

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

本版积分规则

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


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