嵌入式爱好者

查看: 12595|回复: 1

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

[复制链接]

48

主题

55

帖子

308

积分

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

- w3 B8 [; E+ `9 _

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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

0 _( J9 T3 @, b8 b+ L( S
8 Q" U1 U, b8 B' L& X/ b2 j# U

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


" O7 ?6 A/ h' ^* k

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

0 w# |% L; c: q0 t* Z: Z

一、 NPU的图像识别例程

: L+ R% t( u6 P; _0 n% W2 ^

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

$ F, O3 ^" i# G2 t& h/ h3 f, z* M- p7 y

: v2 N8 F7 y/ R" q3 N" K


0 c$ j; t) m( g( I/ G& U
1 r0 W! [) ?% K+ I+ q/ r0 x' i

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

' V) o6 P. ]2 s

) u( V* A" @+ W: N, k

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


2 H+ s0 V3 j) z: A& k) u9 h2 w0 q6 ~. i


- E5 e- Z5 ]) }. @1 R2 r
  1. libm-2.30.so
    + I' K) r9 L4 O# H$ c4 R
  2. libneuralnetworks.so.1.1.9( l9 A6 D" t1 r
  3. libnnrt.so.1.1.9
    ( N# \5 @, T4 x
  4. libArchModelSw.so* h  c8 w5 d' c" T' A. X. b
  5. libGAL.so
    / X/ l1 _+ z" c& e" O. c' Y3 U2 R8 {
  6. libNNArchPerf.so
    8 j+ k' u+ u5 Q+ I2 \! W4 |
  7. libOpenVX.so.1.3.0
    ' f( a1 K+ A; J; ~; Q( ?
  8. libovxlib.so.1.1.04 b! i; x( \! I! o. t4 w# M
  9. libVSC.so
复制代码

. u% A# A8 {2 W! t
% g' ]" b3 u! B$ u

其中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: o5 _4 T2 t

* B! V7 p: z, z8 _) g7 Q- X1 u. R5 N" T1 T9 e
. \' ]7 b" a: [4 W0 r: |) r

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

2 _- w. {* T+ P. B9 c3 [% d* P( ]

二、TensorFlow例程验证

( z9 q% `% Y5 r2 O7 e: n/ n

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

* Z" c8 U1 j  V

5 y8 \% [) Y6 S
  1. 0.780392: 653 military unIForm0 N2 S) P( }. ~+ ^/ _" @# m
  2. 0.105882: 907 Windsor tie. R9 `' ^4 g8 Y6 S( b$ s
  3. 0.0156863: 458 bow tie
    $ z% Y$ i" \5 y7 V4 V
  4. 0.0117647: 466 bulletproof vest
    2 f) b5 j9 \9 o% h
  5. 0.00784314: 835 suit
复制代码
% |) T, M6 Y* {

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

) I) `$ F! V+ y

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

4 I3 q8 F. E; \5 k

) |6 E4 _# x' K9 T# L/ X


6 U# O7 A  w. ^9 ?* l7 d+ p


) m! n: `3 u) N' {. F2 _7 M

  1. 0.352941: 274 dingo
      p7 G4 J- b) c/ i; j- |
  2. 0.254902: 265 Cardigan
    + l, j( l# ?1 ?3 m. a9 a) @
  3. 0.184314: 264 Pembroke
    : I$ x* j$ Z) F( b2 a( z8 s
  4. 0.0666667: 163 beagle
    $ j0 X7 I1 z, h7 e  n
  5. 0.0156863: 354 gazelle
复制代码

* Q4 x  [/ ?$ u- {& j: H$ T
/ m- g6 d' K- g  m& O; O35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
( v) ]' _! o/ ]+ p6 }
# Q( {9 ?, T; V, d

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


7 h( t6 H! ]5 Q1 S$ ?' C, q


3 U7 K- ^- Y( p$ }1 Z
  1. 0.160784: 639 maillot
    ! f+ y9 T$ }( b; b/ F  ~. s
  2. 0.137255: 436 bathtub
    # \* K5 A9 Y" `' b4 g
  3. 0.117647: 886 velvet
    3 T5 W, z! ^. H, S3 B# C7 V
  4. 0.0705882: 586 hair spray
    2 W6 y3 t$ H  Y/ k3 V3 o
  5. 0.0509804: 440 bearskin
复制代码
# Q6 F) |: T1 G; }, q1 X

! o$ t$ I8 o. r6 f

7 G! w! W2 T4 E! j- }" E
  1. 0.972549: 644 mask
    ! b8 K: F" u+ t
  2. 0.00392157: 918 comic book
    . n; L% s4 s8 F  T; e
  3. 0.00392157: 904 wig
    1 o! s) ~3 y# ]& j, h5 N" k. T
  4. 0.00392157: 797 ski mask0 l, q( A& E$ Z
  5. 0.00392157: 732 plunger
    2 l7 b0 T6 f3 `, Y4 P
复制代码

/ ~9 U; p+ V" Q5 g: q0 W. }) |! G8 ^( @3 V+ C


3 ~3 s. |; ?( v4 R7 M- B  B& B0 B
  1. 0.380392: 583 grocery store8 c8 |4 v5 Y( L! ^; X5 A; w; h
  2. 0.321569: 957 custard apple
    ! U' r) r4 W0 a" t3 k9 [+ B
  3. 0.0862745: 955 banana, c7 h1 V% E# w0 X! ?1 J
  4. 0.0352941: 956 jackfruit! ]0 q1 m6 s1 W
  5. 0.027451: 954 pineapple
复制代码
& \" `; ^+ |; E

, ~, Q# j/ E( X( \( [0 v' J

9 p( t# |3 |& z
  1. 0.254902: 918 comic book
    - F! Y- U/ {* |
  2. 0.0470588: 771 running shoe
    - w' [# V! ]9 O$ O
  3. 0.0470588: 474 can opener+ ]5 q% b9 k; x* j! J% C. D
  4. 0.0470588: 412 apron4 V5 g! j. ?+ d6 W7 _
  5. 0.0392157: 794 shower cap
复制代码

) [- h: H$ ~+ }9 f2 b
- N5 m/ q* o  G8 H5 P

6 F. k+ D5 l) u- }  P) y% ~) j' ~
  1. 0.52549: 922 book jacket
    : q/ Q. |. [' i; q( z% V
  2. 0.0705882: 788 shield
    4 i) b' c9 H' m0 L' f
  3. 0.0705882: 452 bolo tie0 P& K! y( Q% ]$ [6 h5 g3 G$ U
  4. 0.0588235: 627 lighter
    / u2 `- g% p4 R# M
  5. 0.0352941: 701 ** towel
复制代码
- L0 V, h- Q( @) j0 K
4 d  X1 z- ]- t: j1 X

( A+ o: [" t: t( h. u: j
  1. 0.121569: 656 miniskirt' |1 }* L( t4 u0 o- I
  2. 0.054902: 835 suit! T8 l# M" p: Y3 I8 l& X$ F
  3. 0.0470588: 852 television/ |& X- h& [0 {& W" ]& z$ C. ]6 y
  4. 0.0470588: 440 bearskin9 |+ M7 z. ?* f% G& v5 v: A
  5. 0.0392157: 679 neck brace
复制代码
3 B, |- x9 K0 e& b

& `2 Z) g( n* [' F

& F# u# U' b: J2 L
  1. 0.65098: 918 comic book
    2 e$ s* L* S6 ~  X' d1 Q3 K
  2. 0.172549: 747 puck9 u" L9 t- e: S% E' j5 N) d
  3. 0.0196078: 922 book jacket
    & Z3 R6 D0 c0 E$ T
  4. 0.0196078: 723 ping-pong ball3 U1 T. }* E' N* R5 c
  5. 0.0117647: 806 soccer ball; {- c6 E# J( q  a; l( i7 r
复制代码
( h, a: t9 b# |& E+ k  n. m4 T9 _

/ T5 z1 Q8 r& U" v

0 z5 _! j5 m6 F! S% l, N% ?' [
  1. ' _  X7 l: ~, k+ ?# U. [
  2. 0.678431: 918 comic book
    8 m( f$ |. V$ y4 t
  3. 0.0784314: 418 balloon1 Z; N8 Y! g( F' }- A& ~
  4. 0.0470588: 880 umbrella4 i! }$ R  P* w. [/ x) G. f
  5. 0.0470588: 722 pillow
    5 n! r) M# m0 B0 ~& o4 Y
  6. 0.0156863: 644 mask
复制代码

# X  h5 O% i# |  |$ _0 H' e5 e$ E, X0 [1 K5 P1 F

9 u3 X& l: B8 h2 T' e
  1. 0.184314: 585 hair slide
    : Z# j7 }" Q3 m& i' ~2 f8 }! y9 n' a% V
  2. 0.156863: 794 shower cap
    : Y0 K  O/ u0 J* n& F8 [, ~$ B7 V4 f
  3. 0.0941176: 797 ski mask
    8 ]& \; n, I4 C1 s
  4. 0.0431373: 644 mask
    " u, P2 q( E8 w- {
  5. 0.0352941: 571 gasmask
复制代码
- i. M7 N  o! V
% `, `, U) A$ x  r0 o

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


1 v0 s: G; v  R7 J1 h, f: |* H9 p

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

8 R1 _, d$ S! ?- J1 I. H! g

9 s1 T( k# L& h; J1 e
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-4 09:23

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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