|
发表于 2019-6-28 14:08:05
|
显示全部楼层
因为这个版本已经很老了。应该是现在的rknn_toolkit版本升级了,他们官方给的案例还是旧的版本。
现在在tranfer改为:
from rknn.api import RKNN
INPUT_SIZE = 64
if __name__ == '__main__':
# 创建RKNN执行对象
rknn = RKNN()
# 配置模型输入,用于NPU对数据输入的预处理
# channel_mean_value='0 0 0 255',那么模型推理时,将会对RGB数据做如下转换
# (R - 0)/255, (G - 0)/255, (B - 0)/255。推理时,RKNN模型会自动做均值和归一化处理
# reorder_channel=’0 1 2’用于指定是否调整图像通道顺序,设置成0 1 2即按输入的图像通道顺序不做调整
# reorder_channel=’2 1 0’表示交换0和2通道,如果输入是RGB,将会被调整为BGR。如果是BGR将会被调整为RGB
# 图像通道顺序不做调整
rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2')
# 加载TensorFlow模型
# tf_pb='digital_gesture.pb'指定待转换的TensorFlow模型
# inputs指定模型中的输入节点
# outputs指定模型中输出节点
# input_size_list指定模型输入的大小
print('--> Loading model')
rknn.load_tensorflow(tf_pb='./digital_gesture.pb',
inputs=['input_x'],
outputs=['probability'],
input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
print('done')
# 创建解析pb模型
# do_quantization=False指定不进行量化
# 量化会减小模型的体积和提升运算速度,但是会有精度的丢失
print('--> Building model')
rknn.build(do_quantization=False)
print('done')
# 导出保存rknn模型文件
rknn.export_rknn('./digital_gesture.rknn')
# Release RKNN Context
rknn.release()
predict里变为:
import numpy as np
from PIL import Image
from rknn.api import RKNN
# 解析模型的输出,获得概率最大的手势和对应的概率
def get_predict(probability):
print(probability)
data = probability[0][0]
data = data.tolist()
max_prob = max(data)
return data.index(max_prob), max_prob
def load_model():
# 创建RKNN对象
rknn = RKNN()
# 载入RKNN模型
print('-->loading model')
rknn.load_rknn('./digital_gesture.rknn')
print('loading model done')
# 初始化RKNN运行环境
print('--> Init runtime environment')
# ret = rknn.init_runtime(target='rk3399pro')
ret = rknn.init_runtime()
if ret != 0:
print('Init runtime environment failed')
exit(ret)
print('done')
return rknn
def predict(rknn):
im = Image.open("./3.jpg") # 加载图片
im = im.resize((64, 64), Image.ANTIALIAS) # 图像缩放到64x64
mat = np.asarray(im.convert('RGB')) # 转换成RGB格式
outputs = rknn.inference(inputs=[mat]) # 运行推理,得到推理结果
print('&&&&&&&&&&&&&&')
print(outputs)
print('&&&========&&&&')
# print(pred_demo)
print('$$$$&&&&&&&&&&$$$$$$$$$')
pred, prob = get_predict(outputs) # 将推理结果转化为可视信息
print(prob)
print(pred)
if __name__ == "__main__":
rknn = load_model()
predict(rknn)
rknn.release()
# import numpy as np
# from PIL import Image
# from rknn.api import RKNN
#
# def get_predict(probability):
# data = probability[0][0]
# data = data.tolist()
# max_prob = max(data)
# return data.index(max_prob), max_prob;
#
# def load_model():
# # Create RKNN object
# rknn = RKNN()
#
# print('-->loading model')
# rknn.load_rknn('./digital_gesture.rknn')
# print('loading model done')
#
# # init runtime environment
# print('--> Init runtime environment')
# ret = rknn.init_runtime(host='rk3399pro')
# if ret != 0:
# print('Init runtime environment failed')
# exit(ret)
# print('done')
#
# return rknn
#
# def predict(rknn):
# im = Image.open("../picture/6_7.jpg")
# im = im.resize((64, 64),Image.ANTIALIAS)
# mat = np.asarray(im.convert('RGB'))
# outputs = rknn.inference(inputs=[mat])
# pred, prob = get_predict(outputs)
#
# print(prob)
# print(pred)
#
# if __name__=="__main__":
# # Create RKNN object
# rknn = load_model()
#
# predict(rknn)
|
|