嵌入式爱好者

查看: 11269|回复: 1

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

[复制链接]

46

主题

53

帖子

296

积分

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


+ [: W4 C2 O' p: E- B

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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


0 _  m# w  R+ E: W! g0 n+ I$ P" j$ `( {" [

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

! q) O* K% z# K( P6 q3 o9 b

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


# T4 u/ w& ?4 G1 ^! {2 y

一、 NPU的图像识别例程


  h/ w+ Z/ T) F

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

; t) ^% k4 ^$ \4 u3 Z: X


2 e; }: R- Z0 [' l5 A6 u' c


- k5 j* c* P8 {! b4 K# Z  F3 P  z5 B$ H. P

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

) ^* W& V" G, }; r* N( l


/ I- @5 I) a$ V% j: Y1 `8 t

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

/ N' t& U- x) x$ d% B" w/ }. g
; ]0 `. ]  I  [$ G) m4 C


! Z! v- x; D+ o9 z
  1. libm-2.30.so4 w; ]& t# }& d2 W6 @" f3 I, P
  2. libneuralnetworks.so.1.1.9  q3 J4 f$ N* a: Z3 e
  3. libnnrt.so.1.1.94 }( T+ w% j( L
  4. libArchModelSw.so
    7 K3 K& u4 m/ f
  5. libGAL.so
    ! F* ^# w" F* w/ T/ w8 M
  6. libNNArchPerf.so
    9 X+ m! t: Y+ L9 a& g& R6 A$ k
  7. libOpenVX.so.1.3.02 i6 c5 \6 _1 ]( N
  8. libovxlib.so.1.1.02 h3 E/ C5 ^) ~8 R' R
  9. libVSC.so
复制代码

9 c4 W4 h" P9 O) f. ]
$ u$ i8 o0 ]% |

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

6 e9 ?; c& i. Y7 t" v


6 E! b! y% v) ]/ _
4 q/ Q# W+ K# W/ h- v$ ^8 ?

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

4 m( A- I/ b# A. B

二、TensorFlow例程验证


3 E4 b* r1 R2 n

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

, K& `, d# ?4 A! W1 ~


+ C7 X; _2 T2 s& i2 W2 ]
  1. 0.780392: 653 military unIForm
      A7 L# x+ r% C. F, n5 {
  2. 0.105882: 907 Windsor tie
    + L& Q- T; C, u9 k" U, {$ q' Y% P
  3. 0.0156863: 458 bow tie! ]$ K" z. i9 G3 q/ y5 c" P5 P
  4. 0.0117647: 466 bulletproof vest1 G1 Q  U  C3 a
  5. 0.00784314: 835 suit
复制代码
# W- }3 |$ |: Z8 W

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

# W1 X; d; E% l/ E2 ~" o# G

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

# {, u1 E# n4 Q9 F; I+ \+ ]3 R* J

: C- h. w, @, M- V


* k* A6 Y. K) M( a


! k( q% u- |- c) ?% O

  1. 0.352941: 274 dingo8 f( o8 U* N  y) X5 Y& O4 k* ]! J
  2. 0.254902: 265 Cardigan+ \: G) O6 P" Q) L9 I
  3. 0.184314: 264 Pembroke" L" D: P, Z$ `" }! N1 J/ A# V
  4. 0.0666667: 163 beagle
    7 R, X. |1 }; u* }& P, ^
  5. 0.0156863: 354 gazelle
复制代码

$ n- G$ C  N) H2 G. @
% W" x' m/ v. e4 k6 g35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
" t  {2 P) Q# f) {5 b$ Z5 g8 j; S4 B2 c. H( X* n) X* p

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

3 k7 X/ M" w' W- p( ~

' p; {  d' l2 p% X
  1. 0.160784: 639 maillot) P4 G1 t9 `, j
  2. 0.137255: 436 bathtub4 ?6 j4 E, O- G8 T. M
  3. 0.117647: 886 velvet4 i: s4 |: s8 N
  4. 0.0705882: 586 hair spray  M5 M; Z3 T" x1 \
  5. 0.0509804: 440 bearskin
复制代码

2 q/ n8 [+ G; r; [6 Y# K! g  M: p* }) H% @

0 M  N' O! q) Z7 t* Z/ n* g  J% f3 g  n
  1. 0.972549: 644 mask7 ~$ x  G8 m) o
  2. 0.00392157: 918 comic book
    9 ~  t" M, w0 ?- j; V
  3. 0.00392157: 904 wig+ f; {  f" ]- b. L5 M% S6 a, W
  4. 0.00392157: 797 ski mask
    8 {* {2 U, N6 }- ?3 p# Q
  5. 0.00392157: 732 plunger2 u9 a% T4 W: l" e
复制代码

7 i9 \. i  a% k1 e& ^1 k' H5 q7 t& x  W


8 @. m0 q% [9 G
  1. 0.380392: 583 grocery store
    / u% X& L" ^6 g# ^- |9 Q
  2. 0.321569: 957 custard apple
    ; H8 k; c3 @2 S: p9 z
  3. 0.0862745: 955 banana: j" H6 _" ?/ T- V
  4. 0.0352941: 956 jackfruit
    . n, c5 W' H+ _' |) U$ a. C
  5. 0.027451: 954 pineapple
复制代码
/ a4 }8 P% M" O# @# `& U9 q, b% m

+ q& b% ^2 [2 e, [


- L5 x5 ~  N4 e8 \
  1. 0.254902: 918 comic book5 t- `& ?6 G% S
  2. 0.0470588: 771 running shoe
    / I8 U, q( X0 T) g( h
  3. 0.0470588: 474 can opener
    0 k! p( F; y% b/ A) J( V
  4. 0.0470588: 412 apron' Q4 ^3 F1 R/ W
  5. 0.0392157: 794 shower cap
复制代码
, K' D1 v5 _1 s# n: e6 _
' t3 k& m4 U$ w6 A2 t


5 v2 J: L9 z9 ]: v
  1. 0.52549: 922 book jacket
    ! w) B, F; z; K9 T5 k" g# a
  2. 0.0705882: 788 shield
    ; k9 M" S' m+ O4 n1 n, R
  3. 0.0705882: 452 bolo tie
    6 }* ]# d. E! m6 v1 Q0 y
  4. 0.0588235: 627 lighter4 @: P* d8 T$ X9 v' G' M
  5. 0.0352941: 701 ** towel
复制代码
. P2 ~; S4 S8 T" S$ q2 o

- b9 D, E8 z) `' m


, \& y: h& t, Q- A7 S/ p# k2 j
  1. 0.121569: 656 miniskirt
    ) L" z6 ^/ ]4 j0 g2 J
  2. 0.054902: 835 suit6 t! Q- P4 A/ d  v+ T
  3. 0.0470588: 852 television. u- j4 s8 j0 w: D  V1 N, o6 M8 A
  4. 0.0470588: 440 bearskin/ Q5 Y. p( T% e
  5. 0.0392157: 679 neck brace
复制代码

2 S4 I3 F, z: H% n0 g# M% [/ f  O, N! ?

% v5 C8 ?& F- Y  z& f+ y5 E
  1. 0.65098: 918 comic book3 ^/ t% N" l! I8 M- `* ^' ?
  2. 0.172549: 747 puck3 S( p5 s" t( ~7 x: @
  3. 0.0196078: 922 book jacket
    : q% }9 N( G" N# c& F
  4. 0.0196078: 723 ping-pong ball
    , G3 c+ `& x7 U8 Q
  5. 0.0117647: 806 soccer ball
      Y4 `! o2 X( }5 r
复制代码

& j2 }+ H/ N: x# |. f3 N1 c; m  y1 X% P, a


$ j! r& r( r+ n/ V

  1. 8 c. e: _) S8 c: x/ N5 T
  2. 0.678431: 918 comic book/ i, l, s9 @1 ~
  3. 0.0784314: 418 balloon
    ! |/ J% B3 P% p& ^- k
  4. 0.0470588: 880 umbrella
    4 e0 ]" W: D: @& U8 J4 b
  5. 0.0470588: 722 pillow8 {% |/ o7 O  l3 k8 A
  6. 0.0156863: 644 mask
复制代码
1 p6 T# W2 W& @  t, r; T

; d. H/ r- _& X+ p$ Q) i  L

% x& T9 x6 C% c+ u5 _! D
  1. 0.184314: 585 hair slide
    1 n1 J; k9 ]! g1 [' |
  2. 0.156863: 794 shower cap
    4 a( ~( H& V2 N7 J, R" a2 Z
  3. 0.0941176: 797 ski mask# T4 Y: @; G0 T* c2 Z
  4. 0.0431373: 644 mask
    : n1 J' V4 a- v
  5. 0.0352941: 571 gasmask
复制代码
+ c6 Y0 [0 b9 A

9 _( n' ]2 w& i  p& i

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


0 s( {6 c  a/ r# c/ `2 s

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

' |5 k- a6 P6 F  \/ A8 Y

; a9 ^/ @. o7 ^* q" w' x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 21:32

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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