嵌入式爱好者

查看: 12555|回复: 1

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

[复制链接]

48

主题

55

帖子

308

积分

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

1 ]6 c' _9 P+ U- t; L

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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

/ Y; \  a. `5 K4 T- ]) M
1 q5 V  S1 r) m7 z* L" S% v3 Y

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


- T0 x( D% c5 t5 A3 b$ \

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


8 B1 ^4 K' j3 n

一、 NPU的图像识别例程

! h9 V/ X. R2 g6 ]! ]

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

+ i# Y' \9 w& _/ R" F

/ x# Y& ~: w0 j: G+ w


% h0 U& n8 `$ U1 p, C, Q6 u9 r7 P% V- W# L4 N2 \

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

, v1 T/ P& j9 A


8 E% E+ k6 q4 _2 B3 g% ^) U" f9 F, U% Z

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


6 s6 U; J3 X/ h% S6 U# w1 z+ n
9 L# T# p2 D1 n: \  [9 j$ ?


4 X0 I1 S4 T, e" q
  1. libm-2.30.so: r* k) [! Y! ]7 `7 r! }0 I6 w  ~4 ^
  2. libneuralnetworks.so.1.1.9/ N  U, V4 L+ a7 L' F8 Y( k
  3. libnnrt.so.1.1.9
    6 d0 U) w$ u8 ?  x0 C4 {: N+ X! L
  4. libArchModelSw.so
    9 M2 A- F) e/ t: r
  5. libGAL.so/ M5 f# H0 X  ]- R& l: ]0 D& P0 R
  6. libNNArchPerf.so
    " B; x5 H2 v+ O) ~) c/ {
  7. libOpenVX.so.1.3.01 r6 ^3 x2 W7 o& Q& G& m) b' M  P! O' s
  8. libovxlib.so.1.1.0  ^: r! w" s; d) j/ r* X* _/ q/ `
  9. libVSC.so
复制代码

, }( v% ~. t/ c% p" d3 Z# [' b8 H7 B8 W* j

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


* W! F( c4 Q3 }/ f7 M

9 }( c9 t8 H/ W2 a4 D8 f
9 a1 k) \$ k$ Z

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


. N9 P7 O- m9 v; G# [

二、TensorFlow例程验证


1 Y) ~) E9 h9 b: O& p

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


  d. [- I3 j' F$ Y0 L

- P  x6 U& |7 J# ~9 H
  1. 0.780392: 653 military unIForm
    , u9 O+ F) F3 O4 K1 _+ N6 \
  2. 0.105882: 907 Windsor tie
      z1 t4 X* v8 }" R$ M
  3. 0.0156863: 458 bow tie
    / x: p9 r/ X% C7 c: D& D  `% g
  4. 0.0117647: 466 bulletproof vest9 b, F! a4 T9 E/ E& r; P7 y
  5. 0.00784314: 835 suit
复制代码
: i8 L# e) S# q" }8 f' e

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


0 B( t" s3 X4 J

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

! O) b6 m; m& o+ [6 E
7 k, a$ V3 j- D& Y* L

# ~& O& \! C& \; P- w. ?3 h

1 l4 j2 U* _* X8 _# U; v

  1. 0.352941: 274 dingo- }8 c+ L! f; D, n( w. P% s+ m
  2. 0.254902: 265 Cardigan8 P. O4 \; F6 H7 [
  3. 0.184314: 264 Pembroke
    5 q/ j/ W* U* l7 Q
  4. 0.0666667: 163 beagle$ s2 F8 a6 _4 g6 v
  5. 0.0156863: 354 gazelle
复制代码
. `  ~5 \2 N( @/ O* b5 u
; x* R$ o  ~. s, l5 K
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。4 s5 Q. i: C3 y9 d# X/ _

  _9 i* ?! i/ z$ u. s$ K

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

) Y: i8 z% i! k; t2 W) Q

: f9 j. J( }4 F+ |6 J
  1. 0.160784: 639 maillot. ?# E$ q' n: k6 J6 g
  2. 0.137255: 436 bathtub* ]1 L, }- r$ s, x. f6 x9 J
  3. 0.117647: 886 velvet
    & `4 {5 K1 C" U3 P# G
  4. 0.0705882: 586 hair spray
    0 g% a- `! D% a) _" I
  5. 0.0509804: 440 bearskin
复制代码
# e6 D: z7 V: E/ j6 j2 O9 A6 [- _

! W8 g4 I7 J% i% M4 f' r% J& i

4 }: _3 Q" u+ b" U) S
  1. 0.972549: 644 mask
    & M6 a! m: X0 q+ Q! r
  2. 0.00392157: 918 comic book
    9 Z) Q$ S" a6 k
  3. 0.00392157: 904 wig. _! k" J( X. L  M( |+ w
  4. 0.00392157: 797 ski mask4 ~. z( O" W( l) _8 q- I0 a3 y
  5. 0.00392157: 732 plunger
    8 ~5 I* g* j& c
复制代码
! C0 q/ t4 I/ k
* R' Y; ~8 O3 l% g! |: n


. a# v! P' l/ Y3 `* {4 r
  1. 0.380392: 583 grocery store
    # }+ Y4 m) N6 R5 j9 Q  ?  t/ p8 g7 u
  2. 0.321569: 957 custard apple5 y! L% E% o+ J5 |* r" L+ d* o
  3. 0.0862745: 955 banana; E& z7 p- X, O9 x4 |
  4. 0.0352941: 956 jackfruit( U, y/ h* E; \/ A$ @0 u" G2 j
  5. 0.027451: 954 pineapple
复制代码
* s: [2 f! q8 F6 ]( L
! c# E+ D, V1 D/ M) S6 g# S3 A


# y7 X! ?5 M6 Q6 t; C
  1. 0.254902: 918 comic book
    3 U- B- W' d4 k
  2. 0.0470588: 771 running shoe3 f$ E) f" a- G" K. Q3 w0 Z* G
  3. 0.0470588: 474 can opener: k2 T9 r' H9 G( p5 b
  4. 0.0470588: 412 apron& }2 c/ Z1 F) M4 V( q
  5. 0.0392157: 794 shower cap
复制代码
2 T$ d( W8 @: y  K, Z) b

/ k5 k7 m( \. v: j& g

) Z4 Z+ A7 N" |1 r
  1. 0.52549: 922 book jacket& {& t* ~2 w' x, t. ^# a
  2. 0.0705882: 788 shield
    % t, @/ A: A1 R. @* @: l1 |7 j
  3. 0.0705882: 452 bolo tie
    . _5 h, I3 V+ ^, U0 `6 J
  4. 0.0588235: 627 lighter9 T" x: ~$ |% m* F) t5 T2 X
  5. 0.0352941: 701 ** towel
复制代码

/ Q$ M8 j+ q* ^& x/ G1 n
8 _  b0 h& E- m6 T: G* N


( b8 h2 H# `+ P, [3 e8 q+ _4 q$ f
  1. 0.121569: 656 miniskirt! C4 l% |! C0 _
  2. 0.054902: 835 suit4 V2 u9 f1 ~9 A5 s4 d- R+ r
  3. 0.0470588: 852 television: k3 O4 r! o( q3 C
  4. 0.0470588: 440 bearskin
    " G: J2 E4 Z4 M  ?
  5. 0.0392157: 679 neck brace
复制代码
6 V; S# U* R+ a8 B- Y2 j2 b
& w  t# k4 O: T; I0 f9 t: p3 T* L# H


! \9 W( a( ~8 ~% E- M, I* P
  1. 0.65098: 918 comic book
    ( M  I" W% Z$ _( z& C
  2. 0.172549: 747 puck
    2 a; _6 C. E# e: J* ^% H
  3. 0.0196078: 922 book jacket& a* e) C6 L& I6 O5 P/ G$ R3 z
  4. 0.0196078: 723 ping-pong ball
    ! L1 V& K! o; |* j
  5. 0.0117647: 806 soccer ball
    5 S' X0 ^% d8 G& I. `; J& S
复制代码

. L3 i* C+ |! |6 Y
4 R& j0 l/ O8 t+ I# N

% Z: y  H% b& M- [2 v& z

  1. , y; V  Z& }4 v% T3 A+ X
  2. 0.678431: 918 comic book8 a" i8 F0 `# Z; G
  3. 0.0784314: 418 balloon3 j$ K4 @) f* b" C! C1 a1 o6 D& z
  4. 0.0470588: 880 umbrella5 V% Q) m- @3 Z9 M9 T' {- \
  5. 0.0470588: 722 pillow
    3 y( r3 w7 |! A0 _! e6 b( ~
  6. 0.0156863: 644 mask
复制代码
$ d0 g0 t# M1 w5 s, g- u+ Y
# w% u$ m; w; _6 T1 c) M


) l* A+ \+ k) H
  1. 0.184314: 585 hair slide
    + v7 W* j% G& K; V, D& D, b/ c$ E
  2. 0.156863: 794 shower cap; B: D# A7 }# k! @+ i. ^
  3. 0.0941176: 797 ski mask; a; F2 G" s+ b) \( K$ g
  4. 0.0431373: 644 mask
    5 O3 E9 ~5 S1 p/ M) a
  5. 0.0352941: 571 gasmask
复制代码

* R+ i3 t: {3 \( X) _# N+ e& `0 z

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

) x. A2 j6 P" t4 K) |

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


' {& y( ?  O1 ^
- D% \9 y3 b# R4 t4 @' t* b8 l
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-23 18:53

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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