
* t# i# H3 w* A+ j$ h作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html
2 \8 J* Z# ]( C
' h. k) X$ \$ c& |% q飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。
7 t- W8 H! X2 w- L( o; ^本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。
Y0 W/ a7 d% P% R+ b$ J, P一、 NPU的图像识别例程
) L C' f) r6 L4 E+ a; E3 m在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。
! e' S& S9 P9 g/ u% N 3 ~) j& G" j# ]. e- j$ O* S( a. i

5 k4 ^1 I' U* ~8 Q* O
" E# m: |5 K! j9 F将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
. T# o* `' K: f* d' }
! g$ J7 o* z+ h- c, C& M3 e' M再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持: ; V$ [1 t; b# T0 }. R
7 q1 B0 k5 j! m# c# a6 [! J
# x6 g. G# ]* [) ]( T9 |- libm-2.30.so
& K. j8 J9 L/ `. [. e( f - libneuralnetworks.so.1.1.9
! |8 Z" ?3 L. N, N! [ - libnnrt.so.1.1.9% \, A5 }; g6 k* ^: N8 O
- libArchModelSw.so
7 o" G- B/ s5 Z* h( Z1 h - libGAL.so0 h9 y3 P" d" T. a
- libNNArchPerf.so0 C9 B8 p& w' |' s
- libOpenVX.so.1.3.0
) ]' P% S J- p% E' G% u4 D$ k - libovxlib.so.1.1.0
5 a, ~& [% J F; y - libVSC.so
复制代码 1 o1 E/ h" G% M- W/ ]( |
% Q0 ]% c+ r- v) Y) V$ T- P e其中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/),再次运行:
# Z, i/ B" I; o3 E8 K ) o! M2 o0 }9 C/ A: t( b
/ N8 K) w w7 {: Q" A# m) o
可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。
9 n4 s1 a) P$ g, ~. ^8 s1 W; K1 B D二、TensorFlow例程验证
- N) s/ P3 c" T; J/ j: n# Q飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。 + |( l7 B u' k; V& C

" V1 `5 M7 B+ \ j- 0.780392: 653 military unIForm
j0 F3 E) Q- U; P5 C9 C) h - 0.105882: 907 Windsor tie# F# M I" p+ X8 G; ?* ]2 \
- 0.0156863: 458 bow tie
" w5 B) Y0 P! P; h- N - 0.0117647: 466 bulletproof vest& L9 d/ o, a$ S6 W' r& l0 \9 u" a
- 0.00784314: 835 suit
复制代码 7 C1 P8 X7 s: I/ S) E. ?
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。 8 C- b- z5 j: s
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果: 7 n+ ~) o/ l' ?& {" l6 ^
( J3 x7 T' a! a3 g$ Q% x; _6 a2 G

3 V" ~* b8 o- F* @" _
$ {. M* ]. c+ {& u/ R4 Q1 z
- 0.352941: 274 dingo
+ c' b+ ?! k' Z$ f$ k0 s& O6 W - 0.254902: 265 Cardigan+ q6 ]6 D% h: s# U; l$ }5 F
- 0.184314: 264 Pembroke
; \4 j: ~: B9 C - 0.0666667: 163 beagle* ~1 }9 O/ ^. H- W8 c
- 0.0156863: 354 gazelle
复制代码
# }3 z/ {+ E, u, I) [, M e. P: `" x8 u# s) r1 y' g; @
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。8 H, e& F& s+ w. V. a- _% |
9 `+ o' S% c: ~再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中: 6 @: j& {( W: x# ~, N

* v) q) t6 q8 U3 d* E4 f- 0.160784: 639 maillot9 W& S0 M9 I9 c" K
- 0.137255: 436 bathtub4 P- w" `/ l; i/ y! Z) T2 V) M& y! Y
- 0.117647: 886 velvet
# i5 D/ T# I6 R2 t5 _( n U# T - 0.0705882: 586 hair spray: s7 y' w4 e) O1 T( I- Z
- 0.0509804: 440 bearskin
复制代码
9 c! y5 i5 ^3 R9 R4 r1 e
3 H# I( T0 S) H. P% k " G- M& K: \% B, E, p$ Q
- 0.972549: 644 mask& R. N! p2 L2 l" u5 d. a
- 0.00392157: 918 comic book: O( w7 T* p2 H2 G7 \# X
- 0.00392157: 904 wig, F. } y2 V9 M7 B/ ]: ~
- 0.00392157: 797 ski mask
( W, |9 _/ K- v$ v d9 L/ X - 0.00392157: 732 plunger1 n- p; w N& Q8 [3 r# u4 R
复制代码 2 o) P) J3 P; y# N4 F2 c1 H# s
) N; B$ M# N; t

5 Q0 Q- k4 O) g, E- 0.380392: 583 grocery store
' L: G* }! y1 w) l/ @3 O - 0.321569: 957 custard apple
' u4 J; S8 g* Q- X1 u; }. _ - 0.0862745: 955 banana3 O% T2 O8 d6 n+ e
- 0.0352941: 956 jackfruit9 ?# m ?8 J3 k
- 0.027451: 954 pineapple
复制代码 A* Y/ A3 F, ~+ Y: g/ [; ?3 g) i
$ ^1 ?1 C7 v6 N+ G + D! H: G. G0 ?$ F9 Z5 I
- 0.254902: 918 comic book7 a, ]( U- u! H/ A$ b! b7 D( A
- 0.0470588: 771 running shoe
: n* r: O. t ?; g9 |+ ~9 p+ e( s - 0.0470588: 474 can opener
! f( f0 O; [6 y9 r3 H - 0.0470588: 412 apron& |1 f9 B# Y% v/ f X1 G$ P' a/ q' \
- 0.0392157: 794 shower cap
复制代码
2 H- H" o+ E! Q: l
5 b9 ]+ R* k" ~$ Y& F* P Q) H
1 E [- u1 I1 K3 Q8 P5 G9 Z- 0.52549: 922 book jacket
J1 d( m4 O d V& e - 0.0705882: 788 shield* h1 u6 U" X4 ]: L% J: X
- 0.0705882: 452 bolo tie
1 O8 `) T, |: c, H- S - 0.0588235: 627 lighter
! ?6 a% @6 K2 @, X - 0.0352941: 701 ** towel
复制代码
h+ p. s4 n% C: x! I; A2 M; _: R* y0 S$ l9 Q- M) U# p8 _
 7 ]' c/ |, t/ o# {# |
- 0.121569: 656 miniskirt
3 O* c0 E, |6 K- Q" d - 0.054902: 835 suit+ X) g% a I; y8 |( C3 [
- 0.0470588: 852 television
r$ K1 u) W7 q! p7 T& ?. z0 v - 0.0470588: 440 bearskin
$ e' N! l: \! N: G - 0.0392157: 679 neck brace
复制代码
9 x8 M* ~# ^; k, _0 c4 m% o# p) I7 G) m3 {8 P4 v. T% d% u

9 E" a5 K0 `; U! A6 f2 D- 0.65098: 918 comic book. j S5 j# n/ b. c8 V
- 0.172549: 747 puck; T2 w) P; Q: H0 c
- 0.0196078: 922 book jacket
" m' j4 Q) [0 r O# z) Q' y - 0.0196078: 723 ping-pong ball8 h6 m3 w& d3 ]$ A" @3 d
- 0.0117647: 806 soccer ball* G( u% w0 k# }' G( h4 ?
复制代码
) Q( _+ z1 W& H; a
' f2 a1 N9 Q$ N 0 u( c: k! s; ?$ s6 ]
7 p t& z2 D. l# {5 X" U- 0.678431: 918 comic book7 G8 G$ Z+ v0 O# A+ d9 l) W
- 0.0784314: 418 balloon
: G( U( M( E) E3 d! y7 _( ` - 0.0470588: 880 umbrella
1 z7 }; @+ ?/ c) M1 h6 j - 0.0470588: 722 pillow$ X( @" ~9 a7 V. }$ M% C* a# \( S2 M
- 0.0156863: 644 mask
复制代码
/ J; ]* t5 \" x, }/ l. t' z3 T0 B( L4 T! y1 ?+ g( F

, s: p: [5 ]' D. L- 0.184314: 585 hair slide
6 ], Z- P, w4 E& i - 0.156863: 794 shower cap
g. A, f6 {$ d - 0.0941176: 797 ski mask4 @4 P. p7 u% V: O( _8 N5 Q2 k7 d9 |* X
- 0.0431373: 644 mask% w- Y+ P5 K/ H- i# w; T/ H+ m, q* S
- 0.0352941: 571 gasmask
复制代码
# C; ^* |$ m0 j$ G, p6 l$ g9 [3 f
# H' e' u q0 V: j- N十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。 1 L+ }' `9 n* a, ^$ Z) ?9 g8 n3 v
据官方介绍,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 + |* r+ A# H2 P6 b
r- g& u6 h6 Q9 ?0 |
|