|
 ) c* U0 z2 @% j& \
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html
& E1 H5 {# u$ m9 ^8 e- n
0 @& q ]. j2 w: n# G7 g飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。 ; T; \* H- d5 ~: E8 t& q' }
本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。 2 F k! z, \* H2 R& q3 U% \
一、 NPU的图像识别例程
$ b' ?# H; q+ p! A C: b在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。 4 f1 g: y t, O, ~8 Q& T
 " D: g- Q7 c h, r" n' v9 x: }/ y% q& z( A
 0 b2 i! U4 K% w( w+ Y L. `( v" m
! J. m, i, h! W" e }8 b% l2 F将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
/ l3 Q, L% g2 v# i9 q4 @ & {% q7 r# [/ U7 h( k' F3 c: O. u
再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持: % S- k& ]; p% [; T7 i0 B5 d5 R E: u
% W! e5 o/ R( o" g( H) l0 h + d7 a/ I; z% R/ d' S0 n7 P
- libm-2.30.so4 }+ r- S' ]3 g$ k& H
- libneuralnetworks.so.1.1.9" X( y6 o4 r) \1 o% {% q
- libnnrt.so.1.1.9
8 Z$ r1 x6 ^6 Z& D - libArchModelSw.so
+ ?" }, w& U5 f ~/ o w - libGAL.so
5 ?2 }. j' C4 d" a4 U - libNNArchPerf.so
7 g X C, c% i) I. u8 f - libOpenVX.so.1.3.0
C+ |2 b! s, a - libovxlib.so.1.1.0/ g2 l) _1 D( m h |, ~
- libVSC.so
复制代码
3 w& A4 I/ K5 ^$ I5 B) p8 `; h* d0 j- V* e& D/ t1 O4 }6 r. O5 g
其中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/),再次运行: : F) k6 l c; S
 ! z- j( i3 v) o) |/ N
9 h, T7 n! \" P$ ?. D) X可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。
7 \. \: D) ^4 k" \/ M- o% ?0 M& w+ J二、TensorFlow例程验证 - E1 s7 ]. T2 U2 X
飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。
$ `0 ^5 ^$ N* ?' B2 D, @/ w8 { ! |; s0 F6 L( X+ O# g( S
- 0.780392: 653 military unIForm8 o. Q( ~! j* c8 M
- 0.105882: 907 Windsor tie
* n8 g/ P% d) s7 ]3 w5 J - 0.0156863: 458 bow tie
+ `) m. {4 S) x% G! V - 0.0117647: 466 bulletproof vest5 W; G) c7 I* `- y
- 0.00784314: 835 suit
复制代码 - P; ~# {8 t& t- x+ R
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。 , j- _ b8 {# d, f b, B/ `' G
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果: Z, Q, e: G2 s) T* \. m, q
3 V; W6 d% ]- u# e
1 Q4 W8 b6 M9 r' \* J1 k8 i
8 W( S6 u; j: H: Q; Z
- 0.352941: 274 dingo9 ~8 [2 R2 y0 b( I5 u
- 0.254902: 265 Cardigan T+ \; \/ z3 J/ _6 f9 t6 }
- 0.184314: 264 Pembroke
g3 }5 v2 p6 L, y( W O' U) e/ p - 0.0666667: 163 beagle
/ Z6 D6 {8 o5 S4 w8 V - 0.0156863: 354 gazelle
复制代码
x9 q/ @% d; o8 _
, Q0 C$ U* l) |6 M# E u2 `35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。 t- P5 ]+ S4 @; p- t
5 u3 o3 p2 w& n% C `& z* i
再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中: 5 h$ f) @, P7 c( k0 J a; P

6 g7 X" }) S3 F9 w0 d( G5 m- 0.160784: 639 maillot
N) A) l0 M$ C7 l9 c0 A) Z - 0.137255: 436 bathtub
- w* q4 i$ q; S: a- {( k, k6 t - 0.117647: 886 velvet, y$ d0 _9 w( G9 B' s6 `! w
- 0.0705882: 586 hair spray j4 G* r. {& L8 G$ N* V
- 0.0509804: 440 bearskin
复制代码 : a' [0 Y4 U3 t9 F8 `
. s& O) p7 I" `$ V/ y0 S ; b# K! s; J& F: u! E8 I+ l
- 0.972549: 644 mask
5 A, q, V# `' ~* Y c/ \9 x - 0.00392157: 918 comic book2 }1 l9 @3 t8 K+ k. a: D# p6 K# X
- 0.00392157: 904 wig9 x7 k4 o, O. Z* b! ^2 u
- 0.00392157: 797 ski mask& o9 i0 Y: A8 n' \& G, T5 }7 Q
- 0.00392157: 732 plunger4 c$ W" N6 B. f! |4 Z; X* \1 r5 j. k
复制代码
; T7 \% B# L5 z$ M/ K% `( s. I: P5 l8 P
 1 {; l, y b. d7 w
- 0.380392: 583 grocery store
' ^& U( D6 x, y - 0.321569: 957 custard apple2 ~0 c+ j [0 U1 l" k
- 0.0862745: 955 banana1 {% P8 l" D* _3 r: ~2 a/ S
- 0.0352941: 956 jackfruit0 }, g, f) H' p% r1 r
- 0.027451: 954 pineapple
复制代码 8 _8 E4 {, U P
) [. [- E: `/ u# N, r
5 `: r) Y$ B4 n% m% w& l- 0.254902: 918 comic book
5 x( y% L8 q I2 W - 0.0470588: 771 running shoe
. w3 K2 G4 y9 P! B - 0.0470588: 474 can opener# J' l6 a2 a& z
- 0.0470588: 412 apron
+ a8 p) }: g; n) t; u9 @ - 0.0392157: 794 shower cap
复制代码
' `0 _: z& Z5 `7 c4 S
, {. H+ W5 C. O- ]# |8 y
( n' f& Z2 u1 v+ A- 0.52549: 922 book jacket \2 R r, i+ w. D+ _9 c2 u* d
- 0.0705882: 788 shield" s. t" u" R2 G0 A& w
- 0.0705882: 452 bolo tie
7 P- s( b# P- E; B( n+ } - 0.0588235: 627 lighter3 s2 _/ t4 V/ y0 ?5 J9 E
- 0.0352941: 701 ** towel
复制代码
Y8 G" b+ V) i8 t' `
' g, M( q: k$ v
- V% p5 q9 _' F7 ?& t/ A: H0 X2 `$ z- 0.121569: 656 miniskirt2 o- C" `& q' y6 t- n! }
- 0.054902: 835 suit
7 e! h% I( `- _7 G( V |8 D3 G- }. h - 0.0470588: 852 television
$ X ?" m8 T V! O" ~" ^ - 0.0470588: 440 bearskin& R, F o& |/ E3 c
- 0.0392157: 679 neck brace
复制代码
9 q, ]7 r3 A! w/ x
4 U Y5 w6 N- W# a- F* |: h * b' j, |& b9 f) H* g/ J" @9 ?
- 0.65098: 918 comic book8 p' Z3 K- J$ V: B: y$ i
- 0.172549: 747 puck% e+ {( p& a- P! A* p! |' D2 j
- 0.0196078: 922 book jacket
8 [$ O- V8 |4 d" u! @. q - 0.0196078: 723 ping-pong ball
! _( p. k- x1 r- s- D8 Q5 w - 0.0117647: 806 soccer ball
; u5 L+ B2 q6 e9 k/ _( w
复制代码 # h4 e0 t2 Z" m( c; Q* t6 u5 d
* E* i1 k* j8 |& @2 t

4 c6 g' i/ E9 e. E
! P# [: |/ m! u- 0.678431: 918 comic book3 d( V1 m1 P4 E
- 0.0784314: 418 balloon0 N" N7 ?* U( Z" c" p
- 0.0470588: 880 umbrella
$ i( c' `, a! y5 W - 0.0470588: 722 pillow+ \3 j) i8 T2 m6 o/ H
- 0.0156863: 644 mask
复制代码 ! x; p9 l6 O- W6 J! ~
5 l8 K" e) @& b1 x* Y2 b$ G8 W
 - g3 W8 t/ P! m- V9 V
- 0.184314: 585 hair slide$ n& u' G0 Z4 r: h" ~& ~1 z
- 0.156863: 794 shower cap, X2 A" t8 ~2 _
- 0.0941176: 797 ski mask
( \/ ?5 i- [% \1 W* P - 0.0431373: 644 mask( z: q1 {" \& V' z s) A
- 0.0352941: 571 gasmask
复制代码
$ H- b, {9 e( n. O" C; @+ z4 a7 [% v3 q b- l, N$ p* H
十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。
( o) ^; m6 n2 E! V: w' n据官方介绍,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 $ ?# Y1 o/ V- R/ X6 V( e" k: @
3 U2 _) i, n4 B+ W8 J* i' Z) n+ l |