嵌入式爱好者

查看: 11582|回复: 1

[帮助] 发烧友实测 | iMX8MP开发板移植官方NPU TensorFlow例程

[复制链接]

46

主题

53

帖子

297

积分

扫一扫,手机访问本帖
发表于 2022-1-27 10:59:04 | 显示全部楼层 |阅读模式


: g3 x2 X6 U. ~" b( _

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

原文链接:https://www.forlinx.com/article_view_809.html

iMX8MPlus 核心板: https://www.forlinx.com/product/136.html

' V* X2 T( [8 u8 @

. O; |) r& W5 ^% W

飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市工业互联网、智能医疗智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。

! p2 n  e, k7 a4 e6 c% T/ |

本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。


/ V$ q; j* }5 C! m

一、 NPU的图像识别例程

2 R% P( M- ?! P4 W* |/ V' W) F# V

在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。

" G6 {! _3 [- b9 P; G3 d3 V4 i5 `$ T

2 m6 Q' {9 K1 Z2 J- q' B


" m4 K; |. b: t
) \' c' ?: w8 ~- f% n- J

iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:


7 M. d2 ~  i1 V; U9 e, S* ?


% V$ [$ F7 w  p

再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持:


7 ]2 W! }- P2 U' U- x, Q) Y
% ~2 u: b' ]: @- E$ t% W

4 `2 I  m! ]( C  \. f2 {2 j6 a
  1. libm-2.30.so
    , d2 d# \" K$ r0 `5 X" [8 i9 G4 B  m
  2. libneuralnetworks.so.1.1.97 X% L% j7 w, r
  3. libnnrt.so.1.1.9
    ( N5 t0 C5 d; Q# O& d& p, |
  4. libArchModelSw.so! w' {+ z+ V( k6 H" y  g+ D; V
  5. libGAL.so
    " ~+ c9 L1 D5 M3 z$ P
  6. libNNArchPerf.so0 z" {  F9 {  k; k6 q9 u
  7. libOpenVX.so.1.3.0
    6 E! L8 L1 x2 ?, g
  8. libovxlib.so.1.1.0" x4 x- m8 b% N& v6 ^2 \
  9. libVSC.so
复制代码

4 d- I0 V  O3 a# R( B  G% d% ^6 |
+ x3 V; i& P+ J

其中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/),再次运行:


- M5 C! S% `* ^) K7 E" `& m6 k

2 a, T7 l% G( G) ^; o
& C4 z0 W4 w3 R/ n# }

可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。

8 i/ y0 @% S+ n: p! o6 f1 X

二、TensorFlow例程验证

/ e: C/ S5 V: M/ D( Q  E; r$ g( _

飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。


/ Z7 K: Y# b" |) Y2 E9 G" L! C: G

9 s8 J- J' }: F6 I
  1. 0.780392: 653 military unIForm
    ' O3 Q  t* }4 @  }- a
  2. 0.105882: 907 Windsor tie2 o8 b4 O# c5 F( i: q
  3. 0.0156863: 458 bow tie
    " `0 X* K4 a- A0 N' d8 {  E; h* A0 G! f( [
  4. 0.0117647: 466 bulletproof vest0 F* p6 H0 Q! `7 |4 }* x
  5. 0.00784314: 835 suit
复制代码

. i9 W. F! ~* {+ l) l% N

78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。


# m2 v# R0 J8 o( W

我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果:

# L0 r" \1 c, d- k( a
. ~' ~* L9 B, a  v


6 I5 d2 I$ b0 u7 C1 A" B/ ]7 M

* ], q. l# T; ?, K

  1. 0.352941: 274 dingo
    ; [+ R$ \1 f" r6 ~2 @) s
  2. 0.254902: 265 Cardigan3 T' h" W; g) @. Z0 [1 a; v
  3. 0.184314: 264 Pembroke  Y+ A7 g0 F7 ]6 V3 t0 S# `: a
  4. 0.0666667: 163 beagle
    - @& y: A" L3 M- @
  5. 0.0156863: 354 gazelle
复制代码
' X- ~: g5 I! s8 z; U3 v& m. t+ h
+ F+ B: j& T; v5 ^# N1 c2 p
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。) u& n( M$ a3 g" G; x

3 C5 M$ j' e6 n* ?' V3 y

再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中:


7 B9 _; F: r% K  K* V: D6 y

. J; d4 H! y- j1 G% J+ y
  1. 0.160784: 639 maillot
    ; X0 W3 W+ @% ~( m3 p
  2. 0.137255: 436 bathtub
    / o6 U* T6 V$ h0 Y# d/ Y1 C( R
  3. 0.117647: 886 velvet4 Z) r3 I" ^- D* Q. f8 o
  4. 0.0705882: 586 hair spray; w( {2 P4 E9 S' ]/ T3 i+ k. H
  5. 0.0509804: 440 bearskin
复制代码

" D; ~; }1 P5 y4 e7 g+ O/ s  R& A9 L& J( B7 W: ^


7 P' F3 C/ R! f. g. e' A0 R
  1. 0.972549: 644 mask5 R  {. z4 }/ G2 L; E
  2. 0.00392157: 918 comic book- ~( x+ s* W7 N( L+ ~
  3. 0.00392157: 904 wig3 G" K+ o! @) b/ Q0 A  d
  4. 0.00392157: 797 ski mask0 |* ^2 b4 M0 L4 }! h% L
  5. 0.00392157: 732 plunger
    / s1 E* R5 ]5 B, N
复制代码
. |' C( h, v" D) O6 A+ U9 Q& {% _7 [1 y

( A8 l3 P& ?  o; b, D! A

+ m% w( Y; T( I" d4 r0 Z
  1. 0.380392: 583 grocery store
    2 Q% f$ {0 o; v* H+ I: n
  2. 0.321569: 957 custard apple. i6 B/ X5 t8 r: J# d! h
  3. 0.0862745: 955 banana
    ; V4 N+ t# Z, `% y5 x! s% p
  4. 0.0352941: 956 jackfruit
    " }$ f, D1 B: O! r; R7 ^! J  M
  5. 0.027451: 954 pineapple
复制代码

/ ^- k- a" j* T$ c2 @/ Q
# P) {' @( m8 Y- n+ }

+ o+ t: S  E, D+ R: c& f- ~
  1. 0.254902: 918 comic book, U9 U  _$ e% O) Q5 n( N! F5 m
  2. 0.0470588: 771 running shoe
    . @$ _# i# |& `) E4 b5 c, ~
  3. 0.0470588: 474 can opener
    7 }8 O9 b& E1 l7 M
  4. 0.0470588: 412 apron
    , g# c4 n& g+ X3 Q' Z. z' o; D7 i
  5. 0.0392157: 794 shower cap
复制代码
3 n7 m/ I- E& B; C* x3 u7 {& ?
4 v5 z2 |$ U( n$ P; U+ h

5 m0 k% \2 r1 }- l( \# j
  1. 0.52549: 922 book jacket; m6 {  K" Z* H& G, S$ W& F, b
  2. 0.0705882: 788 shield, B( T- \& B9 [: _3 o
  3. 0.0705882: 452 bolo tie
    * `' P* p6 u. L3 p# U1 X- h
  4. 0.0588235: 627 lighter+ x8 @, d* g# K3 q% z4 b
  5. 0.0352941: 701 ** towel
复制代码

# V, @( b4 j! e+ ~7 G8 u& j. S0 T* _: D& Y2 b5 b

. c+ p. C2 j# Y4 L5 h
  1. 0.121569: 656 miniskirt
    ! z4 s% W3 ^" }) u+ Q
  2. 0.054902: 835 suit% ~4 I3 o8 X9 s+ D! o/ v
  3. 0.0470588: 852 television- e, F5 L" X. Z* s4 l. `7 }1 l
  4. 0.0470588: 440 bearskin
    9 R/ F( T0 j. L- ]& m$ Q
  5. 0.0392157: 679 neck brace
复制代码

4 p2 q3 C7 o3 s4 J1 W, Y
9 w4 P8 a3 Q! j# y( X

. }6 ]& f6 h8 O* w8 t$ h; Q9 ~
  1. 0.65098: 918 comic book0 m; _" Z9 D8 J
  2. 0.172549: 747 puck0 H/ f9 ~# z! w" Q
  3. 0.0196078: 922 book jacket
    1 b- w# Y# C3 P( l! c; l
  4. 0.0196078: 723 ping-pong ball6 l) S5 t* m& q+ z! m) v! P, \
  5. 0.0117647: 806 soccer ball$ r" U$ C2 I- X% _
复制代码
) a7 R7 K6 K( e% D- i& }

: A8 ]- }0 @# O. }

2 S3 w+ s. m! A
  1. ) ~6 e# |0 Z( V/ W& f
  2. 0.678431: 918 comic book
    6 u/ t0 X& @4 [; r/ H3 {
  3. 0.0784314: 418 balloon' J4 x$ s! E- y  u
  4. 0.0470588: 880 umbrella8 A7 S$ O: H5 \! S4 L! {: Q
  5. 0.0470588: 722 pillow
    9 X) A) ~/ ^4 @% z1 K
  6. 0.0156863: 644 mask
复制代码

) E! d2 |/ U. z: K2 \* V8 @$ X; j4 u% Y

% }* n8 m( Z/ E! Y9 d
  1. 0.184314: 585 hair slide
    " E& N) o8 d5 z$ I
  2. 0.156863: 794 shower cap2 t+ x  ^3 k0 t' [$ [# t
  3. 0.0941176: 797 ski mask
    ! P6 x0 ]$ c# b) X8 w: z5 E0 @
  4. 0.0431373: 644 mask
    7 N7 ^1 ?* v5 N! N, M
  5. 0.0352941: 571 gasmask
复制代码

7 V! C/ Y, l% G. D: z6 v% p
5 \+ Y/ ]0 w2 S$ e. P

十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。

/ o# E# B2 J/ E  \) r

据官方介绍,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

: c' K8 k/ z( R0 v
2 R$ T6 [4 j% w8 x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2026-1-25 21:46

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表