|
 . Q7 k; `1 z; z* O! h7 _9 o, k o$ w
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html
a. b( l! X# N( V: M1 E. u. j6 V/ h" I
飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。 1 N( t4 n$ Q8 [9 e6 ~
本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。 + U- F1 d. T2 Z- _6 t. b3 J* f8 J
一、 NPU的图像识别例程 + q+ l: {7 L: R- x* i" y6 j
在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。
: y. t4 N+ l8 L b% {# ^, a
5 ]( C4 j7 V" d! Q$ j
9 u5 _* s) E- |5 x3 X; O# C2 ~
9 Z) ]0 B) @3 X8 M& [将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
1 Z% Q+ O2 g4 n% ]
3 O: B9 n& V4 x: m5 F3 c( v. m再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持: 6 E! l2 ?8 a0 ]* C% F2 H9 y
) I! ?" K" v: [5 f

( a' W' ~9 c' k. D: p- libm-2.30.so6 z7 U: T7 s# L, O8 Y/ P
- libneuralnetworks.so.1.1.9- M; t @& t. t. X2 o' {. o- P5 E
- libnnrt.so.1.1.9! Y2 {. U1 S1 w) h- T
- libArchModelSw.so
Z" Y% r. c+ X/ T - libGAL.so$ p- i$ l! o$ ^6 M0 y
- libNNArchPerf.so
+ y1 T, p. Y2 g; a G! A8 g& @ - libOpenVX.so.1.3.0
4 Z/ u C* R: U - libovxlib.so.1.1.0, \2 m1 l( }7 l3 R4 [! f% {# I- {* {
- libVSC.so
复制代码
8 B& |$ Y, ?6 O( u. ?5 H8 ]8 a# E; l4 _% u G# q
其中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/),再次运行:
( }3 N# ^2 C, x; j( f+ C! Y+ E) A 5 @$ w2 m4 g0 }# h! M, ^
6 V: m2 J2 `6 H* h4 N! g- h
可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。 ! a- w$ e, B4 N. T1 J8 [4 o
二、TensorFlow例程验证
p' T8 Z" C0 U0 s; U! i飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。 , c4 N* z3 O. P% N2 l/ ^8 U: a

) a* q/ q5 H8 h2 S6 {9 S- 0.780392: 653 military unIForm
6 N9 E2 E* z- `0 X! ^( ]1 e) P2 t - 0.105882: 907 Windsor tie6 x+ O: T* M8 E0 x# o
- 0.0156863: 458 bow tie
# e% {! t9 b0 b - 0.0117647: 466 bulletproof vest
8 D9 X1 [; q8 }: E- T T9 { - 0.00784314: 835 suit
复制代码 4 I3 @5 Y! i: m5 o+ k: {
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。
# s: q% l, D$ K& q% ?我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果: + Q" a3 O2 f* F- l3 [ {; }3 t
* j6 ?- f/ G% o 2 Y: x' I: o9 n |
; t" w0 R6 A* o
- 0.352941: 274 dingo
. Y+ p2 F; H2 h) `3 G9 H - 0.254902: 265 Cardigan
9 r0 N2 v9 o( `# L& q7 S - 0.184314: 264 Pembroke
) k+ ]- T1 l5 c - 0.0666667: 163 beagle
! y1 h. T/ i8 c/ W5 D$ S) u - 0.0156863: 354 gazelle
复制代码
0 F% A4 e' A: d2 I
: t, G8 }; s: w35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。4 D5 m- z, u/ S& O
) q8 ]; f. c* P$ { s7 V
再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中: ( k+ i) @0 L1 l$ @- u6 f! ?' A

m" d. s( A2 [+ G. ^+ H8 p( l& W- 0.160784: 639 maillot
* I* N5 D9 y- x! e2 f& Z- [ y: c; x - 0.137255: 436 bathtub
h5 C0 t# V4 `7 W) b- Y8 ~7 w4 e - 0.117647: 886 velvet
3 j! t, {* T) t. y' `* V - 0.0705882: 586 hair spray
( W. C. B2 f. I' u3 r - 0.0509804: 440 bearskin
复制代码 : j+ t: @: f" ~& l! d% x* p4 l
3 C2 W3 S3 [4 s" u! b. _1 T
/ a0 r* o* e* ]+ F- 0.972549: 644 mask
# [/ h4 k& c2 n - 0.00392157: 918 comic book
6 U* c2 ? X/ z8 a; h2 N - 0.00392157: 904 wig* _! Y# U# \5 v! h
- 0.00392157: 797 ski mask
8 Y9 m% ]- [/ b9 H - 0.00392157: 732 plunger$ C: x) O7 ? G4 o3 t4 B
复制代码 & X4 K. U( C9 z+ [
" ^1 N# k6 P& r$ D& r$ c* S
 ; a; ~& _/ V- o' |, T6 ?- a' {
- 0.380392: 583 grocery store
9 b% c6 R J2 `* o - 0.321569: 957 custard apple4 A! s8 K% ? q+ I
- 0.0862745: 955 banana$ f) i: N' p+ f2 _( O7 O! B4 ^
- 0.0352941: 956 jackfruit+ p- R" y/ j* u% H6 A
- 0.027451: 954 pineapple
复制代码 + B' K" S5 Z% p0 A g; F2 E3 l4 P4 v
" v3 I5 `' ?! y0 a1 }
l5 Y/ J! V8 K5 v1 [2 }- 0.254902: 918 comic book8 A# r* m) @( ]6 D% y6 Q* k
- 0.0470588: 771 running shoe9 v! e. h f4 M2 j3 X
- 0.0470588: 474 can opener
# I6 `$ J6 d# `8 F3 H) F- a: J - 0.0470588: 412 apron
' A+ r- V1 ]& W7 t. K) Y9 T7 b; {+ U - 0.0392157: 794 shower cap
复制代码
" p; l& O" Q6 ^ x5 L+ f5 s+ T2 }3 Z7 R6 a* [
 ( e" b1 N z( H5 P+ c F1 g
- 0.52549: 922 book jacket4 V1 `8 r% l5 o5 r
- 0.0705882: 788 shield0 E5 k* y. z2 R# c3 ^1 |5 S
- 0.0705882: 452 bolo tie
! A; d n! f1 R% k/ B% ]0 R* r% g2 o - 0.0588235: 627 lighter$ L7 l9 _& g) I
- 0.0352941: 701 ** towel
复制代码 0 [; ^7 v4 O8 w' H. g5 a G1 ~
' T" X$ i1 X$ j2 k* k1 z7 q

- q6 y- W3 \. o0 W1 |4 A; _- 0.121569: 656 miniskirt& c9 m) K$ e7 [
- 0.054902: 835 suit9 I. t9 M: r9 ] C; k( C
- 0.0470588: 852 television
s* N( L& h9 J# r' d- c - 0.0470588: 440 bearskin
' E. F) ]0 q5 H$ m - 0.0392157: 679 neck brace
复制代码
- z" I) \ K3 l/ W; \" _6 @; T3 T2 M& J* R% g% }! L

$ k5 y7 G* p2 M$ @; v- 0.65098: 918 comic book' X' C1 ]+ [4 f1 A
- 0.172549: 747 puck
% x1 |) D( n! \$ J) W - 0.0196078: 922 book jacket& A. d0 R! p, b6 M; o+ e
- 0.0196078: 723 ping-pong ball- Y, ~) F' H6 m; E/ N) k$ X l
- 0.0117647: 806 soccer ball; q9 u% k; I( T$ m4 W6 h
复制代码
" C9 g, I8 @; r& h. \, p& ^* k6 \* |7 R, l- T

5 i3 e. X* s& _3 n t; l& j
5 f* ^* {- B& ?. \- {+ g- 0.678431: 918 comic book5 H# M$ B( H; f6 v
- 0.0784314: 418 balloon
3 [! ~& E$ v1 ?8 w - 0.0470588: 880 umbrella
- l+ h" ~0 C( _$ c" Z& V - 0.0470588: 722 pillow
8 i' K! P# _! F9 ^% i$ R% D - 0.0156863: 644 mask
复制代码
7 |9 g4 l' l( X5 n1 z4 G# f7 G' i/ B2 o+ q8 E

/ q/ V% p' j( G2 s$ d/ {- 0.184314: 585 hair slide7 e' I& N# b; K2 |$ D) ?1 V* Z
- 0.156863: 794 shower cap
/ O8 s7 L8 J( P; m6 N5 z1 j - 0.0941176: 797 ski mask& J7 O5 E% O ^" ^. V1 z6 m
- 0.0431373: 644 mask
7 P- D8 n$ ]9 N - 0.0352941: 571 gasmask
复制代码
1 _$ [+ ], c4 V* S1 E/ V
1 E, X. a8 f, S0 q0 w十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。 8 V, C! V U. U ]+ J
据官方介绍,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
0 ?: P7 ]8 o+ L6 S
( ^8 A/ `% O$ i: F3 x, i' O |