如何将keras模型转成rknn

  • weiwowuqing wrote: 2024-03-27 2:04 我是刚入门的新手,现在遇到了一个问题。我在网上找了一个训练英语手写字体的程序,然后得到了一个模型,现在遇到的问题是如何将这个模型转成可以在板子上运行的rknn模型。
    训练的代码:https://www.kaggle.com/code/m3rcury02/handwriting-recog
    模型后缀: h5格式
    这是模型的参数
    Model: "sequential"
    _________________________________________________________________
    Layer (type) Output Shape Param #
    =================================================================
    conv2d (Conv2D) (None, 26, 26, 32) 320

    max_pooling2d (MaxPooling2D (None, 13, 13, 32) 0
    )

    conv2d_1 (Conv2D) (None, 13, 13, 64) 18496

    max_pooling2d_1 (MaxPooling (None, 6, 6, 64) 0
    2D)

    conv2d_2 (Conv2D) (None, 4, 4, 128) 73856

    max_pooling2d_2 (MaxPooling (None, 2, 2, 128) 0
    2D)

    flatten (Flatten) (None, 512) 0

    dense (Dense) (None, 64) 32832

    dense_1 (Dense) (None, 128) 8320

    dense_2 (Dense) (None, 26) 3354

    =================================================================
    Total params: 137,178
    Trainable params: 137,178
    Non-trainable params: 0 请问我该怎么做
    您好,想要将 h5 格式的模型转换为 rknn 的格式,根据 rknn 的官方文档 02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V1.6.0_CN.pdf 不支持直接转换,但是可以使用先转换为 ONNX 模型再转换为 rknn 模型的方式来实现。

    Code: Select all

    import keras
    import keras2onnx
    import onnx
    from keras.models import load_model
    model = load_model('xxxx.h5')   #您的 h5 权重文件
    onnx_model = keras2onnx.convert_keras(model, model.name)
    temp_model_file = 'xxxx.onnx'   #输出
    onnx.save_model(onnx_model, temp_model_file)
    
    注意: 这只是一个简单的示例,需要根据实际情况进行修改,详情请参考 https://pypi.org/project/keras2onnx/
    装换为 rknn 模型的方式可以参考文档或是wiki中的RKNN实例使用指南https://wiki.luckfox.com/zh/Luckfox-Pico/RKNN-example ,希望这对您有所帮助
    Attachments
    Downloaded 222 times