嵌入式爱好者

查看: 9995|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

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


3 H2 K  G! F0 S; R0 ~1 P- x

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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

/ R  i+ E6 v/ v) @$ _' _

% Z+ q  S. b; w7 ]6 c" }

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

7 h7 L; V, o3 l! S: F- T

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


2 a. h/ M; j3 }3 G$ O

一、 NPU的图像识别例程

8 ]8 s8 U- k' ]

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


$ H% V  f' M: x6 Q3 r. b6 B2 D" z

$ m2 t6 ~! H( |! N, A9 X


: _! |. `  V, d: B6 S3 i3 r* y, f3 {6 g, n% O" d! }

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


" K% J+ I6 @* Y) Z0 i/ d

* b) M  F( T; m3 X) A( B

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

7 v7 r7 ?! o4 n/ d, U4 ~

8 O0 ]+ [  Y. [$ F) G, D( c8 Y

9 Q, ]& D! \$ L, Q# C/ w, Z& O
  1. libm-2.30.so% ~6 }1 `' G( m5 }8 v" ~, s: Y- P( h
  2. libneuralnetworks.so.1.1.9* J8 b. ^% s( q6 G# w4 O% m
  3. libnnrt.so.1.1.96 `7 a: `3 B% i5 E
  4. libArchModelSw.so
    6 v& |  J' s3 K* H; C& K
  5. libGAL.so
    * j& ]) k8 U% j% i5 P
  6. libNNArchPerf.so" x+ d+ F$ M! v2 e- @
  7. libOpenVX.so.1.3.0/ ^! v4 a+ G" x! a( N: G
  8. libovxlib.so.1.1.07 N/ L" m8 ^8 X( O/ \  ~
  9. libVSC.so
复制代码
1 L3 d, z. d# U* l' o
2 }/ q; ~6 i1 f7 P; H& ]( C

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


. a/ E2 F* i* j6 B


/ V6 `  ?( Y6 V$ a( N8 c# `9 k& j0 @  q( ]1 J, m! G( t

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

% ~6 R& [5 I1 B, z  x5 S4 z9 v

二、TensorFlow例程验证


9 ^+ B, l$ @* k: ?, d

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

$ \6 q9 Z  I6 P


, d2 W! Q0 s0 X9 s/ ?
  1. 0.780392: 653 military unIForm8 z2 q4 Q0 \) @& }
  2. 0.105882: 907 Windsor tie
    ; g! {% Q0 ?1 V' p; `$ ~
  3. 0.0156863: 458 bow tie
    & Q3 p2 T# g9 s9 p1 a
  4. 0.0117647: 466 bulletproof vest
    / f5 j* w- B# F4 K$ O+ q
  5. 0.00784314: 835 suit
复制代码

, w9 l0 W* f! M4 M  H0 ?

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


/ H+ x0 G. k0 e* V6 v; m  S

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

0 f, ~% @( K' l# c

  C: n2 A9 ]9 r8 S: ?. J5 g* ~# ^


0 V* t' o& m8 r1 f; n

/ v9 u( `, c' V7 R2 d/ |

  1. 0.352941: 274 dingo) D3 C& I2 g6 z' W: w
  2. 0.254902: 265 Cardigan/ F9 \, }7 D' _2 T
  3. 0.184314: 264 Pembroke
    ' q* C* o* f: C/ b) A! j" D! F
  4. 0.0666667: 163 beagle
    8 e- C0 H+ c- b0 M
  5. 0.0156863: 354 gazelle
复制代码

5 H$ e0 ]& r) [( [/ {4 ?0 ?4 K
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。  }7 U* H  {# @7 c5 R. `6 ~* X: K" B) g

! W$ I( H8 O  N- Y) @, b

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


% l2 O, `4 W  \) _6 |: o  N

% P; m- X" _7 \; @# S  S
  1. 0.160784: 639 maillot: |% N: g( j+ {9 B  Q
  2. 0.137255: 436 bathtub0 t+ c: [) P2 Y7 e+ r* u
  3. 0.117647: 886 velvet
    5 s0 d5 B" L- T1 L& i9 Z
  4. 0.0705882: 586 hair spray
    $ I# L; `7 N% |' g
  5. 0.0509804: 440 bearskin
复制代码

9 E- u9 G$ V, Z
/ H! Y! R( y4 N, o8 \" b3 k) n

$ m( U  u3 A/ w
  1. 0.972549: 644 mask
    / C& _9 n1 z( g7 n  C
  2. 0.00392157: 918 comic book) N) H& G" Z# m! t
  3. 0.00392157: 904 wig! G3 w5 F, f. e. I+ i% \/ w
  4. 0.00392157: 797 ski mask8 O, `& b" H# _$ P9 l
  5. 0.00392157: 732 plunger
    ( ]7 F/ w! v4 H
复制代码

4 @: \( K. V  H5 Z, j4 o5 b+ {; x7 q' U9 g0 [


& |# q/ s% h" ~2 O$ |9 k/ z
  1. 0.380392: 583 grocery store, ^  q+ s+ S) r
  2. 0.321569: 957 custard apple7 a7 W9 N$ k+ @2 c6 Z  E, j
  3. 0.0862745: 955 banana
    + a6 @& m' b0 a3 v" N9 r
  4. 0.0352941: 956 jackfruit, ?# ^  h6 n& w. J
  5. 0.027451: 954 pineapple
复制代码

2 t4 b3 Q# ]4 C0 F
8 v1 Z" @) Z" Y


3 J& x) p7 k' i& B4 t# Z# J
  1. 0.254902: 918 comic book) V; K: f2 u7 {; a5 h4 s
  2. 0.0470588: 771 running shoe3 p* N4 ^5 u% w  a( P+ D* {
  3. 0.0470588: 474 can opener
    + w0 v9 x- ~/ ^1 D: x3 t) I0 l' M
  4. 0.0470588: 412 apron
    : g% Q  `: O" p7 i) d/ r; f) ]
  5. 0.0392157: 794 shower cap
复制代码
( S! C* b3 I. m  O

5 h& V  s2 ?& n

: o0 |& n# k3 Z1 K4 V9 Z
  1. 0.52549: 922 book jacket) S6 f! q8 {0 K. |, A
  2. 0.0705882: 788 shield$ v! P/ o, _: K/ K
  3. 0.0705882: 452 bolo tie
    5 U: {% P1 b0 R- j4 I5 @  _
  4. 0.0588235: 627 lighter
    ' {; [: Q4 V: X9 F
  5. 0.0352941: 701 ** towel
复制代码
) Z/ m/ ~6 q  Z5 P' F

8 T, X" h; [& x' [5 p6 f- J4 r

+ e  c. h' M( z0 D! Y! d
  1. 0.121569: 656 miniskirt
    . G. I- E& F( N
  2. 0.054902: 835 suit' c4 D; ?6 }  i" J
  3. 0.0470588: 852 television8 f' l* \  _4 @$ |8 F, u8 _" ~
  4. 0.0470588: 440 bearskin# X( z: B! v3 j( A
  5. 0.0392157: 679 neck brace
复制代码
2 S0 s$ G+ V2 f( Y7 U4 Q8 A

" F: x$ O6 @+ \% \7 i

7 H; A1 {# ]' w) r. P+ W
  1. 0.65098: 918 comic book2 Q8 z  `9 x' `: [/ t
  2. 0.172549: 747 puck' @* l! t, ~6 G
  3. 0.0196078: 922 book jacket
    0 O- `2 b$ A* p1 P5 Q
  4. 0.0196078: 723 ping-pong ball2 x3 h0 `* Y7 v
  5. 0.0117647: 806 soccer ball
    * P8 O1 |8 b- [. r" g, }5 I8 D
复制代码
3 X# y( L6 M: O2 x% K) \; L0 n

" O! P* {( e* D. R


* Q  k2 R: k8 N1 W# k

  1. . ]4 r9 I9 [' S$ t, _! `
  2. 0.678431: 918 comic book9 [6 ]' j( L2 p/ k& H8 f. G! |
  3. 0.0784314: 418 balloon0 n" x) s& m/ M$ U9 n
  4. 0.0470588: 880 umbrella
    2 H7 b* Q! ]  _
  5. 0.0470588: 722 pillow8 s! {4 k% ^4 z- v4 a
  6. 0.0156863: 644 mask
复制代码
/ J$ l: e8 n, c5 P+ v1 U0 V
: B. y/ @* @( C


$ G. o: B1 p; C
  1. 0.184314: 585 hair slide
    0 T# U& s; B' `4 S) `% c8 d+ G
  2. 0.156863: 794 shower cap3 u: M# b6 [  G
  3. 0.0941176: 797 ski mask
    * l, I( i4 I  v8 u* E( s, R
  4. 0.0431373: 644 mask
    & L) o7 V, t) z% q2 s6 \- b' q1 }, Z
  5. 0.0352941: 571 gasmask
复制代码

2 E+ a; ]3 ]7 r
4 |5 ?$ n: E, O- W6 N' K8 G

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

1 _7 h9 v4 B1 t" v" e# W& {' h

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

% O& h, ]  W5 I1 L# O' h+ X

1 N: F/ `, ~- M4 k
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-25 02:24

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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