Rknn-toolkit是NNEWN带有NPU的硬件平台用于模型迁移及量化功能的开发工具套件,用来制作RKnn模型,以便在NNEWN硬件平台的NPU加速神经网络模型的推理过程。此套件不用于AI训练,且目前只支持Linux平台。
本文是rknn-toolkit的简明安装教程,对应的版本是rknn-toolkit-1.3.0。
在NNEWN的基于瑞芯微芯片方案的硬件平台上部署神经网络模型时,需要先把模型转换为.rknn格式的文件,目前支持的框架有caffe、tensorflow、tensorflow lite、onnx、darknet、pytorch。需注意一点,在rknn-toolkit 1.3.0之前版本,对于pytorch等不支持的框架,可以先转为onnx再转为rknn模型处理。
rknn-toolkit套件提供了以下功能:
模型转换:将其他格式的模型转换为rknn模型,使其能在RK硬件平台上部署使用;
量化功能:支持将浮点模型转换成量化模型,目前支持的量化方法有非对称量化(asymmetric_quantized-u8)、动态定点量化(dynamic_fixed_point-8和dynamic_fixed_point-16)。
模型推理:能够在PC上模拟运行模型并获取推理结果,也能在NNEWN硬件平台上运行模型并获取推理结果。
性能评估:能够在PC上模拟运行并获得模型总耗时及每一层的耗时信息;也可以通过联机调试的方式在指定硬件平台上NNEWN硬件平台上运行模型,以获取模型在硬件上完整运行一次的总时间和每一层的耗时情况。
内存评估:获取模型运行时的内存使用情况。通过联机调试的方法获取模型在NNEWN硬件平台上运行时间内存的使用情况。
模型预编译:通过预编译技术,可以减少模型加载的时间,对于部分模型,还可以减少模型尺寸。但是,预编译后的rknn模型只能在带有NPU的硬件平台上运行。
操作系统版本 | Debian9及以上版本或Ubuntu16.04(x64)及以上版本 |
Python版本 | 3.5/3.6 |
Python库依赖 | ‘numpy >= 1.16.1’ ‘scipy >= 1.1.0’ ‘Pillow >= 3.1.2’ ‘h5py >= 2.7.1’ ‘lmdb >= 0.92’ ‘netwrokx == 1.11’ ‘flatbuffers == 1.9’ ‘protobuf >=3.5.2’ ‘onnx == 1.4.0’ ‘onnx-tf ==1.2.0’ ‘flask >=1.0.2’ ‘tensorflow >= 1.11.0’ ‘dill == 0.2.8.2’ ‘opencv-python >=3.4.3.18’ ‘Ruamel.yaml == 0.15.82’ ‘Psutils >=5.6.2’ |
安装Linux基础系统,照安装向导把Linux基础系统装好,这个阶段一般按最小系统来安装就可以了。
安装平台SDK及交叉编译工具以及gcc, gcc-c++, make等构建工具
请参考开发环境搭建安装开发工具。
安装AI开发的SDK和工具链
建议安装Anaconda包管理工具托管的Python,方便管理包之间的依赖关系。Anaconda离线安装包的下载地址:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.sh (清华开源软件镜像)
https://repo.anaconda.com/archive/Anaconda2-5.2.0-Linux-x86_64.sh (官方地址)
下载相应的离线安装包 Anaconda3-5.2.0-Linux-x86_64.sh,保存到本地,然后运行命令:XXX,按照提示安装,安装位置可自由选择,本文安装到了/opt/zlg/anaconda.运行完Anaconda3-5.2.0-Linux-x86_64.sh离线安装包后,只是装了Anaconda管理工具所需要一些基础包,真正开发需要的工具包集合,需要连网在线安装,主要步骤有:
修改Anaconda镜像源为清华镜像
在用户的主目录创建.condarc文件,内容如下:
channels: - defaultsshow_channel_urls: truechanel_alias: https://mirrors.tuna.tsinghua.edu.cn/anacondadefault_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pro - https://mirrors.tuna.tsinghua.edu.cn/anaconda/msys2custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pythorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
编辑好.condarc后,运行 conda clean -i
清除索引缓存,保证用的是镜像站提供的索引
更新基础包base
注:
安装anaconda包管理环境后,默认会在shell提示符首部加入当前环境标识’(…)’,这样方便用户知道自己当前处于哪一个工具集环境,比如当前处于’base’环境上下文,所以提示符变成’(base) zlgmcu@m1808-devel:~$ ‘.
创建相应的工具集环境
在conda中创建的多个环境是可以side-by-side并存的,所以在同一个系统中可以按需求,随时创建配置不同版本的环境,每个环境私有的依赖包都安装在该环境上下文中,公有的依赖包则安装在base中。
删除创建的工具集环境
如果一个通过conda create
命令创建的环境不再需要了,可以用conda remove
命令删除
安装rknn-toolkit工具包
安装rknn-toolkit工具包前,有个要特别注意的细节就是,rknn-toolkit工具包的众多依赖包,分成两部分,一部分可在Anaconda托管的库中找到,另一部分位于Anaconda之外的第三方库,是需要通过pip命令安装,所以在安装之前需要把pip源也设成国内镜像来加速安装,比如设成清华的源
属于Anaconda托管的包,用conda install <package>
安装,非托管的第三方包用pip install <package>
安装。但通常需要批量安装多个依赖包,把所需要包列在一个需求清单文件中,通过conda install --file <conda-requiments.txt>
或pip install -r <pip-requirments.txt>
批量安装。
下面给出安装rknn-toolkit-1.3.0所需依赖包的两个清单文件内容:
_libgcc_mutex=0.1=main_mutex_mxnet=0.0.40=mkl_tflow_select=2.3.0=mklabsl-py=0.9.0=py36_0asn1crypto=1.3.0=py36_0astor=0.8.0=py36_0backports=1.0=py_2backports.weakref=1.0rc1=py36_0blas=1.0=mklbleach=1.5.0=py36_0blinker=1.4=py36_0bzip2=1.0.8=h7b6447c_0c-ares=1.15.0=h7b6447c_1001ca-certificates=2020.1.1=0cachetools=3.1.1=py_0cairo=1.14.12=h8948797_3certifi=2020.4.5.1=py36_0cffi=1.14.0=py36h2e261b9_0chardet=3.0.4=py36_1003click=7.1.1=py_0cryptography=2.8=py36h1ba5d50_0decorator=4.4.2=py_0ffmpeg=4.0=hcdf2ecd_0fontconfig=2.13.0=h9420a91_0freeglut=3.0.0=hf484d3e_5freetype=2.9.1=h8a8886c_1gast=0.2.2=py36_0glib=2.63.1=h5a9c865_0google-auth=1.13.1=py_0google-auth-oauthlib=0.4.1=py_2google-pasta=0.2.0=py_0graphite2=1.3.13=h23475e2_0grpcio=1.27.2=py36hf8bcb03_0h5py=2.8.0=py36h989c5e5_3harfbuzz=1.8.8=hffaf4a1_0hdf5=1.10.2=hba1933b_1html5lib=0.9999999=py36_0icu=58.2=he6710b0_3intel-openmp=2019.4=243itsdangerous=1.1.0=py36_0jasper=2.0.14=h07fcdf6_1jinja2=2.11.2=py_0jpeg=9b=h024ee3a_2keras-applications=1.0.8=py_0keras-preprocessing=1.1.0=py_1ld_impl_linux-64=2.33.1=h53a641e_7libedit=3.1.20181209=hc058e9b_0libffi=3.2.1=hd88cf55_4libgcc-ng=9.1.0=hdf63c60_0libgfortran-ng=7.3.0=hdf63c60_0libglu=9.0.0=hf484d3e_1libmklml=2019.0.5=0libmxnet=1.5.0=mkl_hfe83b78_0libopencv=3.4.2=hb342d67_1libopus=1.3.1=h7b6447c_0libpng=1.6.37=hbc83047_0libprotobuf=3.6.1=hd408876_0libstdcxx-ng=9.1.0=hdf63c60_0libtiff=4.1.0=h2733197_0libuuid=1.0.3=h1bed415_2libvpx=1.7.0=h439df22_0libxcb=1.13=h1bed415_1libxml2=2.9.9=hea5a465_1markdown=3.1.1=py36_0markupsafe=1.1.1=py36h7b6447c_0mkl=2020.0=166mkl-dnn=0.19=hfd86e86_1mkl-service=2.3.0=py36he904b0f_0mkl_fft=1.0.15=py36ha843d7b_0mkl_random=1.1.0=py36hd6b4f25_0mxnet=1.5.0=hea8a0af_0ncurses=6.2=he6710b0_1numpy=1.16.3=py36h7e9f1db_0numpy-base=1.16.3=py36hde5b4d6_0oauthlib=3.1.0=py_0olefile=0.46=py36_0openssl=1.1.1g=h7b6447c_0opt_einsum=3.1.0=py_0pcre=8.43=he6710b0_0pip=20.0.2=py36_1pixman=0.38.0=h7b6447c_0protobuf=3.6.1=py36he6710b0_0py-mxnet=1.5.0=py36hc738527_0pyasn1=0.4.8=py_0pyasn1-modules=0.2.7=py_0pycparser=2.20=py_0pyjwt=1.7.1=py36_0pyopenssl=19.1.0=py36_0pysocks=1.7.1=py36_0python=3.6.10=hcf32534_1readline=8.0=h7b6447c_0requests-oauthlib=1.3.0=py_0rsa=4.0=py_0scipy=1.3.0=py36h7c811a0_0setuptools=46.1.3=py36_0six=1.14.0=py36_0sqlite=3.31.1=h62c20be_1tensorboard=1.12.2=py36he6710b0_0tensorflow=1.12.0=mkl_py36h69b6ba0_0tensorflow-base=1.12.0=mkl_py36h3c3e929_0termcolor=1.1.0=py36_1tk=8.6.8=hbc83047_0urllib3=1.25.8=py36_0werkzeug=1.0.1=py_0wheel=0.34.2=py36_0wrapt=1.12.1=py36h7b6447c_1xz=5.2.5=h7b6447c_0zlib=1.2.11=h7b6447c_3zstd=1.3.7=h0b5b093_0
dill==0.2.8.2flask==1.0.2flatbuffers==1.10idna==2.8lmdb==0.93networkx==1.11onnx==1.4.1onnx-tf==1.2.1pillow==5.3.0ply==3.11psutil==5.6.2pyyaml==5.3.1requests==2.22.0ruamel-yaml==0.15.81typing==3.7.4.1typing-extensions==3.7.4.2
先把依赖包都装上,注意要装到先前创建的环境:
再安装rknn-toolkit-1.3.0工具包,选择文件”rknn_toolkit-1.3.0-cp36-cp36m-linux_x86_64.whl”:
文件”rknn_toolkit-1.3.0-cp36-cp36m-linux_x86_64.whl”可在光盘资料中找到。
检查rknn-toolkit是否安装成功
若没有出现任何报错,则安装成功。
注意,可能出现以下WARING,是显示里面依赖的库在未来的接口会有变更,目前仍可以正常使用!
至此,M1808的AI开发环境rknn-toolkit就安装好了。
[未分类] 瑞芯微旗舰级8KSoC芯片RK3588规格参数简介及Datasheet下载
2022-10-29
[行业应用] 基于瑞芯微RK3588的AR/VR智能眼镜及智能头盔类产品主板方案
2022-11-04
[行业应用] RK3588已适配银河麒麟操作系统,助力用户应用快速落地
2023-02-07
[行业资讯] 2023年瑞芯微开发者大会落幕,多项技术应用方案已落地
2023-02-28
[行业资讯] RK3399/RK3588成功适配Hailo-8的AI加速模块M.2计算卡,最高算力可达26TOPs
2023-03-09
[行业资讯] 瑞芯微RK3576 AIoT芯片规格及应用场景介绍
2024-01-02
[行业应用] 高度集成化模块化的RK3568和RK3588无人机AI控制主板方案
2022-10-29
[行业应用] NNEWN-RK3588系列产品已全面适配银河麒麟kylinOS、统信UOS、鸿蒙OpenHarmonyOS等国产操作系统
2022-11-07
[技术分享] 【官方开发文档】RKNN SDK 快速上手指南(RV1106/RV1103)
2023-02-05
[行业应用] 基于瑞芯微RK3588S的高性能移动设备及商用平板解决方案
2022-11-21
[行业应用] 基于瑞芯微RK3568的智能NVR/NAS服务器主板方案
2022-11-22
[技术分享] 瑞芯微RK3588/RK3568等芯片DDR SDRAM支持列表_2022.08.18更新
2022-11-09
[技术分享] 瑞芯微RK3588/RK3568等芯片Camera Sensor支持列表_2022.11.09更新
2022-11-09
[行业应用] 基于瑞芯微RK3588的智能NVR/NAS服务器主板方案
2022-11-18
2022-11-11
[行业资讯] 瑞芯微RK628D视频接口转换芯片简介及Datasheet下载
2021-08-28
[技术分享] 瑞芯微RK3588/RK3568等芯片eMMC支持列表_2022.10.31更新
2022-11-09
[技术分享] 【官方开发文档】Rockchip SDK申请及同步指南
2023-02-03
2022-11-10
2022-11-11
Copyright © 2021-2024 福州牛新牛科技有限公司 All rights reserved. |
嵌入式板卡
操作系统移植
AI部署应用
聚合智能网关
自主可控国产化
Copyright © 2021-2024 福州牛新牛科技有限公司 All rights reserved. |
办公地址:福建省福州市台江区鳌峰街道鳌江路8号万达广场A2栋618-619室
核心板
工控板
工控机
智能网关
平板电脑
技术与支持
成就客户 成就自我 勇攀高峰
产品中心