|  | 
| 因为这个版本已经很老了。应该是现在的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)
 
 | 
 |