- def common_transfer(pb_name,export_name):
- ret = 0
- #看具体log 传入verbose=True
- rknn = RKNN()
- #灰度图无需此步操作
- # rknn.config(channel_mean_value='', reorder_channel='')
- print('--> Loading model')
- ret = rknn.load_tensorflow(
- tf_pb='./mnist_frozen_graph.pb',
- inputs=['x'],
- outputs=['y_conv'],
- input_size_list=[[28,28,1]])
- if ret != 0:
- print('load_tensorflow error')
- rknn.release()
- return ret
- print('done')
- print('--> Building model')
- rknn.build(rknn_batch_size=3,do_quantization=False)
- print('done')
- # 导出保存rknn模型文件
- rknn.export_rknn('./mnist.rknn')
- # Release RKNN Context
- rknn.release()
- return ret
复制代码
然后进行推理,推理的结果会把三张图片的结果合并在一个list中,需要我们自己将其分割开:- def predict(rknn,length):
- acc_count = 0
- mat = []
- for i in range(length):
- im = mnist.test.images[i]
- # im = Image.open("../MNIST_data/mnist_test/test_%d.jpg"%i) # 加载图片
- # im = im.resize((28,28),Image.ANTIALIAS)
- # im = np.asarray(im)
- im = im.reshape(28,28,1)
- mat.append(im)
- if len(mat) == 3:
- mat = np.array(mat).reshape(3,28,28,1)
- outputs = rknn.inference(inputs=[mat])
- outputs1 = outputs[0][0][0:10]
- outputs2 = outputs[0][0][10:20]
- outputs3 = outputs[0][0][20:]
- outputs = [[[outputs1]],[[outputs2]],[[outputs3]]]
- j = 2
- for output in outputs:
- pred, prob = get_predict(output)
- if i == 2:
- print(output)
- print(prob)
- print(pred)
- if list(mnist.test.labels[i-j]).index(1) == pred:
- acc_count += 1
- j -= 1
- mat = []
- else:
- pass
- if i ==100 or i ==500 or i ==1000 or i ==10000:
- result = float(acc_count)/i
- print('result%d:'%i,result)
- result = float(acc_count)/length
- print('result:',result)
复制代码
最终其结果和单张推理的结果是相同的.gwjjj35 发表于 2019-10-15 10:38
您好 我按照您的代码风格重新写了一下,输出的结果还是对不上,而且有类似“0. ”这样奇怪的数 ...
peng 发表于 2019-10-15 11:13
你的输出是softmax分类吗,我看你的output的类别有点多
gwjjj35 发表于 2019-10-15 11:22
不是的,我的输出也是640*480的图像
peng 发表于 2019-10-15 14:16
我的输出是十个类别,和你的例子应该是不一样的,可能需要调整下输入输出节点 ...
gwjjj35 发表于 2019-10-16 08:55
有没有官方技术人员解答一下呀!着急!
gwjjj35 发表于 2019-10-15 10:38
您好 我按照您的代码风格重新写了一下,输出的结果还是对不上,而且有类似“0. ”这样奇怪的数 ...
- output0 = outputs[0]
- output1 = outputs[1]
- optput2 = outputs[2]
- print(output0)
复制代码
jefferyzhang 发表于 2019-10-16 11:59
输出图片的要注意下是NCHW结构还是NHWC结构。
调换下试试结果。
不是很懂的情况下,可以用c接口枚举出输 ...
raul 发表于 2019-10-18 09:30
这样写试下。打印output0看跟单张是不是类似的?
呱唧 发表于 2020-3-16 16:29
请问一下,这里将rknn_batch_size设为3,一次跑3张图片,比rknn_batch_size设为1,顺序执行3张图片要快吗? ...
欢迎光临 Toybrick (https://t.rock-chips.com/) | Powered by Discuz! X3.3 |