嵌入式爱好者

查看: 10868|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

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

* [/ g/ X( c: o* Z: W: Q0 x. X- D

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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

  F( K# u, `, g" C

# K5 c' z4 C: e% r+ t  e# t! O( ]

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


: x& o7 K2 ^: m

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


" R9 n3 l- S5 F0 |. |

一、 NPU的图像识别例程

8 A+ }, U4 E" ~: L5 @

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


. J" V% G- s* [2 M, c7 ~


7 i2 N+ @1 T" y+ k


6 A  J& Y  e. x3 c* U4 X! }* Z1 w9 z' c' k  {

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

6 d& C/ J4 s: N, Y  m" d


& P" O9 w! R  R1 g+ x

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

9 _9 {, M  L+ t* r1 e1 w* j; _) T

. j' |+ N9 i+ w  r


& S9 n2 T6 ]+ a* w# m; Q
  1. libm-2.30.so' Y. j0 z5 X1 \3 M6 g. V
  2. libneuralnetworks.so.1.1.9
    : ^6 T0 i/ |% R, ^
  3. libnnrt.so.1.1.9
    ( @! i& m3 o* {1 n; Q& L, ~
  4. libArchModelSw.so2 }( t5 O) g# s: ]' t
  5. libGAL.so- `( V- w9 |2 q! ^) s
  6. libNNArchPerf.so
    0 d$ O" O6 L  ]# m: O* O" k4 `
  7. libOpenVX.so.1.3.0$ ]; N  q5 H4 i  M9 j5 _
  8. libovxlib.so.1.1.0; W" c+ [  o, P5 I  f+ i- j
  9. libVSC.so
复制代码

; g  _7 {- Z$ L" F, I" d, ?0 j4 Z; Z( S9 r" A4 ^) n

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


4 f0 a7 }; C+ F9 @1 _

% `0 R# v8 s6 t$ H0 t/ n  U$ O
8 p# `  x, ]! L- K8 ^! w* O# ^

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

1 h) \+ H, l/ s

二、TensorFlow例程验证


2 ?  `/ q3 o1 V, j# `7 C: U. \

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


% o% Z+ C1 q( O; d3 k

5 v" h) f3 o9 f4 i
  1. 0.780392: 653 military unIForm
    4 w1 N* _5 i: }+ n$ C" t2 ?$ a) Q
  2. 0.105882: 907 Windsor tie
    1 {7 A! x" T9 W4 L7 l
  3. 0.0156863: 458 bow tie( u1 U' O" h- c6 V' b& J0 }+ b" {
  4. 0.0117647: 466 bulletproof vest7 n: B& n; a8 z9 U+ D
  5. 0.00784314: 835 suit
复制代码

  A6 t1 M4 d$ H! G3 }

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


; s( B  D* s  z/ Z' n: p2 Z3 B$ d

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

: h6 Y- W" l( [5 e; G+ C
3 \( t  }+ A$ Y


/ _: y* ~2 x& d5 I


$ Y" E0 `5 K2 A) E( A

  1. 0.352941: 274 dingo) g: M, x! v5 E+ k( d: T
  2. 0.254902: 265 Cardigan1 U$ f( J# R; F# \  A+ y& g
  3. 0.184314: 264 Pembroke
    ) C. r" q: V* n% W
  4. 0.0666667: 163 beagle
    . m3 [4 |8 S9 \" |- F$ @
  5. 0.0156863: 354 gazelle
复制代码

& c9 w: k- @) S, b
2 z0 F  Z+ k  ]3 d- ~; |# \, @35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。0 |% h* ^5 d2 D0 m
) Z: Q; f# i8 M- b

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

& t/ ?. l$ V8 u2 R4 _8 z, }' k0 I


! H- i6 E1 L8 Z. K$ A6 b
  1. 0.160784: 639 maillot, N2 ?4 _4 k2 Q5 \
  2. 0.137255: 436 bathtub5 }1 D# z  r! X# C9 Q& A; R. w/ M
  3. 0.117647: 886 velvet1 }. U, K8 k3 g4 y4 M* R# E  v
  4. 0.0705882: 586 hair spray
    1 Z% Z0 h, H/ h5 R, t% o. `
  5. 0.0509804: 440 bearskin
复制代码
4 k5 c9 w; Q/ L: t# I

0 M# c! l3 d% }4 D5 [2 L4 D4 [, F

) b" p; D* c1 i+ t  T/ @
  1. 0.972549: 644 mask
    7 `, D- l. C0 ]4 @# q
  2. 0.00392157: 918 comic book
    6 e9 \4 M% Y& a, ]. I
  3. 0.00392157: 904 wig' s, O6 L" J4 r  p6 p
  4. 0.00392157: 797 ski mask
    # Y! ]# N1 {. B
  5. 0.00392157: 732 plunger
    + h9 _: ?2 L4 `- x; ^
复制代码

; P+ m- Y3 R& N7 w) ], n/ Y; @% ^5 f  @. m4 v

) Z( ^0 E  T7 I, F- v  n2 u2 h' @) v
  1. 0.380392: 583 grocery store
    - O! [# U5 ^' p( P! F2 c
  2. 0.321569: 957 custard apple0 t% h* U! Z: q1 ]' B
  3. 0.0862745: 955 banana
    7 i% @. O# j6 E
  4. 0.0352941: 956 jackfruit
    ( a/ e/ r' C* r+ }
  5. 0.027451: 954 pineapple
复制代码
, F& M; ~, ^4 F0 K4 k0 d
* K( r0 }4 k. \


0 r- y1 m3 j: j% Y3 i6 L* y
  1. 0.254902: 918 comic book7 R9 e4 A' [( M% B6 p2 C( p
  2. 0.0470588: 771 running shoe
      l) L# V" t$ X0 q1 T
  3. 0.0470588: 474 can opener/ `; |' M" E$ c/ ^# H3 J1 S
  4. 0.0470588: 412 apron
    1 z4 V/ F. B  z5 C
  5. 0.0392157: 794 shower cap
复制代码

6 R: N. X" k( E/ {! ?9 D8 ?9 h4 P& P8 l" T3 F% C


( |1 _7 V) W; |1 p- J5 A: [5 c: a
  1. 0.52549: 922 book jacket
    , W1 O6 W/ s) v/ }! ~
  2. 0.0705882: 788 shield
    : ]+ z4 C7 }$ y# d/ ^
  3. 0.0705882: 452 bolo tie, x/ d+ y  c/ i* a
  4. 0.0588235: 627 lighter
    ( w2 |" _8 O9 m9 O
  5. 0.0352941: 701 ** towel
复制代码

9 H' i' u% z' J# s0 [' a6 U0 j% ^2 n' `) D2 p' W! I2 C$ r; h


5 K$ [& X5 E% v0 b0 @  f2 y
  1. 0.121569: 656 miniskirt. K' Y, @3 A- A: C5 s8 T9 D# i" C
  2. 0.054902: 835 suit
    ! X5 f" _- G8 x
  3. 0.0470588: 852 television5 g% b( n1 F$ U! {% p0 V3 e; \2 d
  4. 0.0470588: 440 bearskin" `4 P% ~* b% t& P2 Y3 ]5 ~
  5. 0.0392157: 679 neck brace
复制代码

- }$ }$ z3 b! t/ C& _7 x/ n2 h) J) l6 I5 E' k, L


1 ^! ?* O. I1 a$ \: n7 P
  1. 0.65098: 918 comic book
    % i* K1 P5 c, A* I
  2. 0.172549: 747 puck! {. k) h! r* Z2 L4 I
  3. 0.0196078: 922 book jacket
    8 q. y6 f5 s& x% v
  4. 0.0196078: 723 ping-pong ball
    $ B8 n2 `' e; W, U" [4 |- g
  5. 0.0117647: 806 soccer ball0 r1 s5 T7 K1 s$ c3 W/ Y
复制代码
! a& j& v3 z% ^9 @3 @, `0 T0 I
, H# r3 |! h3 M


4 V+ ~5 b" T" W$ O

  1. : h) y" j8 u# G8 p. p+ h: C
  2. 0.678431: 918 comic book0 g# Y3 B: @7 Z" b7 d, L! k; t
  3. 0.0784314: 418 balloon
    ' S9 U7 u* X* m9 i# e% `
  4. 0.0470588: 880 umbrella  N# x3 Z2 J: q' d2 Q* X& ]# ~
  5. 0.0470588: 722 pillow' M' X' R( W+ l- ^# C1 K
  6. 0.0156863: 644 mask
复制代码
+ \8 o( ?; N4 y/ [+ j, D
6 y( P/ w) R* l# C+ O2 |


- P" k* r/ g) y
  1. 0.184314: 585 hair slide' A0 b9 ]* U+ c9 z. Z- Q
  2. 0.156863: 794 shower cap: b5 J( E6 D0 K7 _3 S- |: {, |
  3. 0.0941176: 797 ski mask
    ; C6 F7 D6 Q3 Q7 Q# e  K
  4. 0.0431373: 644 mask) q% V& |( M3 I4 l: v
  5. 0.0352941: 571 gasmask
复制代码

) L; Q( y4 U/ v# m3 T$ H0 |9 s9 G
+ z, v: [, A+ F; \

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


$ D* m8 z% n; R2 R2 p; R

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

! y2 q# \$ G) I2 F5 v# A% Y

/ ?% a, l& L) e6 k1 o
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-19 06:55

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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