4111|2

10

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

#AI挑战营第二站#onxx模型转换为rknn模型 [复制链接]

1.环境搭建:

    安装 rknn-toolkit与其对应的依赖库

链接已隐藏,如需查看请登录或者注册

    根据  doc目录下 01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.0.0beta0_CN.pdf 安装对应的依赖库和rknn-toolkit工具

 

 

2. 模型转换

使用下载好的rknn_model_zoo ,\examples\yolov5\python\convert.py python文件转换模型

执行python3 convert.py  ../model/test1.onnx rv1106 i8 ../model/test.rknn

 

遇到错误

 

按照提示将第一站的脚本进行优化,重新生成onxx模型

  改为  

后重新生成onxx模型,再次执行python3 convert.py  ../model/test1.onnx rv1106 i8 ../model/test.rknn即可转换成功。

 

源码:

import sys

from rknn.api import RKNN

DATASET_PATH = '../../../datasets/COCO/coco_subset_20.txt'
DEFAULT_RKNN_PATH = '../model/test.rknn'
DEFAULT_QUANT = True

def parse_arg():
    if len(sys.argv) < 3:
        print("Usage: python3 {} onnx_model_path [platform] [dtype(optional)] [output_rknn_path(optional)]".format(sys.argv[0]))
        print("       platform choose from [rk3562,rk3566,rk3568,rk3588,rk1808,rv1109,rv1126]")
        print("       dtype choose from [i8, fp] for [rk3562,rk3566,rk3568,rk3588]")
        print("       dtype choose from [u8, fp] for [rk1808,rv1109,rv1126]")
        exit(1)

    model_path = sys.argv[1]
    platform = sys.argv[2]

    do_quant = DEFAULT_QUANT
    if len(sys.argv) > 3:
        model_type = sys.argv[3]
        if model_type not in ['i8', 'u8', 'fp']:
            print("ERROR: Invalid model type: {}".format(model_type))
            exit(1)
        elif model_type in ['i8', 'u8']:
            do_quant = True
        else:
            do_quant = False

    if len(sys.argv) > 4:
        output_path = sys.argv[4]
    else:
        output_path = DEFAULT_RKNN_PATH

    return model_path, platform, do_quant, output_path

if __name__ == '__main__':
    model_path, platform, do_quant, output_path = parse_arg()

    # Create RKNN object
    rknn = RKNN(verbose=False)

    # Pre-process config
    print('--> Config model')
    rknn.config(mean_values=[[0, 0, 0]], std_values=[
                    [255, 255, 255]], target_platform=platform)
    print('done')

    # Load model
    print('--> Loading model')
    ret = rknn.load_onnx(model=model_path)
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')

    # Build model
    print('--> Building model')
    ret = rknn.build(do_quantization=do_quant, dataset=DATASET_PATH)
    if ret != 0:
        print('Build model failed!')
        exit(ret)
    print('done')

    # Export rknn model
    print('--> Export rknn model')
    ret = rknn.export_rknn(output_path)
    if ret != 0:
        print('Export rknn model failed!')
        exit(ret)
    print('done')

    # Release
    rknn.release()

附件:

 

 

 

20240514131458170.pdf

5.06 MB, 下载次数: 1

售价: 4 分芯积分  [记录]

test.rknn

433.91 KB, 下载次数: 1

最新回复

立马查了一下,发现这缩写不写全称就是害人。。。。 原来RKNN完全不是最近邻 竟然是:Recurrent Kernel Neural Network, 一种新的神经网络。。。。哎   详情 回复 发表于 2024-5-15 12:17
点赞 关注

回复
举报

1130

帖子

1

TA的资源

五彩晶圆(初级)

沙发
 

KNN是最邻近邻居,也就是找K个最近邻的Neighbors,然后这些最近的邻居,加入到人数最多的一类中去(傍大腿)

那RKNN中的R是啥意思呀?

点评

立马查了一下,发现这缩写不写全称就是害人。。。。 原来RKNN完全不是最近邻 竟然是:Recurrent Kernel Neural Network, 一种新的神经网络。。。。哎  详情 回复 发表于 2024-5-15 12:17
 
 

回复

1130

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
hellokitty_bean 发表于 2024-5-15 12:14 KNN是最邻近邻居,也就是找K个最近邻的Neighbors,然后这些最近的邻居,加入到人数最多的一类中去(傍大腿 ...

立马查了一下,发现这缩写不写全称就是害人。。。。

原来RKNN完全不是最近邻

竟然是:Recurrent Kernel Neural Network,

一种新的神经网络。。。。哎

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表