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; `. 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+ r04 下载NPU工程 : W- s5 y# x8 E* D% V% i
0 g1 o9 d! z5 g. `( ]' i& m! r05 将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 R06 模型转换
- |: 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
|