|
 7 a; H5 p0 F& j9 q5 [) `. |' a% t
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html 9 d) G$ K7 w2 z5 S, m+ q
1 X$ `8 r6 R$ f* g" Z) A3 [
飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。 7 ]" f# T# ^+ U" t
本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。
# j! J+ A; A2 d* [- W一、 NPU的图像识别例程
/ s. i) c4 @6 ~2 q1 L) S在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。 & Z/ b0 p& x- S: S4 `9 q! Z
 / o( I8 }' f: ?2 g1 O/ a; B
 , ~! T: Q+ w) ~2 P, m2 E" O2 E
% g0 l( q- h6 I0 p1 M" h" ?将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example: * Q5 ~, v6 T# Z. f z; i

) X1 J+ j6 y7 P6 v7 }, h ]3 w再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持:
# _$ y8 v Y- j7 `4 Q! T/ w; b
) H" ]' {5 k5 ]& L- X ~
5 K8 l2 C2 K& k7 ]9 |# }/ x- libm-2.30.so* m0 U9 y) R# d; _, ?
- libneuralnetworks.so.1.1.9& y; N2 _ |5 D( m
- libnnrt.so.1.1.9
! e5 h6 g w& ?% o) m - libArchModelSw.so5 h/ o' k3 d1 {" m$ M2 x, q. A+ x
- libGAL.so
8 Q1 c9 h3 w v& k - libNNArchPerf.so& s) E6 A6 y7 b
- libOpenVX.so.1.3.0
( B% |5 [1 B% C6 S' l! `$ Z( ~ - libovxlib.so.1.1.03 ]0 }$ I x, X& L$ J+ T- o
- libVSC.so
复制代码 + N( L; A! Z7 V
2 M4 ~# a7 A1 B1 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/),再次运行:
. _: P8 S0 L0 F5 Q3 b
+ x6 H% _( J. N2 c0 ?1 d3 {; q7 l& e I& K: W" J* j I
可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。 ) O7 I! M; Y! W, a) M4 g
二、TensorFlow例程验证
, ?6 f' q5 K& M: L. V. k飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。 2 D. H4 F1 G# j5 c( M
 ' p7 V d+ w! @% w; x# r
- 0.780392: 653 military unIForm. @" m# ^ e7 V$ d
- 0.105882: 907 Windsor tie3 }4 Y, V( k0 l2 B% [
- 0.0156863: 458 bow tie# l Y4 V. J, w; v3 } q
- 0.0117647: 466 bulletproof vest
0 K3 o5 s/ [* e3 R - 0.00784314: 835 suit
复制代码 ! l6 C3 ]7 H0 Y( O( W, s
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。
/ W/ P! o- _( [( z: o我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果:
5 U/ ~% j4 M" P6 X2 _5 @
9 N( z- d" c1 Q/ m( I+ T8 g; R ; c& I, U0 g2 |* B5 |) i! ?
5 j5 v8 v: {5 ^, e; D. ]
- 0.352941: 274 dingo
Y3 o+ m$ i8 h - 0.254902: 265 Cardigan# v. [" j! v* X) Z$ z- f6 q/ L" I$ z
- 0.184314: 264 Pembroke
# d/ e: v+ P/ }" R5 d/ ]4 Q* Q8 E7 n* G: E - 0.0666667: 163 beagle, U9 ?" f9 b5 \: k D: _
- 0.0156863: 354 gazelle
复制代码
0 L8 H" w* ?, p4 D- Q0 f/ P; a
+ J5 L' @4 w. Q35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
9 n* X/ d3 i0 z' U+ ^' Y1 ^' \' P3 f, E! Y
再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中:
7 W1 ~ n ^& }1 o* S
 , z7 \0 [7 Q4 F( K7 L! j5 H+ D$ }
- 0.160784: 639 maillot
( Z7 o4 B$ n3 X - 0.137255: 436 bathtub1 Y( n1 g, K+ f
- 0.117647: 886 velvet; Q5 _0 C, B" F. _
- 0.0705882: 586 hair spray' Y2 W: c% z' |$ ]8 e: b* B- r
- 0.0509804: 440 bearskin
复制代码 : W4 P1 w" _1 W7 |5 r0 Q
& _+ \) W" H4 |) L" `6 N; ?

. K8 o! J& u& N5 t9 r- 0.972549: 644 mask
8 T& m! m4 s! q' n. R - 0.00392157: 918 comic book0 _# [, K# a- t7 h8 t- B
- 0.00392157: 904 wig
5 b% V# Z& L2 g - 0.00392157: 797 ski mask
- m7 V( L b( R: r' ` - 0.00392157: 732 plunger
' a1 e' S8 r% H2 y) o* `; u( x) G4 y
复制代码
& d& Z9 j B8 L9 n# x( m: M! t" r0 t+ F

9 l. p+ V2 w' L, Q `- 0.380392: 583 grocery store9 e! m0 v \: J5 }0 X
- 0.321569: 957 custard apple
( a0 q; w$ g; B2 [. ?7 \9 A - 0.0862745: 955 banana1 E6 @, n1 B, [9 {% \# `( `* z
- 0.0352941: 956 jackfruit
! E1 z9 `: J$ L - 0.027451: 954 pineapple
复制代码
m4 X$ ~2 S# b: S$ y; v
2 ~4 {" O. I2 t8 x3 O% X: L( P6 a $ h* P1 h* L- g6 K2 c
- 0.254902: 918 comic book9 X. R! o* |* y' u# A
- 0.0470588: 771 running shoe
4 }) D0 y. m& Y* U4 E# g7 g - 0.0470588: 474 can opener
0 m1 P, h! K# s* G - 0.0470588: 412 apron! p# w" f" z& o9 s2 C
- 0.0392157: 794 shower cap
复制代码
/ B0 ?; R k, ~! H
$ R( {5 Q( u" c* C; v2 I5 G
7 E) \ Y# ^! H% F6 T- 0.52549: 922 book jacket* a3 \" n. h7 j/ Y) a% u
- 0.0705882: 788 shield) Z0 g- x5 W' d; \; r' Y$ Z
- 0.0705882: 452 bolo tie
. Y; W8 @' W* `& H: }& L& ~) a - 0.0588235: 627 lighter
" I0 S; x- `& g, B- n5 {' W - 0.0352941: 701 ** towel
复制代码
! A4 E- i; w; [% n T& m8 J# M& Y9 v+ t! A: Q

' Q' ~5 Y6 F0 N0 u9 I- 0.121569: 656 miniskirt
L$ z1 _0 C6 I4 m: \5 e - 0.054902: 835 suit
. c1 r3 H, q! ] - 0.0470588: 852 television
( M0 R: R; c) |1 u4 q' l8 }4 | - 0.0470588: 440 bearskin7 x0 c. }! O+ }% v D
- 0.0392157: 679 neck brace
复制代码 0 T/ a' x, h9 p
( q k" L( @0 J 8 A7 u* R: O+ ?* K
- 0.65098: 918 comic book* {" S, N5 d+ [$ P$ ?- ~
- 0.172549: 747 puck
& `9 o& A' M' @. m6 N: u" W" b - 0.0196078: 922 book jacket
- I5 P% a9 ^: k3 L- \& P - 0.0196078: 723 ping-pong ball
" g$ _3 Z: u+ K( D/ ~ ~ - 0.0117647: 806 soccer ball: R5 M' k5 v! k3 e; \
复制代码 & v) r, T& k0 v O6 f5 E: { C3 M
; C; M& d2 Y7 m) J- x
 + ^) c* J' B$ I c. N$ p
- ) \, B5 C) F( p% p; O3 w6 O
- 0.678431: 918 comic book. u( K; @5 M. R ?/ {
- 0.0784314: 418 balloon
* d! P- `6 x; b - 0.0470588: 880 umbrella
6 s- E) Z) ~5 y0 E8 [/ Y - 0.0470588: 722 pillow
/ M/ r8 A# F1 V - 0.0156863: 644 mask
复制代码 + ~8 \; b7 n& `& k n! V
4 \- T- W9 c7 S- t p6 A1 U * W' M/ `' `5 B# `% b z
- 0.184314: 585 hair slide$ o( Y+ X% @4 e* F2 q; L6 _3 z/ a, s+ V
- 0.156863: 794 shower cap G" e4 W: p0 X# n
- 0.0941176: 797 ski mask# C; c( o8 \- E% Y* q/ D
- 0.0431373: 644 mask$ y. Q6 a, j5 [9 v8 O0 m
- 0.0352941: 571 gasmask
复制代码 3 c+ L% a, U" y& J
- L9 n6 T5 d* v& G十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。
$ Y$ K) Q' B4 r2 }% a据官方介绍,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 . E& n ]% v5 x2 j+ A/ s8 i
, O9 C4 T; \3 K/ x# { |