# F6 K! N( v2 `) U) \1 n
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html ' P8 G- l* s" z
2 y# e! r& v) ?1 u
飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。
. {% ~7 E, N, K( I" i6 y7 F5 z本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。 8 `0 q3 I* P8 |$ Y( Q/ c0 b1 v
一、 NPU的图像识别例程 2 P1 [: W. D$ _" _$ u2 k
在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。 & v" Q# W# W/ ?: D! k
1 |9 H) T4 P" Y* p+ _
6 K# o' N. d7 T& E( F' W3 ^' Q' ~$ ]/ l) W% R+ a
将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example: 4 m4 }$ A' R: Y* Q Y8 k
0 ^# @: u0 R$ a U# Q6 U+ Q& G: _, z再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持:
( E2 @, [. n) q# F
r) B; j- n% }* ~+ h) g2 l" c. T0 K8 |, @* z4 \
- libm-2.30.so. B2 D8 v( o' g1 Y% l! U% i
- libneuralnetworks.so.1.1.9" {! ^, T3 w ]* C( }
- libnnrt.so.1.1.9
6 f& ?- K* u4 M - libArchModelSw.so5 `8 R1 M: R# m; I) u0 q( ?
- libGAL.so5 H- Z6 \. [% @2 e* p% w; \: l r
- libNNArchPerf.so# Q3 W; y/ q i: T4 \4 R+ z# |
- libOpenVX.so.1.3.03 ?3 v* M ^, d3 {( w% z
- libovxlib.so.1.1.0% }5 E1 K6 D! S' \/ l; b9 N* V
- libVSC.so
复制代码
$ a0 x: i7 Z$ _) L' _) I# X& d$ ~1 }1 U8 h6 R' L4 |! D
其中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 [: V4 ?1 P- o- p/ F. G
$ N: A+ F7 W9 |" T! o; j3 ]' r8 U
3 G, b5 J. R3 l+ P& W" G0 s5 ?可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。
( A4 `9 I \1 r) g1 N二、TensorFlow例程验证 ! i) @7 U# g1 g7 `/ t
飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。 # c& h, Z+ _: u. ^! U
$ t$ J4 h. s& r7 Q
- 0.780392: 653 military unIForm
" |' V* `5 r+ J: [' c1 J6 e# J - 0.105882: 907 Windsor tie& ^, w; D# T& i5 J0 ?# m7 Q
- 0.0156863: 458 bow tie
8 O. j9 Z3 ?! }9 J8 B - 0.0117647: 466 bulletproof vest' ^, U" J/ L+ T
- 0.00784314: 835 suit
复制代码 ) Y$ g% T g4 y/ F9 g1 N) ?+ _6 E6 s
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。 * R# I4 G' c7 ^" V
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果:
6 s; Q9 e! u& w7 Z0 x# g9 b
! y" b! }: F; O6 P: _& L
0 v: B2 o$ y; } J' _, o
, ~3 i) H. E; X2 L( @, x* Y% l+ ]
- 0.352941: 274 dingo
" i% \# T$ i; g0 ? - 0.254902: 265 Cardigan
; I/ |# \$ V; ^/ I x - 0.184314: 264 Pembroke
8 @) w3 q- [/ g" O - 0.0666667: 163 beagle
2 T6 Z8 b6 v( ]2 E - 0.0156863: 354 gazelle
复制代码
1 q; w. t9 ^: A
5 b, n, N/ M: R35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
2 H8 \, d1 B2 G" e, n* z% J' }! K: j- \ o: y7 h
再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中:
( {$ k# y+ x3 j 7 a& A* B x% [! A5 L9 a# k7 j1 g
- 0.160784: 639 maillot
9 ]. ?4 z6 S0 b7 }, E* ]" n+ X. f - 0.137255: 436 bathtub
9 D9 a, q/ m. C7 \ - 0.117647: 886 velvet
3 T; K, q# S- t5 j* }. p - 0.0705882: 586 hair spray) C. ~* c! y7 I
- 0.0509804: 440 bearskin
复制代码 ! C* `$ H u/ J
2 c, h" X E6 ^' Z- G1 Z
* I8 `6 z! B: e$ B- 0.972549: 644 mask+ c" @2 H! \& L8 X* E. {
- 0.00392157: 918 comic book
$ L! k; C0 v. C6 j - 0.00392157: 904 wig x5 v$ K$ ]* O5 }2 l# h
- 0.00392157: 797 ski mask5 O0 W+ \, F r _( X3 z w8 b
- 0.00392157: 732 plunger. M% M6 m( h2 B7 o: u- O, ]9 x
复制代码 . _, ^8 ^0 W: N6 \. i6 @3 E
. Q o( w. Z2 F3 v, W" m& `, c! g7 ~$ G. F8 ]: ]# ~( h
- 0.380392: 583 grocery store
2 w) J( j! w, r* b - 0.321569: 957 custard apple
% }# f( y' b( B9 y* q - 0.0862745: 955 banana0 j h" ?" H7 W( z$ j* _
- 0.0352941: 956 jackfruit7 S! o# S- s R% p+ o
- 0.027451: 954 pineapple
复制代码
- ]2 y. J' J, s6 \ i/ I5 g2 B* u' W: k2 _5 E) b+ v3 m* \
3 s/ b/ F6 A5 e7 t8 S
- 0.254902: 918 comic book- P6 ?4 A# u \3 E& s# T
- 0.0470588: 771 running shoe
: ~3 f0 [ R Q9 w2 D - 0.0470588: 474 can opener
' K$ H7 o2 ?2 y# v% M, x - 0.0470588: 412 apron3 v* \( }- e. ]) N# D
- 0.0392157: 794 shower cap
复制代码
1 K/ f5 [+ W1 z4 ~% U+ ]* O+ Q$ g- L; Z- `0 O; z5 E, n7 O
( L: a4 ?% I0 \
- 0.52549: 922 book jacket6 y* }1 J% P! p: ]' N" G) }! C, S
- 0.0705882: 788 shield
2 ?: c6 p+ [! a& ~. j H! b U - 0.0705882: 452 bolo tie
4 c4 Z" F$ d; Q$ c - 0.0588235: 627 lighter" Z0 {/ [, V, y: u% q1 X2 {. Z
- 0.0352941: 701 ** towel
复制代码 ( j* B9 a6 T6 l( z2 v
2 u9 o, t% c4 |! [+ C& Q( O, w7 a0 i, [/ S. e/ U+ _
- 0.121569: 656 miniskirt' }9 A: x7 | U% w/ ^- H
- 0.054902: 835 suit6 J, C& U1 j% M3 a) K
- 0.0470588: 852 television7 L+ U9 I: i' D, i6 A7 }# A# M/ ?
- 0.0470588: 440 bearskin+ }) w8 q/ i, G2 a. Y
- 0.0392157: 679 neck brace
复制代码 ( h" \: t, j1 d1 W
% X F9 n% r+ m: C* c- k4 t2 d! U! [3 u2 d0 U7 i$ A
- 0.65098: 918 comic book( a9 J; I; i, G. Z' c" f
- 0.172549: 747 puck
) X" u+ B2 l1 d c- M( v# V - 0.0196078: 922 book jacket; L4 l' a3 w; j! |
- 0.0196078: 723 ping-pong ball
" a6 {& i( s Q4 W5 I! Z - 0.0117647: 806 soccer ball
6 W1 T* M1 h3 \
复制代码
T, n8 D# k" q$ Y* j' m. J! u9 `4 E" ~7 Q$ }! p5 |4 V8 p
, X: j8 ]1 g& D/ v; B2 A3 Q/ j# x
- d1 A% {$ f* z+ s8 n0 z
- 0.678431: 918 comic book- ]1 ^- i8 u, C6 K* F4 G+ Z
- 0.0784314: 418 balloon
, w% l) ~) v. Z) @8 \3 I - 0.0470588: 880 umbrella
3 m1 n7 W: `8 E! d - 0.0470588: 722 pillow
% y* s9 M# v' q1 b; y4 f5 D# T - 0.0156863: 644 mask
复制代码 " M/ K8 W, L9 N; s
/ s0 L6 P* L! R4 |+ C
* x. o1 z+ @( ~8 |# R- 0.184314: 585 hair slide% }2 u) b: S D' t' S# H
- 0.156863: 794 shower cap
% j h: T) E7 ` `. H0 | - 0.0941176: 797 ski mask
; k% j; a5 a2 E- e1 K# ?2 }6 E - 0.0431373: 644 mask. ^9 h8 g1 {% B* j
- 0.0352941: 571 gasmask
复制代码 1 _: }4 i+ B8 Q X; f
7 ~" O: ` O4 b5 ]5 G
十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。 - ]9 m: y' P* I
据官方介绍,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 9 X0 t& K1 ?( m6 G, s
- W, s' W8 V) ?; T: P" H K
|