完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.前言
官方论坛说明 V1.6.0 主要说明:
V1.4.0 主要说明:
支持tensorflow1(keras)、pytorch、mxnet开发; 模型可以在PC(linux)、开发板、mac上编译运行; 本次安装最新版本是rknn-toolkit-1.3.2 2.PC-ubuntu系统下tensorflow+keras虚拟环境搭建 如果你刚开始使用tensorflow或者keras,或者还没有安装建议参看一下我前面讲解安装相关的内容: 注意:建议安装python3.6.3的版本,太高和太低的版本都会和torch1.6或者rknn系列多多少少有一些不必要的麻烦 (建议使用linux版本,因为win无法正常安装rknn-api;mac只是支持转化模型、不支持模型推理过程) 3.在PC-ubuntu下搭建rknn模拟环境搭建 在安装完成tensorflow1.14之后,rknn模型需要安装相关支持的软件: (这个因为我是新安装的anaconda虚拟环境,所以缺少的比较多,此处都记录下来。如果你环境中已经有的话,自行选择缺少的安装包安装) (建议在自己的虚拟环境中安装) pip install ruamel.yaml==0.15.81 flatbuffers==1.10 flask==1.0.2 lmdb==0.93 requests==2.22.0 onnx==1.6.0 numpy==1.16.3 dill==0.2.8.2 networkx==1.11 Pillow==5.3.0 ply==3.11 h5py==2.8.0 psutil==5.6.2 protobuf==3.11.2 scipy==1.3.0 onnx-tf==1.2.1 最后才是安装RKNN pip install rknn-toolkit -i http://repo.rock-chips.com/pypi/simple --trusted-host repo.rock-chips.com 4.相关转化代码 (1) h5 -> tflite (2) tflite -> rknn 或者其他实例,在搭建好的PC-UBUNTU系统上,将自己的模型转化成相关.rknn文件。 下面以官方demo(mobilenet-v1)为例,说明tflite -> rknn模型转化。 import numpy as np import cv2 from rknn.api import RKNN def show_outputs(outputs): output = outputs[0][0] output_sorted = sorted(output, reverse=True) top5_str = 'mobilenet_v1n-----TOP 5-----n' for i in range(5): value = output_sorted index = np.where(output == value) for j in range(len(index)): if (i + j) >= 5: break if value > 0: topi = '{}: {}n'.format(index[j], value) else: topi = '-1: 0.0n' top5_str += topi print(top5_str) if __name__ == '__main__': # Create RKNN object rknn = RKNN() # pre-process config print('--> config model') rknn.config(channel_mean_value='127.5 127.5 127.5 127.5', reorder_channel='0 1 2') print('done') # Load tensorflow model print('--> Loading model') ret = rknn.load_tflite(model='./mobilenet_v1.tflite') if ret != 0: print('Load mobilenet_v1 failed!') exit(ret) print('done') # Build model print('--> Building model') ret = rknn.build(do_quantization=True, dataset='./dataset.txt', pre_compile=False) if ret != 0: print('Build mobilenet_v1 failed!') exit(ret) print('done') # Export rknn model print('--> Export RKNN model') ret = rknn.export_rknn('./mobilenet_v1.rknn') if ret != 0: print('Export mobilenet_v1.rknn failed!') exit(ret) print('done') # Set inputs img = cv2.imread('./dog_224x224.jpg') img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # init runtime environment print('--> Init runtime environment') ret = rknn.init_runtime() if ret != 0: print('Init runtime environment failed') exit(ret) print('done') # Inference print('--> Running model') outputs = rknn.inference(inputs=[img]) show_outputs(outputs) print('done') # perf print('--> Begin evaluate model performance') perf_results = rknn.eval_perf(inputs=[img]) print('done') rknn.release() 5.rknn板子上运行demo 在rknn3399 pro板子上初步运行(此处使用的是mobilenet v1)直接运行如下文件,即可: import numpy as np import cv2 from rknn.api import RKNN def show_outputs(outputs): output = outputs[0][0] output_sorted = sorted(output, reverse=True) top5_str = 'mobilenet_v1n-----TOP 5-----n' for i in range(5): value = output_sorted index = np.where(output == value) for j in range(len(index)): if (i + j) >= 5: break if value > 0: topi = '{}: {}n'.format(index[j], value) else: topi = '-1: 0.0n' top5_str += topi print(top5_str) if __name__ == '__main__': # Create RKNN object rknn = RKNN() # pre-process config print('--> config model') rknn.config(channel_mean_value='127.5 127.5 127.5 127.5', reorder_channel='0 1 2') print('done') # Load tensorflow model(加载自己在PC上生成的RKNN文件,直接使用) print('--> Loading model') ret = rknn.load_rknn(model='./mobilenet_v1.rknn') if ret != 0: print('Load mobilenet_v1 failed!') exit(ret) print('done') # Set inputs img = cv2.imread('./dog_224x224.jpg') img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # init runtime environment print('--> Init runtime environment') ret = rknn.init_runtime() if ret != 0: print('Init runtime environment failed') exit(ret) print('done') # Inference print('--> Running model') outputs = rknn.inference(inputs=[img]) show_outputs(outputs) print('done') # perf print('--> Begin evaluate model performance') perf_results = rknn.eval_perf(inputs=[img]) print('done') rknn.release() |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1861 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2317 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5129 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 07:29 , Processed in 0.730831 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号