 1 F/ C: y" ]7 D# q2 ~0 {
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html $ h) d1 v9 W2 L
- J; v N! }( W1 v飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。 ) R- u" }1 c; T5 J
本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。 + A8 D+ T& H3 a! k0 r
一、 NPU的图像识别例程
" x5 B+ L6 x$ F# \在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。 $ r" o* Z, B2 F3 o

) ]8 O2 r' o: ~* M
6 e7 [/ I0 z$ a8 j
# c- r1 B. i6 l: u7 g5 O& g将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
% u. G2 |8 K" h/ I7 G8 s
5 n( r' y8 I$ [9 ]% `/ F+ }; X再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持: . |9 B2 |$ z1 t3 P
- i3 c9 R9 ^9 i [. v. b

! M0 o' C. W, a/ K- libm-2.30.so
( x6 J1 O; _1 F* P8 p7 W0 c+ W' Q - libneuralnetworks.so.1.1.93 N- E* b5 H, u& l. @3 m
- libnnrt.so.1.1.9
' a/ s; S7 [/ u8 ]* a2 v C: W - libArchModelSw.so
# Z$ O5 e4 O: `/ W. ~4 y - libGAL.so; U# V4 R# n* F- v k. U7 u: z
- libNNArchPerf.so
4 ~$ D- A$ S* Z5 I - libOpenVX.so.1.3.0) E+ j4 A( H+ V. J' m R5 a
- libovxlib.so.1.1.0
; L" M9 {9 K+ x$ W7 R - libVSC.so
复制代码 / |; K0 o! p1 I7 v
b, J) q& Q2 H
其中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% f& p8 o9 {; l 8 ^% o; ^. v0 W# t
/ r( A2 H- J: e' V: Q可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。
& {" `( G+ G) ~0 G$ u) f) \' |( S" R二、TensorFlow例程验证
9 K3 O2 n7 E; p0 C4 X8 V飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。 7 S2 o: k3 Z1 B# [
 & T8 R5 [; w! p, c5 W0 i
- 0.780392: 653 military unIForm
" r- q- H- W8 [0 _+ F( D - 0.105882: 907 Windsor tie$ M& Z% U9 t, E- E% j
- 0.0156863: 458 bow tie
3 @! D7 ~8 R) j# O( [/ N6 F) I# l - 0.0117647: 466 bulletproof vest! i3 n Z+ c9 e; b* M, ?! ]# x. q
- 0.00784314: 835 suit
复制代码
( H# x6 [% z' p, ]5 T4 H: T4 J K78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。 : M) H. o6 u9 x( {( }' u/ X
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果:
7 c7 s1 w+ e$ o& j% Z( c1 V# m' r+ T8 g/ h; P

; Y5 W6 a* k+ P& K, X- K0 Q
+ Z6 k; b, H0 p
- 0.352941: 274 dingo1 e3 K' Q3 K# a- q3 o; U; P
- 0.254902: 265 Cardigan
5 Z" ~2 M' ]- N5 U$ z, q3 Q! Z - 0.184314: 264 Pembroke( j! @- Z* l N+ v
- 0.0666667: 163 beagle4 `. ]3 Y' O! x- E( ], T5 @9 n* M6 M
- 0.0156863: 354 gazelle
复制代码
7 E3 }/ |1 R7 e: [; k( ^4 i( L0 b4 u, c2 }8 c1 a
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。7 h# ?; ?3 J- v0 w
, ^7 O9 e4 E! R- a1 z z7 x再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中:
7 D, {1 i0 w% ?5 ^9 _5 @
 ; ^0 P2 s4 ]% ]9 Z( J, p, V
- 0.160784: 639 maillot1 q% ^6 L; z( T/ t1 a
- 0.137255: 436 bathtub
* _5 b% t0 x: N/ j( p9 f - 0.117647: 886 velvet
1 D) y8 q0 e+ o* R; q. E$ N) C0 J - 0.0705882: 586 hair spray
/ g* z5 {) [7 k; m1 @ - 0.0509804: 440 bearskin
复制代码 3 N" U y0 A* m4 |
7 o! u& Z5 H3 c/ L! h
 0 |5 F3 i v/ l8 i( a" c
- 0.972549: 644 mask: x- w9 d* Z$ v# G7 [
- 0.00392157: 918 comic book
: G4 N6 p4 `' i" B- ^' q - 0.00392157: 904 wig
; b: ]2 q4 r- G$ [! J7 W - 0.00392157: 797 ski mask
4 B( h4 B' n8 k( W9 {- {5 r - 0.00392157: 732 plunger
: ~5 S; R; e ^& Q
复制代码
) c7 |; U$ ]( Q4 I
6 ]: L; s- M; g( h8 s, T
6 J( X7 |4 ~2 O% Z; a- 0.380392: 583 grocery store( H' W+ H! c' k+ h
- 0.321569: 957 custard apple+ I; {) Q- r; ]( c+ L3 `1 Z) |6 G
- 0.0862745: 955 banana- G* M' }3 u% g" X
- 0.0352941: 956 jackfruit' h1 d) a% n/ k/ b* o
- 0.027451: 954 pineapple
复制代码 ! P! P$ E" D. i% p: |1 h8 \
/ W7 i' u8 y# S( \/ L7 q, Y, t ; K( F- t8 d; v2 D A
- 0.254902: 918 comic book
, k4 r1 D5 Q( c7 z3 R - 0.0470588: 771 running shoe
# a; d8 A `' K) w3 p" `$ r, w; ~2 i( d - 0.0470588: 474 can opener
% T! W7 n4 L& Q7 x - 0.0470588: 412 apron r3 J6 D( e" h6 t! n$ z
- 0.0392157: 794 shower cap
复制代码 ) r4 y/ Y) L7 v' [( Q( w
5 K9 w9 l9 s( {- J/ T3 o" C+ A

2 P9 Q- G0 V' Q+ x3 \9 q. a- 0.52549: 922 book jacket
$ w: [9 n( K/ _( U W+ P& a, E8 \ - 0.0705882: 788 shield6 H! r7 c* H( S: l+ h) s+ x! F
- 0.0705882: 452 bolo tie
* n" c$ n: \/ W' Y% V - 0.0588235: 627 lighter
' h$ R3 b5 l" f - 0.0352941: 701 ** towel
复制代码
( p( h3 ]+ B' L9 g6 L# R3 S) Z$ j& H% F

* i) o+ O5 H% j6 H* @0 k' @! e- 0.121569: 656 miniskirt- m9 g# \; o& R
- 0.054902: 835 suit
- ]( C+ _0 m- q$ h' x - 0.0470588: 852 television9 X3 |; w9 K6 z
- 0.0470588: 440 bearskin, W9 k! w/ i7 w7 ^* A! Z
- 0.0392157: 679 neck brace
复制代码
$ U% o/ e. m% B+ Z: z: d% [! c/ o2 p) B2 [& H5 d$ g
 4 z# D. V2 {3 f+ h
- 0.65098: 918 comic book
& j9 f0 W( @; t- W. p - 0.172549: 747 puck
7 |) f% T) L* f1 _ - 0.0196078: 922 book jacket
8 `6 z; [# m8 A+ |/ c5 q( q9 K - 0.0196078: 723 ping-pong ball
& g$ i$ P6 j( o4 ^7 W1 M4 e - 0.0117647: 806 soccer ball
; v. p2 Z, t- G2 \0 k E
复制代码
2 R, \9 e# ^' I" j8 k- w
* Y. w) K: |" a$ R- f( U 1 S0 D0 r6 K# W2 P' B
- # d, y- T2 n1 \* {: {" G
- 0.678431: 918 comic book
7 t- X1 \# d. a |# u - 0.0784314: 418 balloon8 q ^% e) ?5 l) I) w! H
- 0.0470588: 880 umbrella/ k# H9 d% y" ]8 k; I, J, e
- 0.0470588: 722 pillow: o+ T1 M& R& X5 a3 g: X
- 0.0156863: 644 mask
复制代码 / ]* K1 G3 z" p {2 [
0 W) y& f7 q6 B" ^0 a/ ~, S/ \ 8 B1 [ C. W6 |2 h
- 0.184314: 585 hair slide: V/ d% y5 J$ L$ h3 _0 k
- 0.156863: 794 shower cap5 w7 J& x, s+ B# i, b
- 0.0941176: 797 ski mask6 J) @$ n& ]& b' O
- 0.0431373: 644 mask" H9 @3 w, r1 ^! F8 Z: }
- 0.0352941: 571 gasmask
复制代码 - G/ `% h' z4 E
! R& z3 d9 g1 u" o3 J& O/ I十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。
5 ~7 k. k" |! \) v- b) P7 W/ H$ @据官方介绍,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
. O# V( {% ]0 h: R. l+ @$ m
" T8 L* p! z9 y$ j- C2 Y |