- from rknn.api import RKNN
- INPUT_SIZE = 160
- if __name__ == '__main__':
- # Create RKNN object
- rknn = RKNN(verbose=True, verbose_file='./test1.log')
- # Config for Model Input PreProcess
- rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2')
- print('config done')
- #load tensorflow model
- print('--> Loading model')
- rknn.load_tensorflow(tf_pb='./20180402-114759.pb',
- inputs=['input','phase_train'],
- outputs=['InceptionResnetV1/Bottleneck/BatchNorm/Reshape_1'],
- input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3], [1]])
- print('done')
- # Build Model
- print('--> Building model')
- rknn.build(do_quantization=False)
- print('done')
- # Export RKNN Model
- rknn.export_rknn('./facenet_Reshape_1.rknn')
- rknn.release()
复制代码
- #load tensorflow model
- print('--> Loading model')
- rknn.load_tensorflow(tf_pb='./20180402-114759.pb',
- inputs=['input'],
- outputs=['InceptionResnetV1/Bottleneck/BatchNorm/Reshape_1'],
- input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
- print('done')
复制代码
没报错,生成了 facenet_Reshape_1.rknn (后面用来做正向推理)- #load tensorflow model
- print('--> Loading model')
- rknn.load_tensorflow(tf_pb='./20180402-114759.pb',
- inputs=['input'],
- outputs=['embeddings'],
- input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
- print('done')
复制代码
出错信息:- from rknn.api import RKNN
- import cv2
- import numpy as np
- INPUT_SIZE = 160
-
- if __name__ == '__main__':
- # Create RKNN object
- rknn = RKNN(verbose=True, verbose_file='./test2.log')
- #load rknn model
- print('--> Loading rknn model')
- rknn.load_rknn('./facenet_Reshape_1.rknn')
- print('done')
- #set inputs
- img1 = np.load('image_1.npy')
- print('img1.type:', type(img1)) #numpy.ndarray
- print('img1.shape:', img1.shape) #(1,160,160,3)
-
- # init runtime environment
- print('--> Init runtime environment')
- ret = rknn.init_runtime()
- if ret != 0:
- print('Init runtime environment failed')
- exit(ret)
- print('done')
- # Inference
- print('--> Running model')
- outputs1 = rknn.inference(inputs=[img1])
- array1 = np.array(outputs1)
- print('output_shape:', array1.shape)
- np.save('./u_Reshape_1.npy', array1)
- print('done')
-
- rknn.release()
复制代码
输出数据保存在 u_Reshape_1.npy 文件中。- def main(args):
- #images = load_and_align_data(args.image_files, args.image_size, args.margin, args.gpu_memory_fraction)
- images = np.load('./results/image_1.npy')
- print('images_shape:', images.shape) #(1,160,160,3)
- with tf.Graph().as_default():
- with tf.Session() as sess:
-
- # Load the model
- facenet.load_model(args.model)
-
- #test
- #summary_writer = tf.summary.FileWriter("F:/pyn/spyder_projects/log", sess.graph)
- #test
-
- # Get input and output tensors
- images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0")
- phase_train_placeholder = tf.get_default_graph().get_tensor_by_name("phase_train:0")
- #middle layer
- node_Reshape_1 = tf.get_default_graph().get_tensor_by_name("InceptionResnetV1/Bottleneck/BatchNorm/Reshape_1:0")
-
- # Run forward pass to calculate embeddings
- feed_dict = { images_placeholder: images, phase_train_placeholder:False }
- Reshape_1 = sess.run(node_Reshape_1, feed_dict=feed_dict)
-
- print('Reshape_1 shape:', Reshape_1.shape)
- np.save('./results/Reshape_1.npy', Reshape_1)
复制代码
输出信息(截取):- import numpy as np
- pc_data = np.load('./results/Reshape_1.npy')
- u_data = np.load('./results/u_Reshape_1.npy')
- print('pc_data.shape:', pc_data.shape)
- print('u_data.shape:', u_data.shape)
- pc_data = np.squeeze(pc_data)
- pc_data_flat = pc_data.flatten()
- u_data = np.squeeze(u_data)
- print('pc_data_flat.shape:', pc_data_flat.shape)
- print('u_data.shape:', u_data.shape)
- print(pc_data_flat)
- print(u_data)
复制代码
- #load tensorflow model
- print('--> Loading model')
- rknn.load_tensorflow(tf_pb='./20180402-114759.pb',
- inputs=['input'],
- outputs=['InceptionResnetV1/Conv2d_1a_3x3/Relu'],
- input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
- print('done')
复制代码
成功build, 模型保存在 facenet_Conv2d_1a_3x3_Relu.rknn- import numpy as np
- pc_data = np.load('./results/Conv2d_1a_3x3_Relu.npy')
- u_data = np.load('./results/u_Conv2d_1a_3x3_Relu.npy')
- print('pc_data.shape:', pc_data.shape)
- print('u_data.shape:', u_data.shape)
- pc_data = np.squeeze(pc_data)
- u_data = np.squeeze(u_data)
- u_data_reshape = np.reshape(u_data, (32,79,79))
- print('pc_data.shape:', pc_data.shape)
- print('u_data_reshape.shape:', u_data_reshape.shape)
- print(pc_data[:,:,0])
- print(u_data_reshape[0,:,:])
复制代码
输出:- def prewhiten(x):
- mean = np.mean(x)
- std = np.std(x)
- std_adj = np.maximum(std, 1.0/np.sqrt(x.size))
- y = np.multiply(np.subtract(x, mean), 1/std_adj)
- return y
复制代码
rknn模型build的时候,并没有做任何处理( rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2') )jefferyzhang 发表于 2019-8-7 10:01
从代码里看,
1. 你的traning node没有关闭,推理时候引入training node是有可能造成结果随机的,特别是带d ...
jefferyzhang 发表于 2019-8-7 10:01
从代码里看,
1. 你的traning node没有关闭,推理时候引入training node是有可能造成结果随机的,特别是带d ...
jefferyzhang 发表于 2019-8-8 13:56
pb用tensorflow载入跑过么?
jefferyzhang 发表于 2019-8-9 12:51
哦,刚看出来,你这里多输入了,目前rknn只支持单输入多输出。
所以你模型固化时候phase_train要固化成固定 ...
puyanan 发表于 2019-8-9 16:35
谢谢版主回复,我去试一下重新生成固化模型。
xiaqing10 发表于 2019-8-21 09:35
分享下可以转faceNet模型的Pb文件. 输入输出如下,pb 链接为 可以转rknn的faceNet的pb模型
提取码: y3uc
in ...
xiaqing10 发表于 2019-8-21 09:35
分享下可以转faceNet模型的Pb文件. 输入输出如下,pb 链接为 可以转rknn的faceNet的pb模型
提取码: y3uc
in ...
puyanan 发表于 2019-9-19 11:54
您好。您的模型确实是单输入的 inputs=['input_1'],我用Netron打开pb文件,很复杂,没有代码参考看不出网 ...
xiaqing10 发表于 2019-9-19 18:13
我是把Pb直接转为了keras. 更改了输入,将train_phase=False .然后再转为Pb模型即可 ...
jefferyzhang 发表于 2019-8-9 12:51
哦,刚看出来,你这里多输入了,目前rknn只支持单输入多输出。
所以你模型固化时候phase_train要固化成固定 ...
jiajia1990 发表于 2019-8-20 16:43
楼主你好,你的问题解决了吗?怎么解决的?
puyanan 发表于 2019-9-21 14:58
版主,您好。我发现phase_train的类型是placeholder,无法设置为固定值再固化,请问您是怎么做的呢?现在 ...
jefferyzhang 发表于 2019-9-22 10:08
1.2版本rknn-toolkit允许多输入了,所以你可以不用固化placeholder
jefferyzhang 发表于 2019-8-9 12:51
哦,刚看出来,你这里多输入了,目前rknn只支持单输入多输出。
所以你模型固化时候phase_train要固化成固定 ...
puyanan 发表于 2019-8-9 16:35
谢谢版主回复,我去试一下重新生成固化模型。
xiaqing10 发表于 2019-9-19 18:13
我是把Pb直接转为了keras. 更改了输入,将train_phase=False .然后再转为Pb模型即可 ...
liuwenhua 发表于 2019-11-18 10:38
你的问题解决?
xiaqing10 发表于 2019-8-21 09:35
分享下可以转faceNet模型的Pb文件. 输入输出如下,pb 链接为 可以转rknn的faceNet的pb模型
提取码: y3uc
in ...
欢迎光临 Toybrick (https://t.rock-chips.com/) | Powered by Discuz! X3.3 |