 6 o2 ^3 u. x' U, B5 w! i
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html 7 ?( |# Q' f5 ^3 _8 q
2 ?) W6 R C% [/ j' t! L飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。 , Y, s# o8 F" R* O! `
本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。
& y3 [* e- ~& a一、 NPU的图像识别例程
p9 @) g7 h- m; K; M8 f; k* Y6 d在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。
) g$ r3 S- O1 L' j" o, y ' M; P5 O: J( u6 ~* F5 l
 $ D5 D4 v1 k1 L; h" C' X |
9 k2 X1 R& L2 e3 w0 E+ D
将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
3 g. G+ e, f7 o( E: v3 \$ {! }
: D0 w: P( ?% [* n# d# ?& R3 R+ p& e再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持:
, ~5 h$ g' P1 I# `# \; N- W
& r, { p$ a A: V# Z
# i- N* q8 k/ W1 P' s, t7 _0 h( S, a- libm-2.30.so3 L# Y! }# d' m, O8 ]+ g8 ]
- libneuralnetworks.so.1.1.9
4 U1 k7 F( f: n - libnnrt.so.1.1.9
' ^8 v9 a1 J3 x$ }- J: b - libArchModelSw.so- k1 V% m& `8 v0 n/ y3 g
- libGAL.so
, q- w- ?, Z# e( f" r - libNNArchPerf.so! t- u& b3 b+ N$ V
- libOpenVX.so.1.3.0
( F0 p9 U4 K; W" V+ E - libovxlib.so.1.1.0
8 t' w9 e- }0 Z+ A3 s2 K - libVSC.so
复制代码 6 |4 f1 p& I' A. l+ A9 w
/ I" F- O1 K2 i0 |, ]- @
其中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/),再次运行:
: T& F% W- A8 j8 ^
/ y/ I. s' I$ \8 G
' I4 L3 w0 X/ m% g可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。 ; X" b# a! ~( W6 m5 L; x+ m
二、TensorFlow例程验证
( S3 I- {4 o0 }* j& z飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。
# n6 f& v! x( }/ y5 ^. m ! @( K- A. k* G
- 0.780392: 653 military unIForm
2 `. v( X2 _/ K7 C* X$ y - 0.105882: 907 Windsor tie
( [; p! a# e* a6 L* Z - 0.0156863: 458 bow tie) K4 ]* t4 x" u2 v" W) I( q3 w! q; O
- 0.0117647: 466 bulletproof vest8 ?$ I3 D' U1 F) B3 W) l
- 0.00784314: 835 suit
复制代码 ) B/ V* ?& m$ j& E( _1 n- x9 n
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。
& l3 z" E% |- r4 E: o: G6 ^我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果: . F1 C9 Z8 z. d5 g; x
# @- O" { R* H) ~* Z7 e
: }- e k6 `, G! i- g# S1 z7 |( u0 V
6 G' J" K7 H8 h
- 0.352941: 274 dingo
; `" s( A0 @4 ]& J" R - 0.254902: 265 Cardigan3 b1 T. N3 F5 F! a% k/ N
- 0.184314: 264 Pembroke/ H8 x( J) g: w, M& S
- 0.0666667: 163 beagle! ]5 d4 _: e- y: ^" w
- 0.0156863: 354 gazelle
复制代码
3 G2 S% C2 l3 y4 R
* I7 \2 [2 i; V, e7 [2 f; W6 i& X$ I. ]35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
4 Q4 {1 g; O- a7 v6 @9 [1 a0 F8 h8 M, }: w
再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中: , d5 {$ C2 X/ J# D8 W

1 [$ V8 G$ s/ `. U$ L0 Y- 0.160784: 639 maillot/ t. j4 q7 H8 j/ O! A
- 0.137255: 436 bathtub
x3 @, x3 k j4 H+ w - 0.117647: 886 velvet H1 L1 W5 f6 h
- 0.0705882: 586 hair spray8 m* f3 p3 S7 A- y4 P) A0 ]# w
- 0.0509804: 440 bearskin
复制代码 , \. e/ ~: w) u# e; ?; o: b
# M0 ?% l& r+ U
 & d! }. s& A, G2 s; S
- 0.972549: 644 mask
+ D9 i+ s0 t6 S0 }! P( f1 U - 0.00392157: 918 comic book
% U& W, H) ~) ?; c6 O - 0.00392157: 904 wig1 m$ k6 u2 U ?6 k" R1 H
- 0.00392157: 797 ski mask. |, a# n5 |% {; J' l: z5 S$ v4 E
- 0.00392157: 732 plunger+ m% _- a% W3 @3 y
复制代码
$ [$ s, |% x, _# y
. N5 R+ m- \2 q# B/ @6 @7 l# W' m
/ g& R3 l. o9 N# D" w; v L2 z; B- 0.380392: 583 grocery store
( S# u" I: }. C3 R) ~* K5 x: D - 0.321569: 957 custard apple
" p. p9 ?0 v" J( t K* Z0 m - 0.0862745: 955 banana- n' s+ {3 ?0 D$ ~9 b6 C
- 0.0352941: 956 jackfruit
2 Q+ T9 r% m; t: w9 t( L3 C* s ~ - 0.027451: 954 pineapple
复制代码 7 `. P& z7 ~6 {
3 j' S3 K" Y9 F& m
 2 s6 j" J) q; ^6 x3 U
- 0.254902: 918 comic book9 v3 I5 D A6 a8 R3 Y# @: {7 W; t
- 0.0470588: 771 running shoe- }6 H4 @$ n0 i) K5 @
- 0.0470588: 474 can opener
- e% u [$ S: S* ?' d4 f e - 0.0470588: 412 apron
# q& J! s+ m: c; Q - 0.0392157: 794 shower cap
复制代码
' g# }! }3 p- D* v: |3 h# F9 r N# _8 D6 ]+ \4 @. a, Z% c6 K# J

9 l* z) O3 C9 K# ~- 0.52549: 922 book jacket
) H4 ?: D9 z6 S# z6 p" T' L5 o - 0.0705882: 788 shield# ?6 h) _ ]8 E* c2 h
- 0.0705882: 452 bolo tie
0 b" z+ P7 |, W: M - 0.0588235: 627 lighter$ s8 V' `8 o4 \! r
- 0.0352941: 701 ** towel
复制代码
7 k, t( v+ Y A0 r: `, f* ?5 X; F! `- v% o% q6 }

9 w, J5 r& t: y1 y5 s- 0.121569: 656 miniskirt
7 f- M, Q* H8 S1 } - 0.054902: 835 suit
, V1 c. Z4 S3 K( T9 h - 0.0470588: 852 television5 X' [: G( q4 x7 a% [0 Q" p. [( V
- 0.0470588: 440 bearskin4 u- v+ H0 m. }$ v& H0 p2 M
- 0.0392157: 679 neck brace
复制代码 4 u5 R, u- T+ [1 w. m, {# O& z
7 V. W+ J1 x* H& H0 u$ K1 r ; w2 q) {% B/ ]
- 0.65098: 918 comic book
! n& q' p9 O0 o0 { - 0.172549: 747 puck
( k H. d! m- n& [ - 0.0196078: 922 book jacket
+ a! h, \1 K% W - 0.0196078: 723 ping-pong ball' w' W) V, n0 E
- 0.0117647: 806 soccer ball
5 n# ], Y# l R6 I
复制代码
/ t: C4 s# s" w6 f" X8 r% D: ?: ~2 h$ Q$ H2 f* T

( i' T' Z# L5 k a! i# I, e1 {( [! _) f
2 f4 U- k" b" k* d- 0.678431: 918 comic book) z% Y( B3 _% \1 S e8 v- h5 E4 G
- 0.0784314: 418 balloon. Z# y0 q g! h! G7 J P
- 0.0470588: 880 umbrella4 Y8 N6 A' ]# r7 h
- 0.0470588: 722 pillow: B) [ M5 |9 j- y) d
- 0.0156863: 644 mask
复制代码
4 J5 N3 q! g; w: H0 g ?" K9 C1 _& ^2 R
 / b9 P. [ G& y" b$ }* d
- 0.184314: 585 hair slide
0 @5 @8 ^4 R9 \ `8 x9 ^9 ` - 0.156863: 794 shower cap" G1 ]7 A+ K' E9 M
- 0.0941176: 797 ski mask0 S! t \! A. ]+ c. Z
- 0.0431373: 644 mask, H" f# O! m6 s$ W3 v: I
- 0.0352941: 571 gasmask
复制代码
, W$ |$ A; F2 \9 f
8 B$ s: d/ S7 B% m: g7 {) v. G十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。
7 q6 J! X$ `2 |7 J! R7 H/ T6 r* s* k" f据官方介绍,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
3 S& O( q1 W* x' e- P
' P/ ^0 ~7 Y3 ?2 W9 I# @9 ^ |