Toybrick

手势识别案例“Init runtime environment failed”是少什么文件?

TryYourBest

注册会员

积分
77
发表于 2019-6-28 10:56:44    查看: 9103|回复: 3 | [复制链接]    打印 | 显示全部楼层
在跑手势识别案例过程中,执行“ python3 rknn_transfer.py ”时提示下述错误:
--> Init runtime environment
E Model is not loaded yet, this interface should be called after build or load_rknn!
Init runtime environment failed
请问缺少的文件如何获取?新手上路,请指教

回复

使用道具 举报

yxtest

新手上路

积分
36
发表于 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)
回复

使用道具 举报

TryYourBest

注册会员

积分
77
 楼主| 发表于 2019-6-28 14:35:09 | 显示全部楼层
yxtest 发表于 2019-6-28 14:08
因为这个版本已经很老了。应该是现在的rknn_toolkit版本升级了,他们官方给的案例还是旧的版本。
现在在tra ...

参考您的方法,案例调通了,厉害了,非常感谢。
回复

使用道具 举报

瓜瓜瓜

新手上路

积分
18
发表于 2019-7-12 17:25:43 | 显示全部楼层
请问跑手势识别的demo的时候,预测标签一直是0,然后概率一直是-65504.0,请问是怎么回事?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表