嵌入式爱好者

查看: 10070|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

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

# F6 K! N( v2 `) U) \1 n

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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

' P8 G- l* s" z
2 y# e! r& v) ?1 u

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


. {% ~7 E, N, K( I" i6 y7 F5 z

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

8 `0 q3 I* P8 |$ Y( Q/ c0 b1 v

一、 NPU的图像识别例程

2 P1 [: W. D$ _" _$ u2 k

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

& v" Q# W# W/ ?: D! k


1 |9 H) T4 P" Y* p+ _


6 K# o' N. d7 T& E( F' W3 ^' Q' ~$ ]/ l) W% R+ a

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

4 m4 }$ A' R: Y* Q  Y8 k


0 ^# @: u0 R$ a  U# Q6 U+ Q& G: _, z

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


( E2 @, [. n) q# F
  r) B; j- n% }* ~+ h) g2 l" c

. T0 K8 |, @* z4 \
  1. libm-2.30.so. B2 D8 v( o' g1 Y% l! U% i
  2. libneuralnetworks.so.1.1.9" {! ^, T3 w  ]* C( }
  3. libnnrt.so.1.1.9
    6 f& ?- K* u4 M
  4. libArchModelSw.so5 `8 R1 M: R# m; I) u0 q( ?
  5. libGAL.so5 H- Z6 \. [% @2 e* p% w; \: l  r
  6. libNNArchPerf.so# Q3 W; y/ q  i: T4 \4 R+ z# |
  7. libOpenVX.so.1.3.03 ?3 v* M  ^, d3 {( w% z
  8. libovxlib.so.1.1.0% }5 E1 K6 D! S' \/ l; b9 N* V
  9. libVSC.so
复制代码

$ a0 x: i7 Z$ _) L' _) I# X& d$ ~1 }1 U8 h6 R' L4 |! D

其中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 [: V4 ?1 P- o- p/ F. G


$ N: A+ F7 W9 |" T! o; j3 ]' r8 U
3 G, b5 J. R3 l+ P& W" G0 s5 ?

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


( A4 `9 I  \1 r) g1 N

二、TensorFlow例程验证

! i) @7 U# g1 g7 `/ t

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

# c& h, Z+ _: u. ^! U

$ t$ J4 h. s& r7 Q
  1. 0.780392: 653 military unIForm
    " |' V* `5 r+ J: [' c1 J6 e# J
  2. 0.105882: 907 Windsor tie& ^, w; D# T& i5 J0 ?# m7 Q
  3. 0.0156863: 458 bow tie
    8 O. j9 Z3 ?! }9 J8 B
  4. 0.0117647: 466 bulletproof vest' ^, U" J/ L+ T
  5. 0.00784314: 835 suit
复制代码
) Y$ g% T  g4 y/ F9 g1 N) ?+ _6 E6 s

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

* R# I4 G' c7 ^" V

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


6 s; Q9 e! u& w7 Z0 x# g9 b
! y" b! }: F; O6 P: _& L


0 v: B2 o$ y; }  J' _, o

, ~3 i) H. E; X2 L( @, x* Y% l+ ]

  1. 0.352941: 274 dingo
    " i% \# T$ i; g0 ?
  2. 0.254902: 265 Cardigan
    ; I/ |# \$ V; ^/ I  x
  3. 0.184314: 264 Pembroke
    8 @) w3 q- [/ g" O
  4. 0.0666667: 163 beagle
    2 T6 Z8 b6 v( ]2 E
  5. 0.0156863: 354 gazelle
复制代码

1 q; w. t9 ^: A
5 b, n, N/ M: R35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。
2 H8 \, d1 B2 G" e, n* z% J' }! K: j- \  o: y7 h

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


( {$ k# y+ x3 j

7 a& A* B  x% [! A5 L9 a# k7 j1 g
  1. 0.160784: 639 maillot
    9 ]. ?4 z6 S0 b7 }, E* ]" n+ X. f
  2. 0.137255: 436 bathtub
    9 D9 a, q/ m. C7 \
  3. 0.117647: 886 velvet
    3 T; K, q# S- t5 j* }. p
  4. 0.0705882: 586 hair spray) C. ~* c! y7 I
  5. 0.0509804: 440 bearskin
复制代码
! C* `$ H  u/ J
2 c, h" X  E6 ^' Z- G1 Z


* I8 `6 z! B: e$ B
  1. 0.972549: 644 mask+ c" @2 H! \& L8 X* E. {
  2. 0.00392157: 918 comic book
    $ L! k; C0 v. C6 j
  3. 0.00392157: 904 wig  x5 v$ K$ ]* O5 }2 l# h
  4. 0.00392157: 797 ski mask5 O0 W+ \, F  r  _( X3 z  w8 b
  5. 0.00392157: 732 plunger. M% M6 m( h2 B7 o: u- O, ]9 x
复制代码
. _, ^8 ^0 W: N6 \. i6 @3 E

. Q  o( w. Z2 F3 v, W" m

& `, c! g7 ~$ G. F8 ]: ]# ~( h
  1. 0.380392: 583 grocery store
    2 w) J( j! w, r* b
  2. 0.321569: 957 custard apple
    % }# f( y' b( B9 y* q
  3. 0.0862745: 955 banana0 j  h" ?" H7 W( z$ j* _
  4. 0.0352941: 956 jackfruit7 S! o# S- s  R% p+ o
  5. 0.027451: 954 pineapple
复制代码

- ]2 y. J' J, s6 \  i/ I5 g2 B* u' W: k2 _5 E) b+ v3 m* \

3 s/ b/ F6 A5 e7 t8 S
  1. 0.254902: 918 comic book- P6 ?4 A# u  \3 E& s# T
  2. 0.0470588: 771 running shoe
    : ~3 f0 [  R  Q9 w2 D
  3. 0.0470588: 474 can opener
    ' K$ H7 o2 ?2 y# v% M, x
  4. 0.0470588: 412 apron3 v* \( }- e. ]) N# D
  5. 0.0392157: 794 shower cap
复制代码

1 K/ f5 [+ W1 z4 ~% U+ ]* O+ Q$ g- L; Z- `0 O; z5 E, n7 O

( L: a4 ?% I0 \
  1. 0.52549: 922 book jacket6 y* }1 J% P! p: ]' N" G) }! C, S
  2. 0.0705882: 788 shield
    2 ?: c6 p+ [! a& ~. j  H! b  U
  3. 0.0705882: 452 bolo tie
    4 c4 Z" F$ d; Q$ c
  4. 0.0588235: 627 lighter" Z0 {/ [, V, y: u% q1 X2 {. Z
  5. 0.0352941: 701 ** towel
复制代码
( j* B9 a6 T6 l( z2 v

2 u9 o, t% c4 |! [+ C& Q

( O, w7 a0 i, [/ S. e/ U+ _
  1. 0.121569: 656 miniskirt' }9 A: x7 |  U% w/ ^- H
  2. 0.054902: 835 suit6 J, C& U1 j% M3 a) K
  3. 0.0470588: 852 television7 L+ U9 I: i' D, i6 A7 }# A# M/ ?
  4. 0.0470588: 440 bearskin+ }) w8 q/ i, G2 a. Y
  5. 0.0392157: 679 neck brace
复制代码
( h" \: t, j1 d1 W

% X  F9 n% r+ m: C* c

- k4 t2 d! U! [3 u2 d0 U7 i$ A
  1. 0.65098: 918 comic book( a9 J; I; i, G. Z' c" f
  2. 0.172549: 747 puck
    ) X" u+ B2 l1 d  c- M( v# V
  3. 0.0196078: 922 book jacket; L4 l' a3 w; j! |
  4. 0.0196078: 723 ping-pong ball
    " a6 {& i( s  Q4 W5 I! Z
  5. 0.0117647: 806 soccer ball
    6 W1 T* M1 h3 \
复制代码

  T, n8 D# k" q$ Y* j' m. J! u9 `4 E" ~7 Q$ }! p5 |4 V8 p

, X: j8 ]1 g& D/ v; B2 A3 Q/ j# x
  1.   d1 A% {$ f* z+ s8 n0 z
  2. 0.678431: 918 comic book- ]1 ^- i8 u, C6 K* F4 G+ Z
  3. 0.0784314: 418 balloon
    , w% l) ~) v. Z) @8 \3 I
  4. 0.0470588: 880 umbrella
    3 m1 n7 W: `8 E! d
  5. 0.0470588: 722 pillow
    % y* s9 M# v' q1 b; y4 f5 D# T
  6. 0.0156863: 644 mask
复制代码
" M/ K8 W, L9 N; s
/ s0 L6 P* L! R4 |+ C


* x. o1 z+ @( ~8 |# R
  1. 0.184314: 585 hair slide% }2 u) b: S  D' t' S# H
  2. 0.156863: 794 shower cap
    % j  h: T) E7 `  `. H0 |
  3. 0.0941176: 797 ski mask
    ; k% j; a5 a2 E- e1 K# ?2 }6 E
  4. 0.0431373: 644 mask. ^9 h8 g1 {% B* j
  5. 0.0352941: 571 gasmask
复制代码
1 _: }4 i+ B8 Q  X; f
7 ~" O: `  O4 b5 ]5 G

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

- ]9 m: y' P* I

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

9 X0 t& K1 ?( m6 G, s
- W, s' W8 V) ?; T: P" H  K
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-31 18:52

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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