嵌入式爱好者

查看: 11019|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

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

; o8 B/ E( [$ z- [8 D# Z. [

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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


* D, m% z- V0 \' I- `  D+ k  K  l1 H% F" ^& X. V: J8 S! h/ {( ~- W; N

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

5 X; Q/ R$ v# e  ~

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

$ O9 x" e: }0 U7 U

一、 NPU的图像识别例程


  y9 f/ E8 ]* ?, K3 Z4 t) K3 H. A

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

3 W) [+ J0 b0 \


7 U' T. N6 q: w/ _3 E

4 h" S( S& K: T' G* l
' z$ j6 e- i0 F" g

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

% \4 I# P) b/ d, \

8 A, N* W# D0 z& Q* t

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

! z% O4 q8 ]1 p# \5 r- f3 U

! d' n2 E9 @, [3 D- Z7 z+ @

4 B% O2 R8 D5 P
  1. libm-2.30.so7 D) @7 B- \  w8 s
  2. libneuralnetworks.so.1.1.9$ h: K9 K+ v1 i2 I8 v
  3. libnnrt.so.1.1.9
    3 W* G- O  F7 f. ~0 C4 M
  4. libArchModelSw.so
    * S1 \) p6 Z9 [0 u7 w
  5. libGAL.so9 }, X$ z, W7 R
  6. libNNArchPerf.so1 h6 d: E( ]- v' k2 |  t
  7. libOpenVX.so.1.3.0
    * a$ J, u3 v$ ^8 n* ]" s& g
  8. libovxlib.so.1.1.0+ w8 \- W! \& `. |" |, v; V
  9. libVSC.so
复制代码
/ @5 }0 v  a& y3 w
1 r( f, P8 I0 M4 f

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

" q1 W/ B- ]& r% u, t

8 q/ P6 F8 z% @! A$ r

: ~' J" i  U8 |6 G2 j3 _

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

- T2 m% D  @5 Y. i

二、TensorFlow例程验证

/ X  d, A- i3 m3 ]

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

7 U/ U/ V: U% W* H: T


8 c% [+ I2 p, u9 a# \: y  J, a
  1. 0.780392: 653 military unIForm
    * d* O' N  J' ], ~* o/ e: N
  2. 0.105882: 907 Windsor tie
    ; B- v" c; W6 R  q0 V% F
  3. 0.0156863: 458 bow tie
    : @" Z0 ?& ]8 v# J1 s
  4. 0.0117647: 466 bulletproof vest, v: k' I8 q# @0 l
  5. 0.00784314: 835 suit
复制代码
4 Z: [, N& b+ z! L

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

7 c5 S& W% }% N$ j

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

9 r5 r5 c# y9 K2 d7 }: f. m, Q

" K9 E' V8 T1 u; I. B# @


6 P) r5 \: F, u' _: l  {

# d2 {- t: b9 Z% {

  1. 0.352941: 274 dingo4 j. A  [# z% `( }0 `) W$ w1 \+ ~
  2. 0.254902: 265 Cardigan
    ( G% M3 W, N, A! J9 @8 {7 Q% L
  3. 0.184314: 264 Pembroke
    - d9 ^9 p; F* q" \! B- b
  4. 0.0666667: 163 beagle
    9 z& y1 z7 P2 H8 h+ u, @2 x/ K
  5. 0.0156863: 354 gazelle
复制代码

% U; q3 K# a; u! ?! ^5 T7 }  _& \: |8 @% s) n' g$ v
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
  k; n8 d$ Y8 B( C. V6 Z& e& ^- L# A8 @

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

5 R( W; d" Q2 a; g5 n


4 q* ~5 L  z2 f% J1 b
  1. 0.160784: 639 maillot& g. b5 `$ F( C2 P3 `$ T
  2. 0.137255: 436 bathtub' J0 A0 [, j5 b$ C
  3. 0.117647: 886 velvet+ G% b$ T/ Q! F0 Z5 Z
  4. 0.0705882: 586 hair spray. i4 [) E6 V4 l' F0 N0 z
  5. 0.0509804: 440 bearskin
复制代码
. n9 Q- t: z9 `  m/ _

5 b6 b2 O6 b6 P7 e- {


' _/ A  g! |1 K" x- }& I
  1. 0.972549: 644 mask
    . I, r8 W  w% X: L* R. D- `; \
  2. 0.00392157: 918 comic book* Z% c4 m7 v" k, T9 @; B
  3. 0.00392157: 904 wig, D& b- l8 C7 [% n" f
  4. 0.00392157: 797 ski mask
    / ^. ~" B8 Z5 u/ x0 O% m+ {
  5. 0.00392157: 732 plunger; {6 C2 _  Q3 o! [; ~/ g8 |9 t
复制代码
5 A5 O' P9 G" I
# e3 }6 o' f9 _* }* d


4 C  c% B8 O6 f5 z' k) y% K
  1. 0.380392: 583 grocery store: B; d1 U) O" |: J  V1 e
  2. 0.321569: 957 custard apple$ u6 B6 }. n) M$ p
  3. 0.0862745: 955 banana
    , G& P9 k# }& z# ~7 A- e. H
  4. 0.0352941: 956 jackfruit
    ) I3 g% h; Y7 H5 C8 A* E; f
  5. 0.027451: 954 pineapple
复制代码

) U$ @" H, H) `3 q! |+ W% T* O3 u3 J# g" [$ @  t4 |


2 h1 {" H! |3 O9 w. j( `
  1. 0.254902: 918 comic book
    + P" h3 s3 X+ d4 h% b
  2. 0.0470588: 771 running shoe; D# `4 j1 F+ O8 e! \1 U
  3. 0.0470588: 474 can opener
    / O/ B6 r3 \) w& V4 o
  4. 0.0470588: 412 apron2 e4 o! u% k: `& P
  5. 0.0392157: 794 shower cap
复制代码
$ \8 s6 L6 F- q8 k

1 r' q8 B# e  K# J4 F3 }* l

. C5 C9 N8 L" F% X/ O
  1. 0.52549: 922 book jacket3 b; I. F0 h) g2 x0 b0 `
  2. 0.0705882: 788 shield: t% h; e+ c* @0 g: D' J% l
  3. 0.0705882: 452 bolo tie
    . f; K, Z, l% @; g
  4. 0.0588235: 627 lighter. q' K, e' F: M0 G3 a+ g! r* v# w- `
  5. 0.0352941: 701 ** towel
复制代码

: [/ \- q2 {) ^( e) _( M2 y' M$ d$ W1 E( n. m# {8 a* T


' \! G; R, {) K
  1. 0.121569: 656 miniskirt
    ' Z/ C' g$ w  Q
  2. 0.054902: 835 suit/ g1 O& W+ R2 u
  3. 0.0470588: 852 television
    0 o4 f0 G: d( \! [0 B1 q- B
  4. 0.0470588: 440 bearskin
    " v5 v7 V4 k5 p6 m% A, C9 K: |
  5. 0.0392157: 679 neck brace
复制代码
* f/ d# X" T7 W: \

( p% @, Y: C; K


8 G' A! G. l* ~6 ]+ G
  1. 0.65098: 918 comic book1 K8 Q9 e% L0 y6 r+ Q
  2. 0.172549: 747 puck
    5 Z  h9 l+ x# g
  3. 0.0196078: 922 book jacket
    $ v% D9 U- O/ B; a8 Z. T
  4. 0.0196078: 723 ping-pong ball) c& R" D/ C& a$ E
  5. 0.0117647: 806 soccer ball9 Z: K9 |0 u& ~
复制代码
- W) ^- O& j4 t( R; W3 w4 g

* `9 U% o/ O9 D+ o  p  g9 o


1 V( X4 E' z( v) p0 A! w: c$ ?8 f
  1. * g( z1 J& p  F& b; D' ]% ]$ d
  2. 0.678431: 918 comic book
    1 y' Z- p1 A- Q5 D. p4 u( i
  3. 0.0784314: 418 balloon
    1 s8 X9 K& r9 r2 H3 |/ ~
  4. 0.0470588: 880 umbrella
    4 J3 T1 H# H& o( n
  5. 0.0470588: 722 pillow
    # z9 @1 {: D; n
  6. 0.0156863: 644 mask
复制代码
* z" |# B' t( Y& l

/ |8 P% z/ J! z( U" `' |

/ V$ q- h5 }% F. x, T
  1. 0.184314: 585 hair slide
    : n# e4 C1 ]( z% ]
  2. 0.156863: 794 shower cap
    , S+ S. F! V+ Y
  3. 0.0941176: 797 ski mask
    # h, L& \# P1 n4 W" ?! O
  4. 0.0431373: 644 mask
    ! X! |/ I8 K7 T, \
  5. 0.0352941: 571 gasmask
复制代码
6 H" C5 f9 J/ P" j
! p% G& X* }8 _" D1 W0 w! f

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


+ h; S6 [4 y* q+ j5 Y

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


! K0 F5 R! C8 X- n8 d" M; h2 H: w. @+ p1 X! N' a7 E2 ^6 \! b
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-13 20:52

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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