嵌入式爱好者

查看: 11584|回复: 1

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

[复制链接]

46

主题

53

帖子

297

积分

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


3 l4 q% ?" Z5 U4 o: W

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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


, i, E$ c& `) A' f4 `( C# H
: j" g. G! g# W& U! d. f

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


7 b+ H: q/ h$ k6 J

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


  @% D/ c3 b( m

一、 NPU的图像识别例程

# w$ Z/ P6 `6 a) u) @0 ?

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

9 @  M) B% D: u1 u) Y- |; k


% I9 {. D6 o5 P+ A& x


1 |# `% w" M- W( y, R$ Q
1 `$ U9 p# I" M- `$ ?

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

! x0 N' L3 m5 u/ H, R; {


  C& i6 {, w7 s

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

# i7 ^1 k$ ]+ k$ d8 ~, D) H  a+ b8 M1 [

5 i' x; ]6 S4 P6 |+ @9 z

) P. r0 U4 d$ C8 o$ e0 o: G5 Q
  1. libm-2.30.so  s+ H2 I; ?+ P( J  Y7 i, }
  2. libneuralnetworks.so.1.1.9
    " l9 L$ y9 ~9 l) {
  3. libnnrt.so.1.1.95 T4 l4 }0 Z8 T1 R% _
  4. libArchModelSw.so- g2 O) G) ^1 D" x' O% U
  5. libGAL.so
    " j# H. \, D8 Z2 x" n0 j/ P
  6. libNNArchPerf.so
    ! Q: v. Q) @8 F
  7. libOpenVX.so.1.3.0
    7 \: B6 r& \$ M  e
  8. libovxlib.so.1.1.0& _& n, W' w5 p" K2 r' N- \  H: T9 Z& V
  9. libVSC.so
复制代码
2 Z0 X* H+ h' K
4 \( g- x' o, c/ L

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

+ o1 a4 d  H( L


. t$ S! [- x, j3 W. z; u# o9 n5 u! G! @/ {9 q9 x! Y

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


2 F! G' c* @1 e% f- k$ X1 x

二、TensorFlow例程验证

6 }/ P8 i- G7 P+ N. s& R+ H5 Y

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

" y+ `( N0 c* O# ?  A, {/ |, z


  @. s( j, l7 ~% ^) F+ E( `
  1. 0.780392: 653 military unIForm/ y) @1 p& E* Q% X0 L
  2. 0.105882: 907 Windsor tie- B2 c4 i2 I: K' H4 q/ s
  3. 0.0156863: 458 bow tie
    0 r; q% V9 r" V! C# ], e
  4. 0.0117647: 466 bulletproof vest+ ~# O% E' ~3 r8 \' C! L
  5. 0.00784314: 835 suit
复制代码
. n% x, U( Y) c, @# V! T

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


) S7 ^) Z9 Y2 O7 u' h( k# {

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

3 W0 |! R" x7 m! U' L0 N
& I$ M0 v  p; W


" |* r+ t) Z6 Q6 t- U: n# u# O


) M7 s, K  X* r  m7 w* v

  1. 0.352941: 274 dingo- R+ c0 e% W1 j! }
  2. 0.254902: 265 Cardigan6 y, P9 q8 o4 X5 E
  3. 0.184314: 264 Pembroke; m# R+ d5 j: s& e6 p: E) J% `
  4. 0.0666667: 163 beagle9 G/ |, v/ ]% L# A7 g4 E4 F
  5. 0.0156863: 354 gazelle
复制代码
( V( |" G! u, }4 W8 @6 F
4 r. h7 s! U: @0 k% f
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
0 e( N; L8 b1 V: V" Y" v7 a, p1 w# ~1 @) Y: [9 V- f

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

% P/ s# ]4 R* z& t) y


5 |0 g3 A0 k7 `. M! \
  1. 0.160784: 639 maillot
    0 B  H$ s' D* q: _* a3 ?
  2. 0.137255: 436 bathtub, W9 {" a7 s4 @; A. a$ Q7 I; U  |1 I/ ~
  3. 0.117647: 886 velvet
    ' ?2 O& P* q0 S; H. g. M0 h
  4. 0.0705882: 586 hair spray
    . H, u: p% V. [! J; J1 _
  5. 0.0509804: 440 bearskin
复制代码
" p  Q0 Q/ |) g. X- z6 f# x2 S

8 H7 @  x* C0 N- A4 L1 r

/ J. L2 U8 r+ {# Z0 g0 d8 }
  1. 0.972549: 644 mask
    2 s$ k/ P! o; `" w# h3 v3 Y
  2. 0.00392157: 918 comic book% W. C+ n% i7 }( `( V/ k; U
  3. 0.00392157: 904 wig
    0 e3 z, G6 F6 a
  4. 0.00392157: 797 ski mask- e; b5 O( U) Z
  5. 0.00392157: 732 plunger
    , K& z1 d+ P& D* _# V6 \
复制代码
4 i# z8 |" U" H9 E0 ?

3 y! H9 R0 v1 q4 l3 _, F0 b


4 o+ v- v6 P' x# r. n
  1. 0.380392: 583 grocery store
    2 y) J! g- j" i
  2. 0.321569: 957 custard apple
    5 B" F3 h- N' `5 K
  3. 0.0862745: 955 banana
    ( @/ c" U& e$ i& n9 h3 G# s, ^
  4. 0.0352941: 956 jackfruit
      X' h; K- o1 f) y2 h4 b* \
  5. 0.027451: 954 pineapple
复制代码

8 U9 U8 L% g. U( w
4 U3 d3 W& ?; y, K/ y# t  m/ |

9 f3 C2 s, K$ H- ?5 Z9 I/ |' L
  1. 0.254902: 918 comic book9 H' s, ?4 ~) A' o. n0 P6 p
  2. 0.0470588: 771 running shoe
    7 l6 ~6 Y; B4 W) N. {9 U
  3. 0.0470588: 474 can opener: C2 ^# @: p$ T+ Q2 |5 M& Z- k
  4. 0.0470588: 412 apron& m3 f9 [: \3 n# }7 q$ _" A3 D
  5. 0.0392157: 794 shower cap
复制代码
9 O- ^6 Z1 e: w5 s
+ L. ^  R5 e  w4 W/ |


$ Q9 t0 ?3 K  u8 F. a3 d! ^* c2 J
  1. 0.52549: 922 book jacket
    - u1 |, E7 I- h2 e
  2. 0.0705882: 788 shield
    2 u3 a8 Y, @! }! O" A
  3. 0.0705882: 452 bolo tie
      @! {9 J8 a' N# k  @' q
  4. 0.0588235: 627 lighter, H5 A  k0 ~( f2 f
  5. 0.0352941: 701 ** towel
复制代码

2 ~# K1 C: `  ^3 r/ o+ @1 X1 x; v
: ~6 O. k, S) q. L! P


* _+ e# v8 u) W, a  T" U& Z
  1. 0.121569: 656 miniskirt* T/ r5 Q" i9 f! Q
  2. 0.054902: 835 suit
    ) E( t0 Y$ r9 M. U
  3. 0.0470588: 852 television
    3 a: X, D. G5 i9 O4 m: W
  4. 0.0470588: 440 bearskin
    4 L3 s( x6 M& U$ T6 D7 {& i: J
  5. 0.0392157: 679 neck brace
复制代码

# ~( h0 d/ [) U$ _% S- t2 p
8 G1 K- H; I- |' e* T+ C

+ h/ ], l/ K) q) o- }
  1. 0.65098: 918 comic book
    ) F* b( Q1 X7 ?+ E, Q+ j
  2. 0.172549: 747 puck
    1 A$ v% j( t/ k2 r! M
  3. 0.0196078: 922 book jacket
    7 F: s% v' F: O* z/ S) I  ]
  4. 0.0196078: 723 ping-pong ball% _( S) X# ^2 A/ w
  5. 0.0117647: 806 soccer ball
      A8 H3 S" N+ D  e" f7 }
复制代码

) G3 j, w! V( l* ?, {+ t- Q& I3 X' k' M4 t


! Z8 ~8 H- r, t2 N5 c2 Y6 [  g

  1. ) U4 L; y; Z( P% v8 S1 e  [
  2. 0.678431: 918 comic book
    " v& X' u5 g* U' x" e1 N
  3. 0.0784314: 418 balloon, F6 _2 t4 o6 L: X4 d0 z
  4. 0.0470588: 880 umbrella8 }9 Z( k9 Q1 l" [6 K% {0 q
  5. 0.0470588: 722 pillow
    ! f. y4 d: N' H) a; D8 `% }
  6. 0.0156863: 644 mask
复制代码
1 n; q* r& z# h

. ?' z3 C  {9 x  r: S  ^/ m

7 U. S0 T- d9 N& J: C' ]7 e9 n
  1. 0.184314: 585 hair slide
    0 i$ P5 V1 A* j3 p' v# f
  2. 0.156863: 794 shower cap
    0 l" p6 ~$ K7 F! F; A
  3. 0.0941176: 797 ski mask8 B4 o& u, o5 `) B9 t
  4. 0.0431373: 644 mask
    ! e  _8 A. R1 n
  5. 0.0352941: 571 gasmask
复制代码
$ Y% _6 K& y' @2 ~* K6 v, |+ e5 p
6 n" ~- m. y! ?" l# \1 c' d4 L

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

! ^! B! r5 L8 V, P5 Y) A$ U8 N

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


  ?' M) K: F' I6 [# h4 H0 B; ]4 z( S8 i5 [; k
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-25 23:19

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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