嵌入式爱好者

查看: 11252|回复: 1

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

[复制链接]

46

主题

53

帖子

296

积分

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

7 a; H5 p0 F& j9 q5 [) `. |' a% t

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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

9 d) G$ K7 w2 z5 S, m+ q
1 X$ `8 r6 R$ f* g" Z) A3 [

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

7 ]" f# T# ^+ U" t

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


# j! J+ A; A2 d* [- W

一、 NPU的图像识别例程


/ s. i) c4 @6 ~2 q1 L) S

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

& Z/ b0 p& x- S: S4 `9 q! Z

/ o( I8 }' f: ?2 g1 O/ a; B

, ~! T: Q+ w) ~2 P, m2 E" O2 E

% g0 l( q- h6 I0 p1 M" h" ?

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

* Q5 ~, v6 T# Z. f  z; i


) X1 J+ j6 y7 P6 v7 }, h  ]3 w

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


# _$ y8 v  Y- j7 `4 Q! T/ w; b
) H" ]' {5 k5 ]& L- X  ~


5 K8 l2 C2 K& k7 ]9 |# }/ x
  1. libm-2.30.so* m0 U9 y) R# d; _, ?
  2. libneuralnetworks.so.1.1.9& y; N2 _  |5 D( m
  3. libnnrt.so.1.1.9
    ! e5 h6 g  w& ?% o) m
  4. libArchModelSw.so5 h/ o' k3 d1 {" m$ M2 x, q. A+ x
  5. libGAL.so
    8 Q1 c9 h3 w  v& k
  6. libNNArchPerf.so& s) E6 A6 y7 b
  7. libOpenVX.so.1.3.0
    ( B% |5 [1 B% C6 S' l! `$ Z( ~
  8. libovxlib.so.1.1.03 ]0 }$ I  x, X& L$ J+ T- o
  9. libVSC.so
复制代码
+ N( L; A! Z7 V
2 M4 ~# a7 A1 B1 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/),再次运行:


. _: P8 S0 L0 F5 Q3 b


+ x6 H% _( J. N2 c0 ?1 d3 {; q7 l& e  I& K: W" J* j  I

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

) O7 I! M; Y! W, a) M4 g

二、TensorFlow例程验证


, ?6 f' q5 K& M: L. V. k

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

2 D. H4 F1 G# j5 c( M

' p7 V  d+ w! @% w; x# r
  1. 0.780392: 653 military unIForm. @" m# ^  e7 V$ d
  2. 0.105882: 907 Windsor tie3 }4 Y, V( k0 l2 B% [
  3. 0.0156863: 458 bow tie# l  Y4 V. J, w; v3 }  q
  4. 0.0117647: 466 bulletproof vest
    0 K3 o5 s/ [* e3 R
  5. 0.00784314: 835 suit
复制代码
! l6 C3 ]7 H0 Y( O( W, s

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


/ W/ P! o- _( [( z: o

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


5 U/ ~% j4 M" P6 X2 _5 @
9 N( z- d" c1 Q/ m( I+ T8 g; R

; c& I, U0 g2 |* B5 |) i! ?

5 j5 v8 v: {5 ^, e; D. ]

  1. 0.352941: 274 dingo
      Y3 o+ m$ i8 h
  2. 0.254902: 265 Cardigan# v. [" j! v* X) Z$ z- f6 q/ L" I$ z
  3. 0.184314: 264 Pembroke
    # d/ e: v+ P/ }" R5 d/ ]4 Q* Q8 E7 n* G: E
  4. 0.0666667: 163 beagle, U9 ?" f9 b5 \: k  D: _
  5. 0.0156863: 354 gazelle
复制代码

0 L8 H" w* ?, p4 D- Q0 f/ P; a
+ J5 L' @4 w. Q35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
9 n* X/ d3 i0 z' U+ ^' Y1 ^' \' P3 f, E! Y

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


7 W1 ~  n  ^& }1 o* S

, z7 \0 [7 Q4 F( K7 L! j5 H+ D$ }
  1. 0.160784: 639 maillot
    ( Z7 o4 B$ n3 X
  2. 0.137255: 436 bathtub1 Y( n1 g, K+ f
  3. 0.117647: 886 velvet; Q5 _0 C, B" F. _
  4. 0.0705882: 586 hair spray' Y2 W: c% z' |$ ]8 e: b* B- r
  5. 0.0509804: 440 bearskin
复制代码
: W4 P1 w" _1 W7 |5 r0 Q
& _+ \) W" H4 |) L" `6 N; ?


. K8 o! J& u& N5 t9 r
  1. 0.972549: 644 mask
    8 T& m! m4 s! q' n. R
  2. 0.00392157: 918 comic book0 _# [, K# a- t7 h8 t- B
  3. 0.00392157: 904 wig
    5 b% V# Z& L2 g
  4. 0.00392157: 797 ski mask
    - m7 V( L  b( R: r' `
  5. 0.00392157: 732 plunger
    ' a1 e' S8 r% H2 y) o* `; u( x) G4 y
复制代码

& d& Z9 j  B8 L9 n# x( m: M! t" r0 t+ F


9 l. p+ V2 w' L, Q  `
  1. 0.380392: 583 grocery store9 e! m0 v  \: J5 }0 X
  2. 0.321569: 957 custard apple
    ( a0 q; w$ g; B2 [. ?7 \9 A
  3. 0.0862745: 955 banana1 E6 @, n1 B, [9 {% \# `( `* z
  4. 0.0352941: 956 jackfruit
    ! E1 z9 `: J$ L
  5. 0.027451: 954 pineapple
复制代码

  m4 X$ ~2 S# b: S$ y; v
2 ~4 {" O. I2 t8 x3 O% X: L( P6 a

$ h* P1 h* L- g6 K2 c
  1. 0.254902: 918 comic book9 X. R! o* |* y' u# A
  2. 0.0470588: 771 running shoe
    4 }) D0 y. m& Y* U4 E# g7 g
  3. 0.0470588: 474 can opener
    0 m1 P, h! K# s* G
  4. 0.0470588: 412 apron! p# w" f" z& o9 s2 C
  5. 0.0392157: 794 shower cap
复制代码

/ B0 ?; R  k, ~! H
$ R( {5 Q( u" c* C; v2 I5 G


7 E) \  Y# ^! H% F6 T
  1. 0.52549: 922 book jacket* a3 \" n. h7 j/ Y) a% u
  2. 0.0705882: 788 shield) Z0 g- x5 W' d; \; r' Y$ Z
  3. 0.0705882: 452 bolo tie
    . Y; W8 @' W* `& H: }& L& ~) a
  4. 0.0588235: 627 lighter
    " I0 S; x- `& g, B- n5 {' W
  5. 0.0352941: 701 ** towel
复制代码

! A4 E- i; w; [% n  T& m8 J# M& Y9 v+ t! A: Q


' Q' ~5 Y6 F0 N0 u9 I
  1. 0.121569: 656 miniskirt
      L$ z1 _0 C6 I4 m: \5 e
  2. 0.054902: 835 suit
    . c1 r3 H, q! ]
  3. 0.0470588: 852 television
    ( M0 R: R; c) |1 u4 q' l8 }4 |
  4. 0.0470588: 440 bearskin7 x0 c. }! O+ }% v  D
  5. 0.0392157: 679 neck brace
复制代码
0 T/ a' x, h9 p

( q  k" L( @0 J

8 A7 u* R: O+ ?* K
  1. 0.65098: 918 comic book* {" S, N5 d+ [$ P$ ?- ~
  2. 0.172549: 747 puck
    & `9 o& A' M' @. m6 N: u" W" b
  3. 0.0196078: 922 book jacket
    - I5 P% a9 ^: k3 L- \& P
  4. 0.0196078: 723 ping-pong ball
    " g$ _3 Z: u+ K( D/ ~  ~
  5. 0.0117647: 806 soccer ball: R5 M' k5 v! k3 e; \
复制代码
& v) r, T& k0 v  O6 f5 E: {  C3 M
; C; M& d2 Y7 m) J- x

+ ^) c* J' B$ I  c. N$ p
  1. ) \, B5 C) F( p% p; O3 w6 O
  2. 0.678431: 918 comic book. u( K; @5 M. R  ?/ {
  3. 0.0784314: 418 balloon
    * d! P- `6 x; b
  4. 0.0470588: 880 umbrella
    6 s- E) Z) ~5 y0 E8 [/ Y
  5. 0.0470588: 722 pillow
    / M/ r8 A# F1 V
  6. 0.0156863: 644 mask
复制代码
+ ~8 \; b7 n& `& k  n! V

4 \- T- W9 c7 S- t  p6 A1 U

* W' M/ `' `5 B# `% b  z
  1. 0.184314: 585 hair slide$ o( Y+ X% @4 e* F2 q; L6 _3 z/ a, s+ V
  2. 0.156863: 794 shower cap  G" e4 W: p0 X# n
  3. 0.0941176: 797 ski mask# C; c( o8 \- E% Y* q/ D
  4. 0.0431373: 644 mask$ y. Q6 a, j5 [9 v8 O0 m
  5. 0.0352941: 571 gasmask
复制代码
3 c+ L% a, U" y& J

- L9 n6 T5 d* v& G

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


$ Y$ K) Q' B4 r2 }% a

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

. E& n  ]% v5 x2 j+ A/ s8 i

, O9 C4 T; \3 K/ x# {
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-21 07:08

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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