星标+置顶,掌握嵌入式AIoT前沿技术资讯
/ D2 Y4 n0 b" V X点赞+关注,一起变得更加优秀!) t$ u6 {0 F2 c9 i
) ^9 t2 `( A4 Z5 S( Q; t俗话说:万事开头难。但有时候有了牛逼前辈们的帮助,开头也变得不怎么难,比如,入坑嵌入式AI这件事儿,第一步就是根据教程手册搭建好开发环境。
3 s& F5 V* X/ B4 m- D4 V/ h1 b( ?' c4 @% y! f" }7 p1 ]* O
% d9 v, a& G9 g! Q: C
开发环境的软硬件设备描述
/ p# w8 p* z1 @' r$ I; n) b* S8 X7 k2 Q, X. J
9 C3 h+ v0 h" g# U' B1 @# k
PC主机:Windows11(32GB内存,1TB 固态硬盘)6 f6 T3 R3 L1 [0 f9 C) ^
虚拟机:Ubuntu22.04(分配16GB内存,512GB硬盘)
( b. z1 W3 Z G7 M) \开发板:ELF2(RK3588 4G+32G),运行Ubuntu22.04 Desktop系统2 b ~1 A4 m: `
! k I9 [0 Q: C; w0 y9 U" {; u嵌入式AI模型训练到部署,大致可以分为以下几个过程:! V. Y& }' ? D$ _7 Y) j
3 a4 H( a! R4 f3 w( s
1、模型训练:使用高性能的计算资源对模型进行迭代训练,不断调整模型参数以达到最小化预测误差或者最大化的任务性能指标。; }+ n$ i7 ]+ x% `7 G% Y
* z. a* f7 _2 e( o# t2、模型转化与优化:对于RK系列的处理器,可以使用RKNN-Toolkit工具对模型进行转化。
! w5 Q" _ A" J" f1 ?# n( U, ]2 D$ Q6 K" L6 N9 o
3、嵌入式设备部署:把转化和优化好的模型,部署到嵌入式设备中,编写推理相关的代码,并进行验证。& J5 n% }! h( y$ Q) Z, Y- @9 V
( Z2 |2 H7 t z4 S
ah3f5l541tj6402229417.jpg
' I" p( w4 `7 e2 _' H6 o- ]. l
飞凌嵌入式的ElfBoard ELF2开发板使用的是RK3588处理器,4GB+32GB的核心板配置,开发板里面运行的是Ubuntu22.04 Desktop系统。1 k: a& q; n' E) O6 m9 t! a$ @
6 W/ N+ P* h- W6 B
要进行嵌入式AI入门,第一步先要在虚拟机Ubuntu22.04和开发板Ubuntu22.04上搭建好对应的开发环境(也就是安装相应的软件包),过程如下:6 `" y9 ]+ a2 i% o& J0 c5 V1 O. y
0 }0 {1 d. q- @, g, ]/ _
一、虚拟机安装 Anaconda' s' J; S3 Z& E
% B, ?4 d, \6 j* n6 Z" c3 q+ r) c
O" a3 S2 m4 f# }5 A9 z1、在虚拟机Ubuntu22.04里面,安装Miniconda包管理器,这个管理器工具的主要作用是,允许用户创建和管理多个独立的Python环境,这样做的目的在于,多个Python环境可以互不干扰。
( |+ x! }; n6 \# {' ?) P5 E
; ~: q. M$ r6 ]% bELF2的资料里面提供了Miniconda的安装脚本,运行脚本即可安装:
2 |( X4 c% b! F$ n8 `5 C& @3 velf@ubuntu:~$ chmod +x Miniconda3-4.7.12.1-Linux-x86_64.sh elf@ubuntu:~$ ./Miniconda3-4.7.12.1-Linux-x86_64.sh
" B" p. o' `# m0 H$ |9 a2、在虚拟机的Ubuntu22.04安装完Miniconda之后,重启终端后会在前面显示(base)字样,这表示,目前conda处于base虚拟环境,因为我们目前没有创建任何虚拟环境。
* y: q5 j+ b' u* ^* A# c+ l
& E, p1 N" Y4 ]& @& I1 R如果想conda的base虚拟环境不在开机时启动,可以执行以下命令:4 W3 x2 ~" c4 v# k. z) r# ?8 S7 [
conda config --set auto_activate_base false
" V8 L! W+ v- U* B8 m
a3l0hhh3v5f6402229517.png
7 c) h* t# m W1 a" S7 t
; L o' U$ }" _5 m3、conda工具有几个经常用到的命令,如下:7 |7 s$ `) s( Q3 B
(1)查看虚拟环境列表:conda env llist(2)创建新的虚拟环境:conda create --name [虚拟环境名称] python=[版本号](3)激活虚拟环境:conda activate [虚拟环境名称](4)退出虚拟环境:conda deactivate(5)在虚拟环境安装库:conda install [包名] 或者 pip install [包名](6)删除虚拟环境:conda env remove --name [虚拟环境名称]
3 ]( P ]+ p u: j1 R8 Z2 q/ z9 x二、虚拟机创建Python虚拟环境; [% o& X h9 }& _4 G9 L" H5 B
" L7 {1 H: m- G+ n6 N2 M
4、conda工具安装完成后,接下来可以创建一个虚拟环境,假设虚拟环境命名为:py3.10-tk2-2.1,执行以下命令进行创建:
" X- a( g4 T: B9 Cconda create --name py3.10-tk2-2.1 python=3.10创建完成后,执行以下命令激活虚拟环境:
1 c4 E" W0 f4 r. t& N8 v( [conda activate py3.10-tk2-2.1
5 F) u I; P; T. O( I( ^
avfhmveqin26402229617.png
) @( p5 o, Q }' x) `
, {- e \" G* t3 f8 Y' t+ d& W
三、虚拟机安装 RKNN-Toolkit2-2.10
4 t6 t% C- j: z% u S% e/ ^8 l
( J# l5 i4 P" e5、在新创建的虚拟环境里面安装RKNN-Toolkit2-2.1.0,把RKNN-Toolkit2-2.1.0.zip压缩包上传到虚拟机的Ubuntu22.04并进行解压,然后在rknn-toolkit2-2.1.0/rknn-toolkit2/packages目录下,执行以下命令:
) J; j( Y% a# z+ }( F# lpip install -r requirements_cp310-2.1.0.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package上一条命令执行成功后,继续在同样目录下执行以下命令:, D# I+ A, h5 l* y% g
pip install rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl
3 D: P' }( |' @; b ?' @6 E! s% A- `6、以上两条命令执行完成后,会在终端显示 Successfully installed rknn-toolkit2-2.1.0+708089d1,这里要补充说明一下,如果虚拟环境是基于Python3.9的,那以上两条命令在执行时,要选择带有“cp39”的文件,同理,如果是基于Python3.11,则要选择“cp311”相关的文件。
0 ~5 [4 k. d, |6 p( d" |3 I6 ]- Z4 Z5 t C: i
uvrxfroa4pt6402229718.png
}: n8 }) X9 U四、开发板安装RKNN-Toolkit-Lite21 e) Z% d' n- \; s
% s- d1 Y6 {. P& Q3 y4 Q6 V+ H5 b4 q1 c, a" ]# X) X E
7、使用fileZilla工具,把 rknn-toolkit2-2.1.0/rknn-toolkit-lite2/packages目录下的
; Q4 k! f6 E6 q" G6 Frknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl文件,上传到开发板,然后执行以下命令安装该文件:) d# k. y. B: l( K( `
elf@elf2-desktop:~$ sudo apt-get update elf@elf2-desktop:~$ sudo apt-get install python3-pip elf@elf2-desktop:~$ pip install rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl( X0 v) C/ `4 k$ I2 Z+ r
n0jevvzef5x6402229818.png
* Q+ F' S5 [* V$ Z: N0 I; O5 F t
! j t- y: ~* Q8 D; c( }五、开发板更新RKNPU2) K2 D: K9 K! g8 x
. ?7 ?2 G h+ K8、开发板在出厂的时候已经预装了RKNPU2组件,并且该组件集成了NPU驱动,支持通过C语言进行模型加载和推理。
) g+ ?$ n# F( Y& w8 V% h# k# E/ R0 X7 N8 g& Z h
据了解,RKNPU2采用统一版本号进行管理,不同版本之间可能存在互不兼容的问题,因此建议用户保持RKNN-Toolkit2和RKNPU2的版本一致性。不建议用户随意更新RKNPU2!& l' t3 p( S; Q: K, w: m
6 N) p- E9 C: q: `# w6 J7 ^
, A! Y: ?- B& H6 T* t7 B9、如果确实需要将RKNPU2更新至最新版本,可以遵循以下方法:在rknn-toolkit2-2.1.0文件夹里面,找到以下四个文件,分别是librknnrt.so/rknn_server/start_rknn.sh/restart_rknn.sh,+ Z6 }' q3 n$ Z( H" H- B7 T3 t! E- \' `
( Z. O, Z; Y# _% ^; {, y6 M0 \其中,librknnrt.so上传至开发板的/usr/lib目录,其余三个文件上传至/usr/bin目录,执行以下命令:
9 Q T C1 ^! }2 q6 _- r/ J+ gelf@elf2-desktop:~$ sudo mv librknnrt.so /usr/lib/ elf@elf2-desktop:~$ sudo mv rknn_server /usr/bin/ elf@elf2-desktop:~$ sudo mv start_rknn. /usr/bin/ elf@elf2-desktop:~$ sudo mv restart_rknn.sh /usr/bin/elf@elf2-desktop:~$ sudo chmod +x /usr/bin/rknn_server elf@elf2-desktop:~$ sudo chmod +x /usr/bin/start_rknn.sh elf@elf2-desktop:~$ sudo chmod +x /usr/bin/restart_rknn.sh elf@elf2-desktop:~$ restart_rknn.sh安装好Miniconda、创建Python虚拟环境、安装RKNN-Toolkit2-2.1.0、开发板安装RKNN-Toolkit-Lite2、开发板更新RKNPU2,以上工作完成后,嵌入式AI的开发环境就已经搭建完成。) I# x1 ~! ]1 }4 Q
* ^2 g2 H- R% I8 a1 m% W下一步,我们来继续实践嵌入式AI的数据处理、模型部署与转换,感谢阅读和关注!
8 ^" H' N. ?4 k9 R! e- M2 ]9 Q% c5 D/ ?5 p5 W
-END-' _" R7 J, T# g" ~5 U, v+ _
往期推荐:点击图片即可跳转阅读3 ?2 v3 Q" [, H
hdugv4v4eec6402229918.jpg
( ?; @/ F: G7 E. ^0 z/ o
今年35岁,大专学历,学习嵌入式端侧AI技术,还合适吗?
" { ~4 D5 `" q4 A& c8 @# p- v
gdterpk1job6402230018.jpg
9 f0 Y+ `3 q* D) n
好玩的嵌入式 AI ,机器视觉和音视频处理4 A$ }7 f$ o \1 b" o( S# B
b3zktfjx1u26402230118.jpg
2 n2 D" m8 t9 k M. {% J. r- M' g3 O火遍朋友圈,我用DeepSeek来协助进行嵌入式软硬件开发!
5 e0 O7 B& S' `) p7 {. K* A星标+置顶,掌握嵌入式AIoT前沿技术资讯
; [6 J4 @% m/ ?1 a2 ?. X3 m点赞+关注,一起变得更加优秀! |