星标+置顶,掌握嵌入式AIoT前沿技术资讯 C* f- l E8 w
点赞+关注,一起变得更加优秀!
, C t4 z3 I+ |/ |* l. P6 i0 r; y开发环境的软硬件设备描述
9 z& j: ?! e) o- q) V/ ]& g4 m# c5 F/ G
. \) }; P$ @. g6 {9 }
9 H& N; _# j1 Y4 [; O8 fPC主机:Windows11(32GB内存,1TB 固态硬盘)
4 `6 \2 j: D& a# ^! f2 A虚拟机:Ubuntu22.04(分配16GB内存,512GB硬盘)
- s) k' d+ v1 }- g/ N$ l" q开发板:ELF2(RK3588 4G+32G),运行Ubuntu22.04 Desktop系统
( E' I4 Q% c1 X' i, c: `2 S/ Z) {! v' d ^0 |, H% C" o, Z6 H
学习过程) ~, h, u F, U8 A& v
' Y( S- P5 m% M, x
' \. J, G( S5 @
按照开发板提供的学习文档《基于 RK3588 的AI模型训练到部署.pdf》的第一章和第二章的内容,基本上可以把开发环境搭建起来,手册可以点击【阅读原文】获取。
: b; w8 @% N4 c1 C0 b& n; [% a$ H) T3 t+ g+ s/ }0 h; E
按照手册提供的章节目录,第三章和第四章偏重于理论概念,我这边习惯先从实际操作出发,把实操环节先执行一遍,于是直接跳到了“第五章-模型部署与转换“进行学习。
5 F7 Y( n( x9 v+ c
' o% {, x3 n7 [3 J4 ^2 d0 M
abog512r5046402793617.png
) S" S9 L A( t8 |& h9 Q
% b) s; `3 i+ Y$ t$ V1 |% P, x1 U
第五章是使用瑞芯微提供的rknn_model_zoo模型库进行演示的,一顿猛如虎的操作之后,基本可以总结出以下规律:
5 b& G2 @) i( V" H7 r: h7 v/ Z
$ j, |; L9 ^% N4 b1、在虚拟机Ubuntu22.04中解压 rknn_model_zoo-2.1.0压缩包。5 b& f4 S( e. A" L9 E7 E2 Z
/ N7 F* t j8 K2、使用 export GCC_COMPILER设置环境变量。! ]8 c& a, W; D4 D- |
4 v8 c/ `% D5 |5 }5 q
3、进入rknn_model_zoo-2.1.0/exampes目录,选择模型例程。, F' m6 p8 y; T; D N
+ f- n7 c9 B U( E
4、执行download_model.sh脚本,把模型下载到虚拟机。
8 u* _3 W0 e5 K0 I
. S0 K2 |/ ], d+ S. H: K% w% ^3 z3 F" v6 [
- }, E+ U$ e! f( M5、执行Python脚本开始把下载的模型转换为RKNN模型。6 t3 Y/ B" Y) a7 p3 [
! i0 Z6 k. T: g- V# {
7 ?" z; X0 i: Q0 V6、执行build-linux.sh脚本,编译例程源码,生成可执行文件。
R3 {- d0 y0 ?& u# u ?6 u5 f `
9 Y# ?8 P0 [! S; F" ]
. g, e1 N2 s0 R) Z. b, @7、在rknn_model_zoo-2.1.0/install目录下,会找到生成的例程。9 Q6 P3 k) b8 h9 y' [7 T9 C' {$ v* U
6 E8 [6 R7 B' r" v5 w8 [
8、上传到开发板运行,可以在终端里面看到例程的执行结果。4 r8 @5 N. l$ \! ~$ R7 F
: G% s6 }$ t. j7 u. j4 g) a' u
在以上过程里面,第4/5/6步是与模型的下载-转换-部署相关的,基本上整个第五章都是遵循这个流程。
3 f3 k- }: B4 ^1 J: M( \; }
5 O( \: O" _6 c: r因为rknn_model_zoo是瑞芯微封装好的模型集合,所以我们跟着手册学习这个模型库的时候,基本上都是step by step的操作,更深入的细节还需要我们去学习分析。7 ?+ v/ A. E! S3 j
. p3 P, C& h# P% q) ] u
比如,打开download_model.sh文件,发现是在网络直接下载已经训练好的模型,但模型的训练细节与优化在该脚本没有描述(也没必要描述),直接先用别人训练好的模型。& g- w( A7 X( ]# Z
3 E/ `- M$ h) G/ Q, ?每个例程都有一个Python文件夹,比如resnet例程,会有一个resnet.py脚本,这个脚本是用来把其他格式的模型转换为rknn格式的模型,这个Python脚本是如何编写出来的,还需要进行更深入的学习。 j! D" _7 \* a* L# ]
% F. \, s9 `8 G3 ^2 N, }( _
build-linux.sh脚本是编译例程的可执行文件,执行完这个脚本之后,就可以得出该例程在开发板上面的可执行文件,但build-linux.sh脚本的执行细节,需要自行找资料进行学习。( ]4 z0 Y4 i' O" b
+ I2 p8 T. r9 x# r0 H$ y) V: }把转换为rknn格式的模型和应用程序都上传到开发板,采用命令行的方式运行应用程序,就可以得出期望的输出结果。
$ l0 C/ q9 z2 u4 {
3 P) J$ f& m1 r9 T/ T
cyrmvw5cz1f6402793717.jpg
3 l0 e+ K: C' a
; Y0 R) G. q {
总结/ a( P& F! s' h# n8 V* |1 L) b
! B9 R2 e9 u6 P% H整个章节学习下来,基本上是比较简单的step by step操作,没太大的难度,预计花费半天到一天左右,学习了这个章节之后,会对模型的转换和部署有一个直观的认识。( @; v8 \) V- ?8 s1 r
/ s; ] F! g# N# T; o下一步,我们继续尝试学习一下rkllm-toolkit的部署,这是瑞芯微提供的一个大语言模型,并且尝试在ELF2开发板上面部署DeepSeek。
- [7 T5 G" @- Q, r8 H3 \3 p" y) ~( l) a- ~- }
感谢阅读!
( E; B8 W7 ? @1 _2 M1 s-END-8 ~$ m; J s- p# [+ B5 Z
往期推荐:点击图片即可跳转阅读# G8 }* r4 H" R0 H. f6 `. g
y3gwocdwiom6402793817.jpg
& ?; j- s/ B& [* S2 l1 F嵌入式AI入坑第一步,先把开发环境搭建起来!2 y0 @1 I) e' U
k1jpefucvek6402793917.jpg
7 R- Z2 H7 d! e% Q好玩的嵌入式 AI ,机器视觉和音视频处理 V6 h' W! L5 X4 C' ^% l3 H
wjkmfun3s556402794017.jpg
2 T- {8 D9 B8 @8 e, h. I% O/ m4 H
今年35岁,大专学历,学习嵌入式端侧AI技术,还合适吗?' C0 S2 L; L: B- ?. S9 T2 b5 ~$ D
星标+置顶,掌握嵌入式AIoT前沿技术资讯
5 t) T( o3 U. U+ _点赞+关注,一起变得更加优秀! |