嵌入式爱好者

查看: 11084|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

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

1 F/ C: y" ]7 D# q2 ~0 {

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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

$ h) d1 v9 W2 L

- J; v  N! }( W1 v

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

) R- u" }1 c; T5 J

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

+ A8 D+ T& H3 a! k0 r

一、 NPU的图像识别例程


" x5 B+ L6 x$ F# \

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

$ r" o* Z, B2 F3 o


) ]8 O2 r' o: ~* M


6 e7 [/ I0 z$ a8 j
# c- r1 B. i6 l: u7 g5 O& g

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


% u. G2 |8 K" h/ I7 G8 s


5 n( r' y8 I$ [9 ]% `/ F+ }; X

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

. |9 B2 |$ z1 t3 P
- i3 c9 R9 ^9 i  [. v. b


! M0 o' C. W, a/ K
  1. libm-2.30.so
    ( x6 J1 O; _1 F* P8 p7 W0 c+ W' Q
  2. libneuralnetworks.so.1.1.93 N- E* b5 H, u& l. @3 m
  3. libnnrt.so.1.1.9
    ' a/ s; S7 [/ u8 ]* a2 v  C: W
  4. libArchModelSw.so
    # Z$ O5 e4 O: `/ W. ~4 y
  5. libGAL.so; U# V4 R# n* F- v  k. U7 u: z
  6. libNNArchPerf.so
    4 ~$ D- A$ S* Z5 I
  7. libOpenVX.so.1.3.0) E+ j4 A( H+ V. J' m  R5 a
  8. libovxlib.so.1.1.0
    ; L" M9 {9 K+ x$ W7 R
  9. libVSC.so
复制代码
/ |; K0 o! p1 I7 v
  b, J) q& Q2 H

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


) Z% f& p8 o9 {; l

8 ^% o; ^. v0 W# t

/ r( A2 H- J: e' V: Q

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


& {" `( G+ G) ~0 G$ u) f) \' |( S" R

二、TensorFlow例程验证


9 K3 O2 n7 E; p0 C4 X8 V

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

7 S2 o: k3 Z1 B# [

& T8 R5 [; w! p, c5 W0 i
  1. 0.780392: 653 military unIForm
    " r- q- H- W8 [0 _+ F( D
  2. 0.105882: 907 Windsor tie$ M& Z% U9 t, E- E% j
  3. 0.0156863: 458 bow tie
    3 @! D7 ~8 R) j# O( [/ N6 F) I# l
  4. 0.0117647: 466 bulletproof vest! i3 n  Z+ c9 e; b* M, ?! ]# x. q
  5. 0.00784314: 835 suit
复制代码

( H# x6 [% z' p, ]5 T4 H: T4 J  K

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

: M) H. o6 u9 x( {( }' u/ X

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


7 c7 s1 w+ e$ o& j% Z( c1 V# m' r+ T8 g/ h; P


; Y5 W6 a* k+ P& K, X- K0 Q


+ Z6 k; b, H0 p

  1. 0.352941: 274 dingo1 e3 K' Q3 K# a- q3 o; U; P
  2. 0.254902: 265 Cardigan
    5 Z" ~2 M' ]- N5 U$ z, q3 Q! Z
  3. 0.184314: 264 Pembroke( j! @- Z* l  N+ v
  4. 0.0666667: 163 beagle4 `. ]3 Y' O! x- E( ], T5 @9 n* M6 M
  5. 0.0156863: 354 gazelle
复制代码

7 E3 }/ |1 R7 e: [; k( ^4 i( L0 b4 u, c2 }8 c1 a
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。7 h# ?; ?3 J- v0 w

, ^7 O9 e4 E! R- a1 z  z7 x

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


7 D, {1 i0 w% ?5 ^9 _5 @

; ^0 P2 s4 ]% ]9 Z( J, p, V
  1. 0.160784: 639 maillot1 q% ^6 L; z( T/ t1 a
  2. 0.137255: 436 bathtub
    * _5 b% t0 x: N/ j( p9 f
  3. 0.117647: 886 velvet
    1 D) y8 q0 e+ o* R; q. E$ N) C0 J
  4. 0.0705882: 586 hair spray
    / g* z5 {) [7 k; m1 @
  5. 0.0509804: 440 bearskin
复制代码
3 N" U  y0 A* m4 |
7 o! u& Z5 H3 c/ L! h

0 |5 F3 i  v/ l8 i( a" c
  1. 0.972549: 644 mask: x- w9 d* Z$ v# G7 [
  2. 0.00392157: 918 comic book
    : G4 N6 p4 `' i" B- ^' q
  3. 0.00392157: 904 wig
    ; b: ]2 q4 r- G$ [! J7 W
  4. 0.00392157: 797 ski mask
    4 B( h4 B' n8 k( W9 {- {5 r
  5. 0.00392157: 732 plunger
    : ~5 S; R; e  ^& Q
复制代码

) c7 |; U$ ]( Q4 I
6 ]: L; s- M; g( h8 s, T


6 J( X7 |4 ~2 O% Z; a
  1. 0.380392: 583 grocery store( H' W+ H! c' k+ h
  2. 0.321569: 957 custard apple+ I; {) Q- r; ]( c+ L3 `1 Z) |6 G
  3. 0.0862745: 955 banana- G* M' }3 u% g" X
  4. 0.0352941: 956 jackfruit' h1 d) a% n/ k/ b* o
  5. 0.027451: 954 pineapple
复制代码
! P! P$ E" D. i% p: |1 h8 \

/ W7 i' u8 y# S( \/ L7 q, Y, t

; K( F- t8 d; v2 D  A
  1. 0.254902: 918 comic book
    , k4 r1 D5 Q( c7 z3 R
  2. 0.0470588: 771 running shoe
    # a; d8 A  `' K) w3 p" `$ r, w; ~2 i( d
  3. 0.0470588: 474 can opener
    % T! W7 n4 L& Q7 x
  4. 0.0470588: 412 apron  r3 J6 D( e" h6 t! n$ z
  5. 0.0392157: 794 shower cap
复制代码
) r4 y/ Y) L7 v' [( Q( w
5 K9 w9 l9 s( {- J/ T3 o" C+ A


2 P9 Q- G0 V' Q+ x3 \9 q. a
  1. 0.52549: 922 book jacket
    $ w: [9 n( K/ _( U  W+ P& a, E8 \
  2. 0.0705882: 788 shield6 H! r7 c* H( S: l+ h) s+ x! F
  3. 0.0705882: 452 bolo tie
    * n" c$ n: \/ W' Y% V
  4. 0.0588235: 627 lighter
    ' h$ R3 b5 l" f
  5. 0.0352941: 701 ** towel
复制代码

( p( h3 ]+ B' L9 g6 L# R3 S) Z$ j& H% F


* i) o+ O5 H% j6 H* @0 k' @! e
  1. 0.121569: 656 miniskirt- m9 g# \; o& R
  2. 0.054902: 835 suit
    - ]( C+ _0 m- q$ h' x
  3. 0.0470588: 852 television9 X3 |; w9 K6 z
  4. 0.0470588: 440 bearskin, W9 k! w/ i7 w7 ^* A! Z
  5. 0.0392157: 679 neck brace
复制代码

$ U% o/ e. m% B+ Z: z: d% [! c/ o2 p) B2 [& H5 d$ g

4 z# D. V2 {3 f+ h
  1. 0.65098: 918 comic book
    & j9 f0 W( @; t- W. p
  2. 0.172549: 747 puck
    7 |) f% T) L* f1 _
  3. 0.0196078: 922 book jacket
    8 `6 z; [# m8 A+ |/ c5 q( q9 K
  4. 0.0196078: 723 ping-pong ball
    & g$ i$ P6 j( o4 ^7 W1 M4 e
  5. 0.0117647: 806 soccer ball
    ; v. p2 Z, t- G2 \0 k  E
复制代码

2 R, \9 e# ^' I" j8 k- w
* Y. w) K: |" a$ R- f( U

1 S0 D0 r6 K# W2 P' B
  1. # d, y- T2 n1 \* {: {" G
  2. 0.678431: 918 comic book
    7 t- X1 \# d. a  |# u
  3. 0.0784314: 418 balloon8 q  ^% e) ?5 l) I) w! H
  4. 0.0470588: 880 umbrella/ k# H9 d% y" ]8 k; I, J, e
  5. 0.0470588: 722 pillow: o+ T1 M& R& X5 a3 g: X
  6. 0.0156863: 644 mask
复制代码
/ ]* K1 G3 z" p  {2 [

0 W) y& f7 q6 B" ^0 a/ ~, S/ \

8 B1 [  C. W6 |2 h
  1. 0.184314: 585 hair slide: V/ d% y5 J$ L$ h3 _0 k
  2. 0.156863: 794 shower cap5 w7 J& x, s+ B# i, b
  3. 0.0941176: 797 ski mask6 J) @$ n& ]& b' O
  4. 0.0431373: 644 mask" H9 @3 w, r1 ^! F8 Z: }
  5. 0.0352941: 571 gasmask
复制代码
- G/ `% h' z4 E

! R& z3 d9 g1 u" o3 J& O/ I

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


5 ~7 k. k" |! \) v- b) P7 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# V( {% ]0 h: R. l+ @$ m
" T8 L* p! z9 y$ j- C2 Y
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-10 06:30

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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