|
 ! o* V2 T) q1 N) |* j
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html
" c; Q- v. h, o( _! @4 P. {$ N1 h8 J
; P& w/ ` c# \+ g飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。
9 ~& U6 O+ n5 c7 w3 I) }* J* u本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。
# N/ R( ]6 p5 r6 C c7 b一、 NPU的图像识别例程
4 q$ P8 T* S* Q6 S; l在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。 ; f, D% T% U2 }
 7 O; c, R- i7 I4 m) |
 6 R9 [: S6 K* \% l0 w+ p3 f
- u$ R9 Y- O% B l
将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
! f* N$ z& ]' J& \
) S; u& A, a f d) j9 I7 m1 L: h- n2 l再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持:
1 \, S" x8 }" N2 ?2 M
9 J. f- Z b+ B; w! B, Y" T7 Q' p% Q ) R* \6 o) v# H! `
- libm-2.30.so
, R, C$ [0 S0 D4 f3 P/ f - libneuralnetworks.so.1.1.9
; U; h+ N$ {/ c# m: o1 U1 e - libnnrt.so.1.1.9
H5 K; Q9 L1 }( J8 e1 e - libArchModelSw.so
& v: J: E" c2 _8 N8 k, z! }6 g - libGAL.so6 R2 }- u8 s, h$ \. }9 n
- libNNArchPerf.so( I7 J* f3 W0 \' n. x: T( {
- libOpenVX.so.1.3.0/ U( I" B: o) Z: J3 ^0 T8 ~# F R3 j
- libovxlib.so.1.1.0
" s: T' K: T+ |2 r+ c5 y) W+ Q - libVSC.so
复制代码 * e9 a: l8 f8 F; @: n' M9 a/ g
0 m( C& G. ? h$ V
其中libm-2.30.so被链接为ld-linux-aarch64.so.1,位于/usr/lib/aarch64-linux-gnu/目录下,若在移植后的目标系统的/usr/lib/aarch64-linux-gnu/下没有该库文件的话,是会在运行时提示报错的。将上述所有动态链接库复制到正确位置(/usr/lib和/usr/lib/aarch64-linux-gnu/),再次运行: # l1 B! d' P- G8 C3 D* {5 Z. u

; B! ?9 }6 F" q5 e" ?9 G6 R; t/ ~' H1 @0 W
可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。 4 `: o- J* O* A
二、TensorFlow例程验证 ) _, d9 B* d# I. T
飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。 6 L# e1 C# _9 o& L

; b) d8 _: p5 p, Y1 O- 0.780392: 653 military unIForm
" T. A. } A- r, L - 0.105882: 907 Windsor tie
0 Z9 w* `& I- V# ]6 o# U2 G$ s) y - 0.0156863: 458 bow tie
{" s0 d* p( T" e3 U - 0.0117647: 466 bulletproof vest- g: _4 m8 {8 L3 Q
- 0.00784314: 835 suit
复制代码 ) H* s0 e" X9 o- U; ?$ A9 P; \, H* d
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。 % J" |& M, Y- t; R* ~ m( Y
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果: " t3 S5 `& y5 P2 a
0 b6 q2 i1 I$ q& k2 E
0 X$ \5 L0 k+ s/ j/ d0 H% u
/ a7 Q2 _' O7 _* W/ y. ]
- 0.352941: 274 dingo- j, c1 p& A: A$ E5 X$ u9 O1 Q' f
- 0.254902: 265 Cardigan6 k9 E- \% H7 c c
- 0.184314: 264 Pembroke& {, c; M6 x" i) W# X4 `
- 0.0666667: 163 beagle
6 O# v+ W* {. y: z4 j' T- R - 0.0156863: 354 gazelle
复制代码
$ z1 |. s1 P4 r; ]1 O/ k
6 C5 p- Z4 y+ N+ f3 N35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。/ ]$ { Y: ]- n: Z* t
" X1 _4 g% E, {9 l
再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中: , F1 |, v, L/ R
 / d; M0 A% X: {: I- [9 I( s& }# {
- 0.160784: 639 maillot
; C1 P: F7 t: W: d ]( Q - 0.137255: 436 bathtub
- m; m( i' @: G' ` - 0.117647: 886 velvet
3 V5 L, v' ?* x: ?5 v; J - 0.0705882: 586 hair spray5 y# [+ |$ l( p4 R9 k7 N9 X* N/ z
- 0.0509804: 440 bearskin
复制代码
( l: z, O/ j' O# ~& L: R- m& y1 Z+ e, d# o. Z; S
 ' ^% E9 F+ o+ W) a! V) g! N: l
- 0.972549: 644 mask
* y- i) H% C# j( { - 0.00392157: 918 comic book8 S7 I# S4 r+ O1 Z0 l% ^: t
- 0.00392157: 904 wig
/ [& h; e+ G8 X( R* O - 0.00392157: 797 ski mask
) R f2 A/ v; `3 A9 k - 0.00392157: 732 plunger
& s, o2 k6 d" v Q* g
复制代码
# p- k+ W4 z: G* s, {$ t5 g2 }0 z8 r1 G, e' p- k# z
 0 h [7 Z; k2 T
- 0.380392: 583 grocery store
7 _, ^" o# a- Y) {# T - 0.321569: 957 custard apple$ ^; [4 f% a' B4 i
- 0.0862745: 955 banana1 U2 B$ h) I# M5 z$ k
- 0.0352941: 956 jackfruit( H5 p# m; v N% E0 Y ~
- 0.027451: 954 pineapple
复制代码 " y1 x4 J% x) X: j8 P! ^
% L4 q) ]" V9 t7 b& N4 E% d * ?8 I+ @1 i! K" k
- 0.254902: 918 comic book5 o) U4 w4 y# o: g; q
- 0.0470588: 771 running shoe
$ ]+ L2 v$ B9 C$ a( I. d" _: X - 0.0470588: 474 can opener( \; B4 p* h" v
- 0.0470588: 412 apron
* v2 K7 Z2 `( t+ L - 0.0392157: 794 shower cap
复制代码
% h' Y, c9 J! D' q7 E5 S7 |6 c, I
7 x2 a% `& s! J* N/ L ' [3 O% }# X- [# x
- 0.52549: 922 book jacket
/ h1 D, |& I/ _+ Q/ Q, d - 0.0705882: 788 shield( z5 b" B ?- }# t5 ^1 P: i0 P
- 0.0705882: 452 bolo tie' r' V8 m2 ]- z- {1 k7 F5 X$ ~6 `
- 0.0588235: 627 lighter2 Z* o9 X1 s' L# {+ ]8 e6 e! ?5 V1 q
- 0.0352941: 701 ** towel
复制代码
$ L4 z- e0 c1 P* ?2 L W8 @1 K- g5 ^+ X( ?

3 s' h7 J' \- k( |6 Z) W3 Y3 C+ ~# Y- 0.121569: 656 miniskirt
- w" E* o+ G9 a# k" w4 i* Y! o! C x - 0.054902: 835 suit
1 r3 x: k }, G) `# ?* m - 0.0470588: 852 television- W8 h8 J) p O! A ]) z4 x
- 0.0470588: 440 bearskin
/ R/ V$ T6 }( o# ~! q6 g - 0.0392157: 679 neck brace
复制代码
- u) I+ e/ c" y4 ?0 T7 i p% p L- C" ~5 U+ N" x* u8 ~
 # N5 M$ X- e. \# J) H9 e4 I, j* \
- 0.65098: 918 comic book
/ m3 H/ M% a5 \9 [/ _' b" p - 0.172549: 747 puck
% L: S, v; Y$ v q4 \4 l1 N - 0.0196078: 922 book jacket4 [; ^" o' M g$ }9 W2 g6 l* e% z
- 0.0196078: 723 ping-pong ball4 w3 h$ _9 c) @" b* x6 ]
- 0.0117647: 806 soccer ball
( @ M! h: Y6 c$ a: |0 z7 A
复制代码 5 N: d0 Q& w# t8 N
+ x" _$ T- W6 a; T
- g, f, a7 Q' n' B
/ y5 o9 g( V5 V$ E- 0.678431: 918 comic book# t+ @1 L0 k4 U
- 0.0784314: 418 balloon
1 x$ c; Z) j& G, B! z - 0.0470588: 880 umbrella
) O# I) I) i& ?! y9 F - 0.0470588: 722 pillow
% l9 J D+ b6 K - 0.0156863: 644 mask
复制代码
8 }: ?( v0 V8 c. Z' F5 V' n3 R
. F! X* o, g- R: }' t2 f
2 {/ s& ]. ]2 q' r5 x- 0.184314: 585 hair slide9 o6 w+ b) u' ^; S* ]# q
- 0.156863: 794 shower cap7 T; l0 n7 o- D: A6 U& ~
- 0.0941176: 797 ski mask1 L Z, L G. C: F: |" q& D
- 0.0431373: 644 mask
# y4 f6 @. Z% u* j: F9 } s* Z - 0.0352941: 571 gasmask
复制代码 4 J; |4 a5 i4 _& g# U: K' |
. a7 r( I/ Q: o% E. G9 b
十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。 8 c( b7 z- ~% {4 F& m/ d
据官方介绍,i.MX 8M Plus处理器内置NPU,可达到2.3 TOPS(Tera Operations Per Second,1TOPS代表处理器每秒钟可进行一万亿次操作)算术处理,并实现先进的AI算法处理。并且NXP为i.MX 8M Plus处理器的NPU提供了一些特定用例,例如能够处理40,000多个英文单词,MobileNet v1模型可以每秒处理超过500张图像的图像分类。 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html
+ }" Y# X1 f" ]* X9 i# U( E. C# N1 y9 }$ \- W2 R9 L
|