|

( O5 D* Z# l7 G+ _& ^作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html
# r9 |* |: l. p% u/ l, z+ I1 g3 {
( I4 a# p( F5 k- D飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。
! y% ~! w& x8 h2 g& c! X本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。 . p+ ~) G# f. v$ T& d
一、 NPU的图像识别例程
& v. E4 ^, a6 _2 D5 }在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。 : l' a x4 f/ G- L# l. |
 , {3 G* u" |. M% o6 f7 D
 , D @- h: Y7 I. m9 S
6 a. a D e- H3 g
将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
, J, i7 y d3 x 6 i$ e8 n7 k( M; c$ Y+ J
再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持:
2 N* ]% c, T" o M1 B. s8 I M
; c% \& K2 y/ j1 j: h
2 V; h& o+ C2 T& \2 i0 Y1 M- libm-2.30.so
; Z; k9 T. R* _+ F0 r$ x0 P+ ? - libneuralnetworks.so.1.1.9
" L5 b4 J# Z0 u. R2 W - libnnrt.so.1.1.9
4 q d+ p6 K; k - libArchModelSw.so' y. k9 M! Y2 s7 |" [1 Y
- libGAL.so
, h6 H: }$ E: T) k. [8 L! ~0 x" O - libNNArchPerf.so
2 H1 B; E* r1 J6 g - libOpenVX.so.1.3.03 U8 J2 Y" ^& A
- libovxlib.so.1.1.0
9 r8 \- {3 p) t9 E - libVSC.so
复制代码 2 t+ K/ L- T+ ~8 M
7 F; a! r" `+ i6 _8 p/ b
其中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/),再次运行:
# ]+ |- g& }3 u1 H* M
+ S) g* F% @; v5 H; E) o+ S* O0 S/ U% i1 R9 L9 F
可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。
8 R9 a, t3 z$ V; k. a7 J$ z二、TensorFlow例程验证 " t4 C/ _; k% d- W5 s
飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。
9 ]! z+ n+ m. ^
( @7 m5 t$ z3 R7 z& E/ ^/ M- 0.780392: 653 military unIForm
4 P& o/ ]% f- S# p9 [4 F8 Q3 Z - 0.105882: 907 Windsor tie/ P# _+ T# ?* d; h
- 0.0156863: 458 bow tie
0 i5 b1 m! U6 b# ?* p* P T - 0.0117647: 466 bulletproof vest
) n8 u F' S' R& B- \5 f7 R - 0.00784314: 835 suit
复制代码 1 i( J5 M+ Z i4 I* C* S6 T& V* G$ I
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。 * o' q/ E* ], s+ ?. b
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果:
6 |# e$ I% G, |8 R: r. f$ A0 o7 x# L/ T9 x* \ d% I
& `, P( N$ R' P+ X/ R& L
9 H, S, g& d0 e2 K
- 0.352941: 274 dingo, A: G3 B( [, R
- 0.254902: 265 Cardigan
& e: W3 y$ k+ W5 A5 `: q - 0.184314: 264 Pembroke
& e" ^* X" B+ R& E: _+ V6 i" Z - 0.0666667: 163 beagle; s( x: b# y7 W, s
- 0.0156863: 354 gazelle
复制代码 - v5 S' [4 b4 V9 _" I5 ^
5 f9 l ]# |- B% S H' P, `
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
, ?- b* y g! o2 A' N# `& Z+ D) M
+ n. ]. w- k U再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中:
4 A4 s+ H2 X7 R* Q

, F. O) {: s- ]- 0.160784: 639 maillot# B# t2 {- x- }$ S
- 0.137255: 436 bathtub& B4 B; q- t0 {
- 0.117647: 886 velvet
' d# j' Y" _+ r3 d' A1 T - 0.0705882: 586 hair spray
/ o0 c2 ?8 Y, v' b - 0.0509804: 440 bearskin
复制代码
4 @/ s, Z5 Q! i5 j6 B' k4 P. T
D$ P( m$ f2 q* D! z
9 @6 S3 b9 f$ o9 X- t- 0.972549: 644 mask$ Q5 ^) b- `1 L# q
- 0.00392157: 918 comic book# @7 A# A ^# L
- 0.00392157: 904 wig
$ D" m$ F4 h( B - 0.00392157: 797 ski mask
2 M/ ]$ V6 K! b; x+ a" K - 0.00392157: 732 plunger
; y8 l) ^3 ~& Y0 _6 \% l
复制代码
2 U- M- Z8 Q$ p0 g3 j
! t9 }5 ]* C( M ; l% O( m2 N2 |! ]: @+ P9 `
- 0.380392: 583 grocery store( k7 k5 }. r) k. _) p6 U
- 0.321569: 957 custard apple( S5 v, d! W% T# i, U
- 0.0862745: 955 banana, D2 h; W; I$ C, S' F
- 0.0352941: 956 jackfruit8 f, ]1 B6 I* c4 P' V
- 0.027451: 954 pineapple
复制代码
; @6 h, U7 C! j4 R. f5 w! L- Y7 _% W5 @: x9 c

. c7 F V" [3 r0 V6 A( I- 0.254902: 918 comic book; r6 ?' ^$ s7 F! r# Y1 x
- 0.0470588: 771 running shoe+ U# Y# z& M0 `5 S2 P, U
- 0.0470588: 474 can opener% \* ^8 H3 ]: P% ~! v, B- }& d0 R
- 0.0470588: 412 apron! u' U% T. l# n2 H1 _% V
- 0.0392157: 794 shower cap
复制代码 2 J1 b# ~2 C, @# |4 [% b* m# _# i& [6 q
3 A$ r/ E/ r$ b. F ; n F/ E- C' ?8 f7 g0 S
- 0.52549: 922 book jacket
; ] w" Y4 S0 T& [0 t# p; q }5 j - 0.0705882: 788 shield
" R" o/ _( y( ?' x - 0.0705882: 452 bolo tie/ [8 G: k) P2 _+ J, W& r
- 0.0588235: 627 lighter
/ U& C5 y2 M) E7 U" x4 B - 0.0352941: 701 ** towel
复制代码
, i( l) b+ I, L7 e5 Q3 ]" ~* v8 J7 I- r
 : f: T) X7 H3 c" Q: {( S, X* J
- 0.121569: 656 miniskirt
; @6 B6 \% e: _ - 0.054902: 835 suit% v/ `, |; x$ r7 Y5 ], {/ w) a
- 0.0470588: 852 television6 |: X5 B8 j" O8 d9 X+ f
- 0.0470588: 440 bearskin: I* g( ?0 N! O1 U3 u, i5 Z
- 0.0392157: 679 neck brace
复制代码 : p% _$ y% p; {1 Z- D9 g
" ^5 a0 P1 y: y/ r9 L& d: T+ z
 - k5 o: T+ K( X" z! j; u* e: v
- 0.65098: 918 comic book
4 L) j0 C0 n" I0 Q( A5 }) j - 0.172549: 747 puck
7 z6 i7 j" R K7 Z" i5 b - 0.0196078: 922 book jacket
. k7 r. s& b" S# E' |1 y - 0.0196078: 723 ping-pong ball8 H% A u3 I5 G) ?) @
- 0.0117647: 806 soccer ball
# e1 q6 E/ T- A0 [' r
复制代码
# Q9 U; J8 W8 `" t: g) ~
: P+ q3 v" n/ k* O 6 `2 Y7 _$ l% c; d, R
1 N/ K5 [" p& @/ C- 0.678431: 918 comic book
2 L; _* H1 t& p! P, v: Q! ^, _( h8 J - 0.0784314: 418 balloon
9 q! z% |9 W0 ? - 0.0470588: 880 umbrella
% H# `$ @6 t$ U% U. b; s1 Q - 0.0470588: 722 pillow
0 x; R! n/ n) ?' w* ^6 ?* J2 k - 0.0156863: 644 mask
复制代码
% }% c8 t/ L8 }4 D$ ^( v. X4 o/ M& I$ ?3 z4 [3 l0 B

3 P' O% i, z& @- T. ~0 F6 K7 T# x: r- 0.184314: 585 hair slide, g6 a* ?- a( a+ m% @& _2 `
- 0.156863: 794 shower cap
; y/ d1 S. F2 W Z2 v5 z" s' d - 0.0941176: 797 ski mask
# x. B5 w; s$ Y5 [6 { - 0.0431373: 644 mask
1 X# u+ {* C1 u% S# p; [' { - 0.0352941: 571 gasmask
复制代码 $ h6 C1 q3 B% D8 X
, y8 B3 `" _6 C5 D/ M0 \5 Y. n十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。 ; `4 w* Z' D1 n P5 X- W% Q+ G1 ~
据官方介绍,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 " X9 N2 `4 _" p. H# T. R
) a" ], r" y6 K5 y% J0 X |