|
 1 G t3 T; {7 L/ {/ Q
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html
/ w# c; _5 X0 Y( w+ X7 \' P' e
6 b2 u' d( O8 d0 K0 D飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。
! g3 \9 T% l7 s1 d2 h8 V3 \本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。
# }. D8 a( t% @. C一、 NPU的图像识别例程 2 P0 o( W5 D& n
在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。
9 R8 C$ g2 L9 j- [* i. Y
$ ^0 E8 U! W8 s; U, G, w2 e8 G
7 y& n! `7 J9 Z$ ]3 m; M8 p1 n3 g8 b7 D$ \
将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example: X9 r0 d, s/ D8 I* N

; z. e/ d* Y( D2 v2 d6 Q9 q再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持: 6 a4 e' K9 ^/ P- R( @* d
/ w1 y; K. E0 I1 |& N" ?$ G% k
 # s+ a' o! s+ y& \: S
- libm-2.30.so
) d9 N; X$ [3 {( q - libneuralnetworks.so.1.1.9
: j( |0 o0 C2 j! C1 Z9 Z+ R - libnnrt.so.1.1.9
5 s& [% B% H C - libArchModelSw.so. c7 A9 h8 m# L4 k* D+ @+ Y0 x
- libGAL.so" _2 X$ G) u! z3 d) F
- libNNArchPerf.so% {- a. \$ |* J8 {' v# ]2 u
- libOpenVX.so.1.3.0
( g4 i" Z% }' X3 _; T0 u; d - libovxlib.so.1.1.07 O& ]( `- N6 G& u, T1 `( B
- libVSC.so
复制代码 7 I6 Q% O8 p4 Q9 Q d# M
7 l: o W+ K. R5 ]5 F8 Y其中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/),再次运行: 8 V) O3 k0 k2 n" F6 b7 o8 W

5 l& s" W0 |8 G a) \# r, Q; N% e- X
1 o- Z' o5 v: R3 w; I% p可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。 ( ^8 Y" y" [) f' U5 ?4 P, r8 z
二、TensorFlow例程验证
" }1 q$ ]/ Y6 K1 J飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。 - E1 s) _9 ^4 {
 ! N; m3 }% x Y
- 0.780392: 653 military unIForm+ j {/ o, W3 V1 f0 N! X/ K+ R
- 0.105882: 907 Windsor tie
. e( o7 O" F" @2 h2 p3 F - 0.0156863: 458 bow tie- N( D w+ _" ] R$ `5 X
- 0.0117647: 466 bulletproof vest8 z K" i$ W# D
- 0.00784314: 835 suit
复制代码
/ k( D' b0 O' F8 \: h78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。 4 U/ C. z" i' V! i
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果:
4 R; x& X3 L/ N, ~& k8 D! L% P
# E# z7 O1 v: |( w
9 g! V( j6 a5 ^
% L. l O) c# Y
- 0.352941: 274 dingo- w6 h7 E- T2 E; U) D
- 0.254902: 265 Cardigan! Y$ I( Y4 p: X( a+ B, B+ S9 b
- 0.184314: 264 Pembroke2 G' O H- m5 o8 ^# s8 C
- 0.0666667: 163 beagle4 ^: o* E! j* K) T, ?4 t
- 0.0156863: 354 gazelle
复制代码 - E1 d" y; P0 @5 m5 }# x4 {
( G1 B( h' P8 d M5 G35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。1 Z3 q) }# d/ E; \7 M2 D" F% t5 J4 k
8 n& d |5 S# @! r" X- a
再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中:
1 k X. j: O& M- v9 c3 F- X

7 y9 r" Y0 |$ o$ h+ b- J- 0.160784: 639 maillot
! R5 D3 U$ u$ ? - 0.137255: 436 bathtub- Q) ~7 ^% V/ s3 d" S
- 0.117647: 886 velvet: q8 u9 B" T! T4 m4 I9 O& F. g0 P
- 0.0705882: 586 hair spray; l; _/ u' L ]5 w
- 0.0509804: 440 bearskin
复制代码 & X# ?$ b; _1 E6 |
- ]9 p. `( v* e* {0 f! B
 + R0 S S- k0 M3 X1 U% }/ \7 ^/ L; v1 Q
- 0.972549: 644 mask
3 W7 i$ C2 a4 C* t8 z - 0.00392157: 918 comic book' M+ v7 ~, ^' {, u- l
- 0.00392157: 904 wig
! S7 Q; K x" T2 P- Z - 0.00392157: 797 ski mask" G9 X) ~- I3 o% Z: A
- 0.00392157: 732 plunger
8 p8 e, N8 ^( g8 V- t4 T2 \
复制代码 : c. C+ @' D( f& |$ i9 ~. K- i
" }- g7 s; o; ^/ a% H1 o1 A
* d' l# @/ R I% i6 ~- 0.380392: 583 grocery store/ ?4 o1 s6 Y8 ^
- 0.321569: 957 custard apple
: |$ @- _) D5 B# f - 0.0862745: 955 banana
: }5 s7 D8 @" T; ]0 y( v - 0.0352941: 956 jackfruit
! v; f: _ U8 n( a - 0.027451: 954 pineapple
复制代码 , v1 I8 j0 Q4 R! w; z* _ }- c
- n! s; }0 b9 t

' b9 V t8 p' s, _8 r" E5 s- 0.254902: 918 comic book5 G* Q' r6 F( g7 Y' y
- 0.0470588: 771 running shoe8 |9 q2 C* T6 P9 v" Y
- 0.0470588: 474 can opener
* R$ z1 R$ E. L4 U9 i - 0.0470588: 412 apron
1 c% g% x/ ?. _- n" L - 0.0392157: 794 shower cap
复制代码
, }' P1 ~ W- ^( G: B3 m) x
V5 A: V. X% B. T5 K4 H2 C 2 T" y7 e( L! p. u' N" _
- 0.52549: 922 book jacket% D1 }' c G. B5 J1 X, O7 a* l
- 0.0705882: 788 shield1 L7 T+ x; p- S2 H, K% A
- 0.0705882: 452 bolo tie
: K/ V+ K8 C* K5 d$ O% n6 Y; ~ - 0.0588235: 627 lighter
' g8 K) Y t9 x! w u - 0.0352941: 701 ** towel
复制代码 2 Z4 A/ O6 f' D9 G
- e8 {5 g5 J+ z/ z( q P
% F0 B! C2 Z0 s* a5 f4 X- 0.121569: 656 miniskirt M9 u% y$ _3 J2 I' f
- 0.054902: 835 suit
( r" q: H3 ^7 A8 i- s/ { - 0.0470588: 852 television/ L2 M6 c% t. P) m2 I* }: q7 \. D- ^
- 0.0470588: 440 bearskin: ` r! i& x9 J% b
- 0.0392157: 679 neck brace
复制代码 4 E7 r) d8 R& }) O8 R) H
& _9 q) E! B7 P! [& N9 K) r1 {) I
 5 n8 F: p, E* ]' B! w; o+ T# P- Z
- 0.65098: 918 comic book
) G1 F, v$ L7 |1 S+ X& D' [1 b/ j( i - 0.172549: 747 puck+ M8 P% T0 _% J" ?) y" @) J
- 0.0196078: 922 book jacket
' m% _; k: ~+ F5 }0 K' } - 0.0196078: 723 ping-pong ball" B5 g2 d! @3 F: O
- 0.0117647: 806 soccer ball
6 n$ `2 ]* ^6 d# G
复制代码 : M3 E5 B; n2 M9 G$ D5 M& F: \5 y
) e$ p5 U* g. M) W0 W3 t

, [$ M- R! E( M- W) @ h5 j5 }* G
' s+ {. y9 B$ Z. c0 R$ D- 0.678431: 918 comic book
4 P1 W5 Y7 G( [8 V1 a/ i# g$ M - 0.0784314: 418 balloon
* j7 k* g, k+ u) K( a) B, j - 0.0470588: 880 umbrella- r0 }$ ~( ^1 U1 g
- 0.0470588: 722 pillow
9 l& ]$ W# l9 h3 ?5 I4 C - 0.0156863: 644 mask
复制代码
% D" I7 D8 P" E4 V. d& j' S' [
- u- z' S9 n7 e. y# b. F6 D' _ % a! Q" V- L: {" ?! F4 d
- 0.184314: 585 hair slide
$ C/ L/ V4 Z" Z; c" T6 {. ~ - 0.156863: 794 shower cap0 q1 O. e3 E/ J5 ?* G% {
- 0.0941176: 797 ski mask
4 n6 a4 M' P5 @! i/ G - 0.0431373: 644 mask S" g7 }6 u5 v* h
- 0.0352941: 571 gasmask
复制代码
( N, ]/ }- T* L- X9 w% s
8 X" d; q4 a' }* k8 B: w$ @十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。 . r$ y9 r/ z N( L
据官方介绍,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
! p! s* X+ J# x. X& z% X; j
6 m( M0 t. e6 } |