嵌入式爱好者

查看: 11581|回复: 1

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

[复制链接]

46

主题

53

帖子

297

积分

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


( O5 D* Z# l7 G+ _& ^

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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


# r9 |* |: l. p% u/ l, z+ I1 g3 {
( I4 a# p( F5 k- D

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


! y% ~! w& x8 h2 g& c! X

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

. p+ ~) G# f. v$ T& d

一、 NPU的图像识别例程


& v. E4 ^, a6 _2 D5 }

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

: l' a  x4 f/ G- L# l. |

, {3 G* u" |. M% o6 f7 D

, D  @- h: Y7 I. m9 S
6 a. a  D  e- H3 g

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


, J, i7 y  d3 x

6 i$ e8 n7 k( M; c$ Y+ J

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


2 N* ]% c, T" o  M1 B. s8 I  M
; c% \& K2 y/ j1 j: h


2 V; h& o+ C2 T& \2 i0 Y1 M
  1. libm-2.30.so
    ; Z; k9 T. R* _+ F0 r$ x0 P+ ?
  2. libneuralnetworks.so.1.1.9
    " L5 b4 J# Z0 u. R2 W
  3. libnnrt.so.1.1.9
    4 q  d+ p6 K; k
  4. libArchModelSw.so' y. k9 M! Y2 s7 |" [1 Y
  5. libGAL.so
    , h6 H: }$ E: T) k. [8 L! ~0 x" O
  6. libNNArchPerf.so
    2 H1 B; E* r1 J6 g
  7. libOpenVX.so.1.3.03 U8 J2 Y" ^& A
  8. libovxlib.so.1.1.0
    9 r8 \- {3 p) t9 E
  9. libVSC.so
复制代码
2 t+ K/ L- T+ ~8 M
7 F; a! r" `+ i6 _8 p/ b

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


# ]+ |- g& }3 u1 H* M


+ S) g* F% @; v5 H; E) o+ S* O0 S/ U% i1 R9 L9 F

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


8 R9 a, t3 z$ V; k. a7 J$ z

二、TensorFlow例程验证

" t4 C/ _; k% d- W5 s

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


9 ]! z+ n+ m. ^


( @7 m5 t$ z3 R7 z& E/ ^/ M
  1. 0.780392: 653 military unIForm
    4 P& o/ ]% f- S# p9 [4 F8 Q3 Z
  2. 0.105882: 907 Windsor tie/ P# _+ T# ?* d; h
  3. 0.0156863: 458 bow tie
    0 i5 b1 m! U6 b# ?* p* P  T
  4. 0.0117647: 466 bulletproof vest
    ) n8 u  F' S' R& B- \5 f7 R
  5. 0.00784314: 835 suit
复制代码
1 i( J5 M+ Z  i4 I* C* S6 T& V* G$ I

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

* o' q/ E* ], s+ ?. b

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


6 |# e$ I% G, |8 R: r. f$ A0 o7 x# L/ T9 x* \  d% I

& `, P( N$ R' P+ X/ R& L

9 H, S, g& d0 e2 K

  1. 0.352941: 274 dingo, A: G3 B( [, R
  2. 0.254902: 265 Cardigan
    & e: W3 y$ k+ W5 A5 `: q
  3. 0.184314: 264 Pembroke
    & e" ^* X" B+ R& E: _+ V6 i" Z
  4. 0.0666667: 163 beagle; s( x: b# y7 W, s
  5. 0.0156863: 354 gazelle
复制代码
- v5 S' [4 b4 V9 _" I5 ^
5 f9 l  ]# |- B% S  H' P, `
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
, ?- b* y  g! o2 A' N# `& Z+ D) M
+ n. ]. w- k  U

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


4 A4 s+ H2 X7 R* Q


, F. O) {: s- ]
  1. 0.160784: 639 maillot# B# t2 {- x- }$ S
  2. 0.137255: 436 bathtub& B4 B; q- t0 {
  3. 0.117647: 886 velvet
    ' d# j' Y" _+ r3 d' A1 T
  4. 0.0705882: 586 hair spray
    / o0 c2 ?8 Y, v' b
  5. 0.0509804: 440 bearskin
复制代码

4 @/ s, Z5 Q! i5 j6 B' k4 P. T
  D$ P( m$ f2 q* D! z


9 @6 S3 b9 f$ o9 X- t
  1. 0.972549: 644 mask$ Q5 ^) b- `1 L# q
  2. 0.00392157: 918 comic book# @7 A# A  ^# L
  3. 0.00392157: 904 wig
    $ D" m$ F4 h( B
  4. 0.00392157: 797 ski mask
    2 M/ ]$ V6 K! b; x+ a" K
  5. 0.00392157: 732 plunger
    ; y8 l) ^3 ~& Y0 _6 \% l
复制代码

2 U- M- Z8 Q$ p0 g3 j
! t9 }5 ]* C( M

; l% O( m2 N2 |! ]: @+ P9 `
  1. 0.380392: 583 grocery store( k7 k5 }. r) k. _) p6 U
  2. 0.321569: 957 custard apple( S5 v, d! W% T# i, U
  3. 0.0862745: 955 banana, D2 h; W; I$ C, S' F
  4. 0.0352941: 956 jackfruit8 f, ]1 B6 I* c4 P' V
  5. 0.027451: 954 pineapple
复制代码

; @6 h, U7 C! j4 R. f5 w! L- Y7 _% W5 @: x9 c


. c7 F  V" [3 r0 V6 A( I
  1. 0.254902: 918 comic book; r6 ?' ^$ s7 F! r# Y1 x
  2. 0.0470588: 771 running shoe+ U# Y# z& M0 `5 S2 P, U
  3. 0.0470588: 474 can opener% \* ^8 H3 ]: P% ~! v, B- }& d0 R
  4. 0.0470588: 412 apron! u' U% T. l# n2 H1 _% V
  5. 0.0392157: 794 shower cap
复制代码
2 J1 b# ~2 C, @# |4 [% b* m# _# i& [6 q

3 A$ r/ E/ r$ b. F

; n  F/ E- C' ?8 f7 g0 S
  1. 0.52549: 922 book jacket
    ; ]  w" Y4 S0 T& [0 t# p; q  }5 j
  2. 0.0705882: 788 shield
    " R" o/ _( y( ?' x
  3. 0.0705882: 452 bolo tie/ [8 G: k) P2 _+ J, W& r
  4. 0.0588235: 627 lighter
    / U& C5 y2 M) E7 U" x4 B
  5. 0.0352941: 701 ** towel
复制代码

, i( l) b+ I, L7 e5 Q3 ]" ~* v8 J7 I- r

: f: T) X7 H3 c" Q: {( S, X* J
  1. 0.121569: 656 miniskirt
    ; @6 B6 \% e: _
  2. 0.054902: 835 suit% v/ `, |; x$ r7 Y5 ], {/ w) a
  3. 0.0470588: 852 television6 |: X5 B8 j" O8 d9 X+ f
  4. 0.0470588: 440 bearskin: I* g( ?0 N! O1 U3 u, i5 Z
  5. 0.0392157: 679 neck brace
复制代码
: p% _$ y% p; {1 Z- D9 g
" ^5 a0 P1 y: y/ r9 L& d: T+ z

- k5 o: T+ K( X" z! j; u* e: v
  1. 0.65098: 918 comic book
    4 L) j0 C0 n" I0 Q( A5 }) j
  2. 0.172549: 747 puck
    7 z6 i7 j" R  K7 Z" i5 b
  3. 0.0196078: 922 book jacket
    . k7 r. s& b" S# E' |1 y
  4. 0.0196078: 723 ping-pong ball8 H% A  u3 I5 G) ?) @
  5. 0.0117647: 806 soccer ball
    # e1 q6 E/ T- A0 [' r
复制代码

# Q9 U; J8 W8 `" t: g) ~
: P+ q3 v" n/ k* O

6 `2 Y7 _$ l% c; d, R

  1. 1 N/ K5 [" p& @/ C
  2. 0.678431: 918 comic book
    2 L; _* H1 t& p! P, v: Q! ^, _( h8 J
  3. 0.0784314: 418 balloon
    9 q! z% |9 W0 ?
  4. 0.0470588: 880 umbrella
    % H# `$ @6 t$ U% U. b; s1 Q
  5. 0.0470588: 722 pillow
    0 x; R! n/ n) ?' w* ^6 ?* J2 k
  6. 0.0156863: 644 mask
复制代码

% }% c8 t/ L8 }4 D$ ^( v. X4 o/ M& I$ ?3 z4 [3 l0 B


3 P' O% i, z& @- T. ~0 F6 K7 T# x: r
  1. 0.184314: 585 hair slide, g6 a* ?- a( a+ m% @& _2 `
  2. 0.156863: 794 shower cap
    ; y/ d1 S. F2 W  Z2 v5 z" s' d
  3. 0.0941176: 797 ski mask
    # x. B5 w; s$ Y5 [6 {
  4. 0.0431373: 644 mask
    1 X# u+ {* C1 u% S# p; [' {
  5. 0.0352941: 571 gasmask
复制代码
$ h6 C1 q3 B% D8 X

, y8 B3 `" _6 C5 D/ M0 \5 Y. n

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

; `4 w* Z' D1 n  P5 X- W% Q+ G1 ~

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

" X9 N2 `4 _" p. H# T. R

) a" ], r" y6 K5 y% J0 X
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-25 21:44

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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