嵌入式爱好者

查看: 11083|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

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


* t# i# H3 w* A+ j$ h

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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


2 \8 J* Z# ]( C
' h. k) X$ \$ c& |% q

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


7 t- W8 H! X2 w- L( o; ^

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


  Y0 W/ a7 d% P% R+ b$ J, P

一、 NPU的图像识别例程


) L  C' f) r6 L4 E+ a; E3 m

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


! e' S& S9 P9 g/ u% N

3 ~) j& G" j# ]. e- j$ O* S( a. i


5 k4 ^1 I' U* ~8 Q* O
" E# m: |5 K! j9 F

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


. T# o* `' K: f* d' }


! g$ J7 o* z+ h- c, C& M3 e' M

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

; V$ [1 t; b# T0 }. R

7 q1 B0 k5 j! m# c# a6 [! J


# x6 g. G# ]* [) ]( T9 |
  1. libm-2.30.so
    & K. j8 J9 L/ `. [. e( f
  2. libneuralnetworks.so.1.1.9
    ! |8 Z" ?3 L. N, N! [
  3. libnnrt.so.1.1.9% \, A5 }; g6 k* ^: N8 O
  4. libArchModelSw.so
    7 o" G- B/ s5 Z* h( Z1 h
  5. libGAL.so0 h9 y3 P" d" T. a
  6. libNNArchPerf.so0 C9 B8 p& w' |' s
  7. libOpenVX.so.1.3.0
    ) ]' P% S  J- p% E' G% u4 D$ k
  8. libovxlib.so.1.1.0
    5 a, ~& [% J  F; y
  9. libVSC.so
复制代码
1 o1 E/ h" G% M- W/ ]( |

% Q0 ]% c+ r- v) Y) V$ T- P  e

其中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, i/ B" I; o3 E8 K

) o! M2 o0 }9 C/ A: t( b
/ N8 K) w  w7 {: Q" A# m) o

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


9 n4 s1 a) P$ g, ~. ^8 s1 W; K1 B  D

二、TensorFlow例程验证


- N) s/ P3 c" T; J/ j: n# Q

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

+ |( l7 B  u' k; V& C


" V1 `5 M7 B+ \  j
  1. 0.780392: 653 military unIForm
      j0 F3 E) Q- U; P5 C9 C) h
  2. 0.105882: 907 Windsor tie# F# M  I" p+ X8 G; ?* ]2 \
  3. 0.0156863: 458 bow tie
    " w5 B) Y0 P! P; h- N
  4. 0.0117647: 466 bulletproof vest& L9 d/ o, a$ S6 W' r& l0 \9 u" a
  5. 0.00784314: 835 suit
复制代码
7 C1 P8 X7 s: I/ S) E. ?

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

8 C- b- z5 j: s

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

7 n+ ~) o/ l' ?& {" l6 ^
( J3 x7 T' a! a3 g$ Q% x; _6 a2 G


3 V" ~* b8 o- F* @" _


$ {. M* ]. c+ {& u/ R4 Q1 z

  1. 0.352941: 274 dingo
    + c' b+ ?! k' Z$ f$ k0 s& O6 W
  2. 0.254902: 265 Cardigan+ q6 ]6 D% h: s# U; l$ }5 F
  3. 0.184314: 264 Pembroke
    ; \4 j: ~: B9 C
  4. 0.0666667: 163 beagle* ~1 }9 O/ ^. H- W8 c
  5. 0.0156863: 354 gazelle
复制代码

# }3 z/ {+ E, u, I) [, M  e. P: `" x8 u# s) r1 y' g; @
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。8 H, e& F& s+ w. V. a- _% |

9 `+ o' S% c: ~

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

6 @: j& {( W: x# ~, N


* v) q) t6 q8 U3 d* E4 f
  1. 0.160784: 639 maillot9 W& S0 M9 I9 c" K
  2. 0.137255: 436 bathtub4 P- w" `/ l; i/ y! Z) T2 V) M& y! Y
  3. 0.117647: 886 velvet
    # i5 D/ T# I6 R2 t5 _( n  U# T
  4. 0.0705882: 586 hair spray: s7 y' w4 e) O1 T( I- Z
  5. 0.0509804: 440 bearskin
复制代码

9 c! y5 i5 ^3 R9 R4 r1 e
3 H# I( T0 S) H. P% k

" G- M& K: \% B, E, p$ Q
  1. 0.972549: 644 mask& R. N! p2 L2 l" u5 d. a
  2. 0.00392157: 918 comic book: O( w7 T* p2 H2 G7 \# X
  3. 0.00392157: 904 wig, F. }  y2 V9 M7 B/ ]: ~
  4. 0.00392157: 797 ski mask
    ( W, |9 _/ K- v$ v  d9 L/ X
  5. 0.00392157: 732 plunger1 n- p; w  N& Q8 [3 r# u4 R
复制代码
2 o) P) J3 P; y# N4 F2 c1 H# s
) N; B$ M# N; t


5 Q0 Q- k4 O) g, E
  1. 0.380392: 583 grocery store
    ' L: G* }! y1 w) l/ @3 O
  2. 0.321569: 957 custard apple
    ' u4 J; S8 g* Q- X1 u; }. _
  3. 0.0862745: 955 banana3 O% T2 O8 d6 n+ e
  4. 0.0352941: 956 jackfruit9 ?# m  ?8 J3 k
  5. 0.027451: 954 pineapple
复制代码
  A* Y/ A3 F, ~+ Y: g/ [; ?3 g) i

$ ^1 ?1 C7 v6 N+ G

+ D! H: G. G0 ?$ F9 Z5 I
  1. 0.254902: 918 comic book7 a, ]( U- u! H/ A$ b! b7 D( A
  2. 0.0470588: 771 running shoe
    : n* r: O. t  ?; g9 |+ ~9 p+ e( s
  3. 0.0470588: 474 can opener
    ! f( f0 O; [6 y9 r3 H
  4. 0.0470588: 412 apron& |1 f9 B# Y% v/ f  X1 G$ P' a/ q' \
  5. 0.0392157: 794 shower cap
复制代码

2 H- H" o+ E! Q: l
5 b9 ]+ R* k" ~$ Y& F* P  Q) H


1 E  [- u1 I1 K3 Q8 P5 G9 Z
  1. 0.52549: 922 book jacket
      J1 d( m4 O  d  V& e
  2. 0.0705882: 788 shield* h1 u6 U" X4 ]: L% J: X
  3. 0.0705882: 452 bolo tie
    1 O8 `) T, |: c, H- S
  4. 0.0588235: 627 lighter
    ! ?6 a% @6 K2 @, X
  5. 0.0352941: 701 ** towel
复制代码

  h+ p. s4 n% C: x! I; A2 M; _: R* y0 S$ l9 Q- M) U# p8 _

7 ]' c/ |, t/ o# {# |
  1. 0.121569: 656 miniskirt
    3 O* c0 E, |6 K- Q" d
  2. 0.054902: 835 suit+ X) g% a  I; y8 |( C3 [
  3. 0.0470588: 852 television
      r$ K1 u) W7 q! p7 T& ?. z0 v
  4. 0.0470588: 440 bearskin
    $ e' N! l: \! N: G
  5. 0.0392157: 679 neck brace
复制代码

9 x8 M* ~# ^; k, _0 c4 m% o# p) I7 G) m3 {8 P4 v. T% d% u


9 E" a5 K0 `; U! A6 f2 D
  1. 0.65098: 918 comic book. j  S5 j# n/ b. c8 V
  2. 0.172549: 747 puck; T2 w) P; Q: H0 c
  3. 0.0196078: 922 book jacket
    " m' j4 Q) [0 r  O# z) Q' y
  4. 0.0196078: 723 ping-pong ball8 h6 m3 w& d3 ]$ A" @3 d
  5. 0.0117647: 806 soccer ball* G( u% w0 k# }' G( h4 ?
复制代码

) Q( _+ z1 W& H; a
' f2 a1 N9 Q$ N

0 u( c: k! s; ?$ s6 ]

  1. 7 p  t& z2 D. l# {5 X" U
  2. 0.678431: 918 comic book7 G8 G$ Z+ v0 O# A+ d9 l) W
  3. 0.0784314: 418 balloon
    : G( U( M( E) E3 d! y7 _( `
  4. 0.0470588: 880 umbrella
    1 z7 }; @+ ?/ c) M1 h6 j
  5. 0.0470588: 722 pillow$ X( @" ~9 a7 V. }$ M% C* a# \( S2 M
  6. 0.0156863: 644 mask
复制代码

/ J; ]* t5 \" x, }/ l. t' z3 T0 B( L4 T! y1 ?+ g( F


, s: p: [5 ]' D. L
  1. 0.184314: 585 hair slide
    6 ], Z- P, w4 E& i
  2. 0.156863: 794 shower cap
      g. A, f6 {$ d
  3. 0.0941176: 797 ski mask4 @4 P. p7 u% V: O( _8 N5 Q2 k7 d9 |* X
  4. 0.0431373: 644 mask% w- Y+ P5 K/ H- i# w; T/ H+ m, q* S
  5. 0.0352941: 571 gasmask
复制代码

# C; ^* |$ m0 j$ G, p6 l$ g9 [3 f
# H' e' u  q0 V: j- N

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

1 L+ }' `9 n* a, ^$ Z) ?9 g8 n3 v

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

+ |* r+ A# H2 P6 b
  r- g& u6 h6 Q9 ?0 |
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-10 04:38

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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