|
本帖最后由 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图片。
模型编译
- rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2', batch_size=1)
- rknn.load_tensorflow(tf_pb='./models/mobilenet_thin/graph_opt.pb', inputs=['image'], outputs=['Openpose/concat_stage7'], input_size_list=[[368, 432, 3]])
- 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
模型调用
- rknn = RKNN(verbose=False)
- rknn.load_rknn('./openpose_432_368.rknn')
- rknn.init_runtime()
- w, h = 432, 368
- frame = cv2.imread("person.jpg")
- image = cv2.resize(frame, (w, h), interpolation=cv2.INTER_AREA)
- frame_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
- [output] = rknn.inference(inputs=[frame_rgb])
- output=output.reshape(1, 57, 46, 54)
- output = np.transpose(output, (0, 2, 3, 1))
但是,将此output结果进过一定的后处理后,结果完全错乱。但原pb模型输出的output结果经过相同的后处理,结果正常。
|
|