找回密码
 注册
关于网站域名变更的通知
查看: 558|回复: 1
打印 上一主题 下一主题

RK3588的模型转换讲解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-6-5 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

RKNN-Toolkit2是为用户提供在 PC、 Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具提供的 Python 接口可以便捷地完成模型转换、量化功能、模型推理、性能和内存评估以及量化精度分析等多种操作。

RKNN(Rockchip Neural Network)是一种用于嵌入式设备的深度学习推理框架,它提供了一个端到端的解决方案,用于将训练好的深度学习模型转换为在嵌入式设备上运行的可执行文件。使用RKNN框架可以在嵌入式设备上高效地运行深度学习模型,这对于需要在资源受限的设备上进行实时推理的应用场景非常有用。例如,可以将RKNN用于智能摄像头、机器人、四轴飞行器等嵌入式设备中,实现物体检测、人脸识别、图像分类等人工智能功能。


$ F  X( B( [) _7 X+ Q8 X
+ d) ?" u. Y! k3 R  @. L

下面,我们就使用RKNN-Toolkit2工具将rknpu2工程中的yolov5s.onnx模型转换为yolov5s.rknn模型为例进行讲解。


" W! `4 V& B& Q! g7 Q. p

开发工具:飞凌嵌入式OK3588-C开发板

开发环境:Ubuntu20.04


0 K+ ]& n$ I4 L/ P# @0 {

01

下载RKNN-Toolkit2

6 [& L3 J* z3 {7 M* x* \

* U9 Y4 Q' f  F- r8 }

02

安装依赖

requirements_cp36-1.3.0.txt文件,在rknn-toolkit2/doc目录下:


- O$ W2 {. f" }* O6 Z$ @! H0 q% Q- j

03

开发环境与OK3588-C开发板连接


      T2 v5 I# }9 v6 X3 ~$ O7 a0 \( b6 _) L6 d! V) W; t- S
          
  •       

    开发环境中安装adb

    1 \. ]) Q% C* Z* x6 N. L7 g


/ d# J6 G3 S# s5 L" o) I
    2 C' s+ {3 `% W* X7 J
    * i5 O4 [1 b. H+ r" A
          
  •       

    使用USB-typeC线连接到板子的TypeC0接口,PC端识别到虚拟机中。


    * S- U; N$ @; ?1 X  B, ~  o
    ; `. b8 w" M4 b2 d0 L9 t

    % c9 x2 S4 _9 y+ {      
  •       

    在开发环境中检查是否连接成功

    7 W' M- j2 C& |/ O

0 r/ O$ N* k1 s3 s/ K

如果连接成功会返回板子的设备ID,如下:


7 s6 H# I1 B3 T) x6 Q& Y/ r+ r

04

下载NPU工程

: W- s5 y# x8 E* D% V% i

0 g1 o9 d! z5 g. `( ]' i& m! r

05

将rknn_server和rknn库发送到开发板

# Q  D4 ^8 M/ d7 V

在OK3588-C开发板上运行rknn_server服务

+ e: C& z; \& _4 x2 @  W2 K1 S

在开发环境中检测rknn_server是否运行成功

% ^$ b" f1 ~8 n9 ^; |

有返回进程id说明运行成功。


+ A1 ?. K6 z# B& \/ g  [5 R

06

模型转换


    * M+ e) H" U4 {) z% t
    : R6 Y! U: H# @5 ]+ z) h, r2 b      
  •       

    在开发环境中进入到rknn_toolkit2工具中的examples目录中选择一个模型。本例选择的是将onnx模型转换为RKNN模型。


    . b* a6 g* s9 @! I! K+ E

    - |: J) L! H1 M  a/ Q' q, t. ^2 ?' ~6 G8 O8 ?8 c
          
  •       

    修改test.py


    6 S: ?, e. O5 s2 `2 ?- \- p) {

- B+ \8 @& `- `" d4 ]. C; F% [

  在rknn.config中添加target_platform='rk3588'

  在rknn.init_runtime中添加target='rk3588'

4 e* f& A! p( e$ U" V

    - r! ]( |" r# ~7 U( I* N! s9 T: O: L8 h# ?
          
  •       

    修改完成后,运行test.py

    - \, w$ \+ y) Q' j4 B! A9 G

  A3 Q3 v) A" f, i! [& h

运行成功结果如下:

: i2 p4 r6 t) A6 s% G( d4 m- Y

) K# V, M0 {2 T/ G1 q- I* x

0 v5 r) [/ \1 C& b" k

同时在目录下会生成yolov5s.rknn模型。


. Z; f& X0 Q; a+ X( N% i0 e% ]1 N, @  q+ R2 g2 ~

07

编译测试源码

进入到rknpu2/examples/rknn_yolov5_demo目录下,设置环境变量:

( ]5 o& j4 i: ?% j0 C' }
" O3 A* C0 o7 C* {/ F" I

执行编译脚本,进行编译:


; E2 n- p8 A, u* c0 K% Z" F# F* Y! u  Z

然后在rknpu2/examples/rknn_yolov5_demo/install/rknn_yolov5_demo_Linux目录下会生成rknn_yolov5_demo


; v4 _4 i. J$ I
0 s" a1 ~2 X! \  y* @: L+ _

08

将上边生成的yolov5s.rknn模型和install目录下的rknn_yolov5_demo_Linux拷贝到开发板中


( m6 ?, z+ j  j2 l; o  j2 d* y$ ?/ r( c

进入到rknn_yolov5_demo_Linux目录下,添加链接库的环境变量(rknn_yolov5_demo_Linux目录下的lib目录)


$ L* ~9 b& X: e* Z2 `# H" j& m" b" g8 X' ~6 ~1 a$ M6 R9 Q

使用rknn模型进行物体识别命令如下:

. W9 F6 D! r5 t$ {8 D2 p3 C7 g, ?

. ?! T9 H2 y+ H& N6 J: m" H

执行结果如下:


% ?4 g' M+ G4 q% S, b

将生成的out.jpg拷贝到本地电脑中查看,识别结果如下。


* v$ a) T! W4 y2 r5 x

以上就是基于飞凌嵌入式OK3588-C开发板进行的RK3588推理模型转换及测试过程,希望能够对您有所帮助。

  H8 _4 H' a7 I, h
  • TA的每日心情
    开心
    2023-6-12 15:40
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2023-6-5 14:35 | 只看该作者
    图片看不见,请上传一下,我们公司可能会买这个板子
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-29 18:18 , Processed in 0.078125 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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