嵌入式爱好者

查看: 11817|回复: 1

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

[复制链接]

47

主题

54

帖子

300

积分

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

. Q7 k; `1 z; z* O! h7 _9 o, k  o$ w

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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


  a. b( l! X# N( V: M1 E. u. j6 V/ h" I

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

1 N( t4 n$ Q8 [9 e6 ~

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

+ U- F1 d. T2 Z- _6 t. b3 J* f8 J

一、 NPU的图像识别例程

+ q+ l: {7 L: R- x* i" y6 j

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


: y. t4 N+ l8 L  b% {# ^, a


5 ]( C4 j7 V" d! Q$ j


9 u5 _* s) E- |5 x3 X; O# C2 ~
9 Z) ]0 B) @3 X8 M& [

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


1 Z% Q+ O2 g4 n% ]


3 O: B9 n& V4 x: m5 F3 c( v. m

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

6 E! l2 ?8 a0 ]* C% F2 H9 y
) I! ?" K" v: [5 f


( a' W' ~9 c' k. D: p
  1. libm-2.30.so6 z7 U: T7 s# L, O8 Y/ P
  2. libneuralnetworks.so.1.1.9- M; t  @& t. t. X2 o' {. o- P5 E
  3. libnnrt.so.1.1.9! Y2 {. U1 S1 w) h- T
  4. libArchModelSw.so
      Z" Y% r. c+ X/ T
  5. libGAL.so$ p- i$ l! o$ ^6 M0 y
  6. libNNArchPerf.so
    + y1 T, p. Y2 g; a  G! A8 g& @
  7. libOpenVX.so.1.3.0
    4 Z/ u  C* R: U
  8. libovxlib.so.1.1.0, \2 m1 l( }7 l3 R4 [! f% {# I- {* {
  9. libVSC.so
复制代码

8 B& |$ Y, ?6 O( u. ?5 H8 ]8 a# E; l4 _% u  G# q

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


( }3 N# ^2 C, x; j( f+ C! Y+ E) A

5 @$ w2 m4 g0 }# h! M, ^
6 V: m2 J2 `6 H* h4 N! g- h

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

! a- w$ e, B4 N. T1 J8 [4 o

二、TensorFlow例程验证


  p' T8 Z" C0 U0 s; U! i

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

, c4 N* z3 O. P% N2 l/ ^8 U: a


) a* q/ q5 H8 h2 S6 {9 S
  1. 0.780392: 653 military unIForm
    6 N9 E2 E* z- `0 X! ^( ]1 e) P2 t
  2. 0.105882: 907 Windsor tie6 x+ O: T* M8 E0 x# o
  3. 0.0156863: 458 bow tie
    # e% {! t9 b0 b
  4. 0.0117647: 466 bulletproof vest
    8 D9 X1 [; q8 }: E- T  T9 {
  5. 0.00784314: 835 suit
复制代码
4 I3 @5 Y! i: m5 o+ k: {

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


# s: q% l, D$ K& q% ?

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

+ Q" a3 O2 f* F- l3 [  {; }3 t

* j6 ?- f/ G% o

2 Y: x' I: o9 n  |


; t" w0 R6 A* o

  1. 0.352941: 274 dingo
    . Y+ p2 F; H2 h) `3 G9 H
  2. 0.254902: 265 Cardigan
    9 r0 N2 v9 o( `# L& q7 S
  3. 0.184314: 264 Pembroke
    ) k+ ]- T1 l5 c
  4. 0.0666667: 163 beagle
    ! y1 h. T/ i8 c/ W5 D$ S) u
  5. 0.0156863: 354 gazelle
复制代码

0 F% A4 e' A: d2 I
: t, G8 }; s: w35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。4 D5 m- z, u/ S& O
) q8 ]; f. c* P$ {  s7 V

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

( k+ i) @0 L1 l$ @- u6 f! ?' A


  m" d. s( A2 [+ G. ^+ H8 p( l& W
  1. 0.160784: 639 maillot
    * I* N5 D9 y- x! e2 f& Z- [  y: c; x
  2. 0.137255: 436 bathtub
      h5 C0 t# V4 `7 W) b- Y8 ~7 w4 e
  3. 0.117647: 886 velvet
    3 j! t, {* T) t. y' `* V
  4. 0.0705882: 586 hair spray
    ( W. C. B2 f. I' u3 r
  5. 0.0509804: 440 bearskin
复制代码
: j+ t: @: f" ~& l! d% x* p4 l

3 C2 W3 S3 [4 s" u! b. _1 T


/ a0 r* o* e* ]+ F
  1. 0.972549: 644 mask
    # [/ h4 k& c2 n
  2. 0.00392157: 918 comic book
    6 U* c2 ?  X/ z8 a; h2 N
  3. 0.00392157: 904 wig* _! Y# U# \5 v! h
  4. 0.00392157: 797 ski mask
    8 Y9 m% ]- [/ b9 H
  5. 0.00392157: 732 plunger$ C: x) O7 ?  G4 o3 t4 B
复制代码
& X4 K. U( C9 z+ [
" ^1 N# k6 P& r$ D& r$ c* S

; a; ~& _/ V- o' |, T6 ?- a' {
  1. 0.380392: 583 grocery store
    9 b% c6 R  J2 `* o
  2. 0.321569: 957 custard apple4 A! s8 K% ?  q+ I
  3. 0.0862745: 955 banana$ f) i: N' p+ f2 _( O7 O! B4 ^
  4. 0.0352941: 956 jackfruit+ p- R" y/ j* u% H6 A
  5. 0.027451: 954 pineapple
复制代码
+ B' K" S5 Z% p0 A  g; F2 E3 l4 P4 v

" v3 I5 `' ?! y0 a1 }


  l5 Y/ J! V8 K5 v1 [2 }
  1. 0.254902: 918 comic book8 A# r* m) @( ]6 D% y6 Q* k
  2. 0.0470588: 771 running shoe9 v! e. h  f4 M2 j3 X
  3. 0.0470588: 474 can opener
    # I6 `$ J6 d# `8 F3 H) F- a: J
  4. 0.0470588: 412 apron
    ' A+ r- V1 ]& W7 t. K) Y9 T7 b; {+ U
  5. 0.0392157: 794 shower cap
复制代码

" p; l& O" Q6 ^  x5 L+ f5 s+ T2 }3 Z7 R6 a* [

( e" b1 N  z( H5 P+ c  F1 g
  1. 0.52549: 922 book jacket4 V1 `8 r% l5 o5 r
  2. 0.0705882: 788 shield0 E5 k* y. z2 R# c3 ^1 |5 S
  3. 0.0705882: 452 bolo tie
    ! A; d  n! f1 R% k/ B% ]0 R* r% g2 o
  4. 0.0588235: 627 lighter$ L7 l9 _& g) I
  5. 0.0352941: 701 ** towel
复制代码
0 [; ^7 v4 O8 w' H. g5 a  G1 ~
' T" X$ i1 X$ j2 k* k1 z7 q


- q6 y- W3 \. o0 W1 |4 A; _
  1. 0.121569: 656 miniskirt& c9 m) K$ e7 [
  2. 0.054902: 835 suit9 I. t9 M: r9 ]  C; k( C
  3. 0.0470588: 852 television
      s* N( L& h9 J# r' d- c
  4. 0.0470588: 440 bearskin
    ' E. F) ]0 q5 H$ m
  5. 0.0392157: 679 neck brace
复制代码

- z" I) \  K3 l/ W; \" _6 @; T3 T2 M& J* R% g% }! L


$ k5 y7 G* p2 M$ @; v
  1. 0.65098: 918 comic book' X' C1 ]+ [4 f1 A
  2. 0.172549: 747 puck
    % x1 |) D( n! \$ J) W
  3. 0.0196078: 922 book jacket& A. d0 R! p, b6 M; o+ e
  4. 0.0196078: 723 ping-pong ball- Y, ~) F' H6 m; E/ N) k$ X  l
  5. 0.0117647: 806 soccer ball; q9 u% k; I( T$ m4 W6 h
复制代码

" C9 g, I8 @; r& h. \, p& ^* k6 \* |7 R, l- T


5 i3 e. X* s& _3 n  t; l& j

  1. 5 f* ^* {- B& ?. \- {+ g
  2. 0.678431: 918 comic book5 H# M$ B( H; f6 v
  3. 0.0784314: 418 balloon
    3 [! ~& E$ v1 ?8 w
  4. 0.0470588: 880 umbrella
    - l+ h" ~0 C( _$ c" Z& V
  5. 0.0470588: 722 pillow
    8 i' K! P# _! F9 ^% i$ R% D
  6. 0.0156863: 644 mask
复制代码

7 |9 g4 l' l( X5 n1 z4 G# f7 G' i/ B2 o+ q8 E


/ q/ V% p' j( G2 s$ d/ {
  1. 0.184314: 585 hair slide7 e' I& N# b; K2 |$ D) ?1 V* Z
  2. 0.156863: 794 shower cap
    / O8 s7 L8 J( P; m6 N5 z1 j
  3. 0.0941176: 797 ski mask& J7 O5 E% O  ^" ^. V1 z6 m
  4. 0.0431373: 644 mask
    7 P- D8 n$ ]9 N
  5. 0.0352941: 571 gasmask
复制代码

1 _$ [+ ], c4 V* S1 E/ V
1 E, X. a8 f, S0 q0 w

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

8 V, C! V  U. U  ]+ J

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


0 ?: P7 ]8 o+ L6 S
( ^8 A/ `% O$ i: F3 x, i' O
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-12 10:45

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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