星标+置顶,掌握嵌入式AIoT前沿技术资讯( A) d$ m4 L" s/ L. P- K% J
点赞+关注,一起变得更加优秀!
( q# T; `2 L( {3 d开发环境的软硬件设备描述, J" ]1 {, p* `
6 P, [4 X2 ~" R; c9 p3 s8 X* p9 X
+ t" L) f4 [) i5 _" r- {3 {PC主机:Windows11(32GB内存,1TB 固态硬盘): J [) W# B! I; G Q
虚拟机:Ubuntu22.04(分配16GB内存,512GB硬盘)& K! h! g4 E, x) s. E5 A
开发板:ELF2(RK3588 4G+32G),运行Ubuntu22.04 Desktop系统4 G' b( o. q% t6 F; G
/ ^8 M3 ~; M; x4 [5 ~' K
学习过程
2 C4 l- O2 K2 ^6 l$ z
. x5 L+ N% x" f! [- J& \- U0 v9 a% V. F
按照开发板提供的学习文档《基于 RK3588 的AI模型训练到部署.pdf》的第一章和第二章的内容,基本上可以把开发环境搭建起来,手册可以点击【阅读原文】获取。) c2 x# D( W" `$ l$ y! m) t
8 ^8 y5 n# I' z( W; U按照手册提供的章节目录,第三章和第四章偏重于理论概念,我这边习惯先从实际操作出发,把实操环节先执行一遍,于是直接跳到了“第五章-模型部署与转换“进行学习。+ x0 }; S, t# ?/ A- ?
# L e0 D- @% {7 H
abog512r5046402793617.png
/ V4 f4 T! k) u& v% A" j- b3 Z1 j" a0 Q( L0 }& _
第五章是使用瑞芯微提供的rknn_model_zoo模型库进行演示的,一顿猛如虎的操作之后,基本可以总结出以下规律:$ a+ ^6 c& ?3 u: G
* H: `0 w, _) ]) M7 p7 [1、在虚拟机Ubuntu22.04中解压 rknn_model_zoo-2.1.0压缩包。7 u8 g, w. N) M1 ?/ P: G
1 z0 a' r$ a9 ~. @
2、使用 export GCC_COMPILER设置环境变量。. o: X8 k, `/ H+ v' n6 E2 E
# X: g6 a; E) ]3 u4 ] C3、进入rknn_model_zoo-2.1.0/exampes目录,选择模型例程。0 \3 _, _1 B" t7 m. W' m& q! U
: m! T! H% @6 R: l4 S
4、执行download_model.sh脚本,把模型下载到虚拟机。
0 L y# S# Y4 ~; K) F4 O# c; g2 O0 L
) v( q6 f- Q1 Z0 J3 M9 i
. ^/ m$ l7 m+ p: P h5 m5、执行Python脚本开始把下载的模型转换为RKNN模型。8 x" a9 X" |5 `3 X* }. r) i
; F# |( s+ u0 l
4 \+ j" @+ z% X' J1 U. e! C/ ^
6、执行build-linux.sh脚本,编译例程源码,生成可执行文件。
, N) o$ H; T4 ]9 p# |7 u# ~( _* m
# B2 z% m4 g7 F* h1 |1 G6 O9 Y. }9 H9 K' z8 Z; f( O6 w8 }9 W- Q
7、在rknn_model_zoo-2.1.0/install目录下,会找到生成的例程。' L1 ^# u& S. J' m6 a0 V, @
* G Q. z8 `7 a8、上传到开发板运行,可以在终端里面看到例程的执行结果。
. m& E" {, u0 n8 J( e% i2 |4 s! w8 h
在以上过程里面,第4/5/6步是与模型的下载-转换-部署相关的,基本上整个第五章都是遵循这个流程。. a/ D! }5 o7 _* h5 @, F9 ?+ s9 _0 H
" c; q2 v5 e3 o5 v" {- a" \& T1 j& I因为rknn_model_zoo是瑞芯微封装好的模型集合,所以我们跟着手册学习这个模型库的时候,基本上都是step by step的操作,更深入的细节还需要我们去学习分析。
: e: n: e x+ J) ~% k
6 F! }& ?" y7 F7 E比如,打开download_model.sh文件,发现是在网络直接下载已经训练好的模型,但模型的训练细节与优化在该脚本没有描述(也没必要描述),直接先用别人训练好的模型。. |4 j+ G% D8 T! b+ A
8 l6 x; h5 ?7 X/ Y- I
每个例程都有一个Python文件夹,比如resnet例程,会有一个resnet.py脚本,这个脚本是用来把其他格式的模型转换为rknn格式的模型,这个Python脚本是如何编写出来的,还需要进行更深入的学习。
6 G3 E W4 [) Z
( i. S6 G+ c+ P4 b3 D1 `. Xbuild-linux.sh脚本是编译例程的可执行文件,执行完这个脚本之后,就可以得出该例程在开发板上面的可执行文件,但build-linux.sh脚本的执行细节,需要自行找资料进行学习。. Z- S @' i9 D: K
0 c, |$ r( ~1 u2 U把转换为rknn格式的模型和应用程序都上传到开发板,采用命令行的方式运行应用程序,就可以得出期望的输出结果。! C2 s @2 v$ |1 r7 H3 ~
# M' K6 p( W f/ a, m- e- |
cyrmvw5cz1f6402793717.jpg
3 m; }3 I8 D" v* w6 n( v2 l; E4 H/ o
( k! K& X u8 {( @8 S总结
2 l: Z9 R/ b0 p( b) c# A, B; |+ }. z- Y: _, S* I1 Y4 l) e
整个章节学习下来,基本上是比较简单的step by step操作,没太大的难度,预计花费半天到一天左右,学习了这个章节之后,会对模型的转换和部署有一个直观的认识。
. {: y4 _+ b5 N. I6 R( v# |
5 ~6 [( C9 e& J下一步,我们继续尝试学习一下rkllm-toolkit的部署,这是瑞芯微提供的一个大语言模型,并且尝试在ELF2开发板上面部署DeepSeek。( R- ~2 w, L) L" m
* W& j4 O2 K' H0 O感谢阅读!: h: s. ]& d& V" U5 h5 u+ J$ ~
-END-
% W# V& ~* \2 x/ \ F往期推荐:点击图片即可跳转阅读& r% b7 Z# s- C6 n6 }
y3gwocdwiom6402793817.jpg
2 }6 E. p7 l7 D# H: \8 N7 L嵌入式AI入坑第一步,先把开发环境搭建起来!* j$ S% g# e4 y6 @ e: e
k1jpefucvek6402793917.jpg
4 N, Z3 a k: f+ ^1 E n好玩的嵌入式 AI ,机器视觉和音视频处理5 N" E* Z. N5 d8 v% P$ N
wjkmfun3s556402794017.jpg
5 J) f8 c. W+ u$ ]# z4 ?( Q
今年35岁,大专学历,学习嵌入式端侧AI技术,还合适吗?1 A7 S* `( _/ M6 I3 I
星标+置顶,掌握嵌入式AIoT前沿技术资讯, y g! H3 C6 j, d( W- w; \6 F( A& |
点赞+关注,一起变得更加优秀! |