嵌入式爱好者

查看: 12195|回复: 1

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

[复制链接]

48

主题

55

帖子

305

积分

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


- I. c' j/ T( K1 u) y: v7 g

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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


9 T7 P  q: }- h) _6 ?* D9 b/ R. D3 u: a

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

  B+ r) T# O% m% d; ^

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


' Z; M; l* V% P+ Y$ |2 P

一、 NPU的图像识别例程

" _+ s, u3 G! W( ~# h8 D" V

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


, Y" Z1 {* F! e  A2 t4 i

) Q8 |* h" D$ W' X5 t& |$ `


& F7 w. s( Z4 i) Q( }) S0 D% g5 [( }. h1 E  P

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


: j2 {# Q# N' R+ _

4 t/ ^! [! `# G# F* y

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


) w7 o4 E. {' W" P. n: Y4 f3 T1 q! q# i7 h" a

. t. O" j6 o/ M$ `2 H( t
  1. libm-2.30.so
    - J; M+ l( C% T
  2. libneuralnetworks.so.1.1.9
    / O6 r* T9 Y9 X: J5 v2 m- [
  3. libnnrt.so.1.1.90 \: {' Y  n7 i# {; L
  4. libArchModelSw.so2 \8 |* S/ w( M( f
  5. libGAL.so: k# g! R! n1 `) g/ b+ E, @% G
  6. libNNArchPerf.so0 d( K9 z3 O  o+ v4 X( b+ z
  7. libOpenVX.so.1.3.0
    * L* t9 ?) K2 P6 x& i4 x# [. u
  8. libovxlib.so.1.1.0
    / ~6 L3 i0 w6 \( ^
  9. libVSC.so
复制代码

' b+ N5 S! k0 A4 v- b5 f: v2 n; l7 Z* x& k- @+ {

其中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 N# x+ m2 a' r2 W1 F9 |- z

, M9 c, S7 x# v! W8 }$ K

5 n4 C7 ~; K+ z! ]

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

9 \4 d; P  y! J

二、TensorFlow例程验证


/ K$ a3 \+ z8 F6 K! N

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


* y" q9 w2 N+ h0 C; ?. w


) g- W7 o# O" \
  1. 0.780392: 653 military unIForm2 u1 n7 c6 I0 s. t9 {% t) p5 Q
  2. 0.105882: 907 Windsor tie1 e1 B9 y6 P# Z/ j
  3. 0.0156863: 458 bow tie
    3 S: e" o  G4 T$ x
  4. 0.0117647: 466 bulletproof vest+ G3 e. O# R6 z0 s6 q
  5. 0.00784314: 835 suit
复制代码

1 W. |; r9 k! U4 i. O$ W

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

: i/ i5 E. e- Y! N- G3 g# R$ V% E

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

) }: O* S6 d8 ?
5 X( ?9 \+ S# I2 G


* P% j( a' [- ~3 q( C8 @  p" `* z


, G% g& u, T) G2 |" a

  1. 0.352941: 274 dingo4 H. F6 N: v, ]5 o
  2. 0.254902: 265 Cardigan
    ' F. r: u) o6 V0 ]$ Q- m
  3. 0.184314: 264 Pembroke5 B. H6 [0 t$ g4 W; }
  4. 0.0666667: 163 beagle
    # I4 |& B" ~% ^3 a3 T. a
  5. 0.0156863: 354 gazelle
复制代码

# ^: c- J2 [5 f  R% o6 N0 n: H% X) L2 V& [1 q& o6 @. w
35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。2 i* X& B7 k2 |
* F; P5 {" W" b2 N1 `( F9 d

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


0 H* X7 d) F$ k2 s  X5 c

! D1 @0 c4 B9 Y: P
  1. 0.160784: 639 maillot7 A: b9 ]8 p6 H) N# u, V
  2. 0.137255: 436 bathtub
    : d; D1 {" A  `2 j7 q
  3. 0.117647: 886 velvet  k- F% m8 `& h
  4. 0.0705882: 586 hair spray
    ! Q, W0 b+ ?# k0 s0 ?  A
  5. 0.0509804: 440 bearskin
复制代码
8 ~  _" V, i% d: S/ O6 G! W$ w
# Z* d% L8 U3 G# o/ U2 p( j


# X% B) w- `/ q& _' S" `! t5 \
  1. 0.972549: 644 mask, F+ B# w; ]  e1 E/ u
  2. 0.00392157: 918 comic book
    ) X; b" u  X$ q
  3. 0.00392157: 904 wig
    0 [+ Y& J) j  a, i- O1 m
  4. 0.00392157: 797 ski mask
    6 F) e; [1 r% y
  5. 0.00392157: 732 plunger
    % x4 A% J+ z' z& B
复制代码

- ^7 R0 b6 |9 E6 Y# Y. y2 z; O  R7 Z% z

( m# y1 b9 O) W. h8 z# D
  1. 0.380392: 583 grocery store
    6 D0 [8 `+ m* Q: `, L0 Z
  2. 0.321569: 957 custard apple- ~  M9 z. }% b- w
  3. 0.0862745: 955 banana$ n3 [) D1 ?6 C4 Y) t
  4. 0.0352941: 956 jackfruit; g4 E) z2 n; q
  5. 0.027451: 954 pineapple
复制代码

& O9 h1 z3 a3 I3 h
& b/ {+ s. ^) X) O) W

$ A+ a) Z' C7 p9 D$ U' L
  1. 0.254902: 918 comic book
    ; X  N/ A- e& `1 C
  2. 0.0470588: 771 running shoe
    7 `2 g) v2 C1 l1 z* h
  3. 0.0470588: 474 can opener
    : v$ ~' z+ U7 R8 }' H/ ^
  4. 0.0470588: 412 apron
    % J% y. F) ^. P5 L
  5. 0.0392157: 794 shower cap
复制代码

& {* S( a+ U6 C- k8 q
% n( E; s! u4 |6 @! B% f# l& C5 d( \

4 D/ n$ e/ o; r9 S. _0 J
  1. 0.52549: 922 book jacket9 b7 X( }5 N* o
  2. 0.0705882: 788 shield
      ?) G3 a3 d; M( s
  3. 0.0705882: 452 bolo tie
    6 ~  l( r1 V4 C0 B
  4. 0.0588235: 627 lighter
    ; ~+ w3 }" G  p- k4 }
  5. 0.0352941: 701 ** towel
复制代码
. w0 A, w6 y0 j1 I# b

6 T0 ]- w. L7 S7 N  S8 e


8 N- U  l# Y/ d. F8 {# G( ?
  1. 0.121569: 656 miniskirt/ [( g: Z! l' @2 Q8 L
  2. 0.054902: 835 suit8 }: n9 I3 q% p- `( z% e2 x1 r4 V
  3. 0.0470588: 852 television4 w: E! E2 J( Z0 e1 G& D5 a$ r
  4. 0.0470588: 440 bearskin
    & ]( N( x9 x5 t5 l, H; q3 r
  5. 0.0392157: 679 neck brace
复制代码

, g5 k, }& C' x7 _5 F) z/ {) `+ R' o  _( T


1 s' D4 Q& _- F) I0 ^; [
  1. 0.65098: 918 comic book+ W9 k5 D* h# n4 \! C( Y
  2. 0.172549: 747 puck
    7 l' D2 v7 ~* j, ]4 D5 j9 B
  3. 0.0196078: 922 book jacket! H  H( i& Q, g5 ?
  4. 0.0196078: 723 ping-pong ball: \, ^" e  k( _/ x
  5. 0.0117647: 806 soccer ball: U7 p$ _; h: ]' C
复制代码
3 D7 b6 s0 @7 b0 }
( k% X9 G. M) V- Y9 U0 j

! p2 r( |9 d, L
  1. 8 P6 J7 Z6 T- s2 A5 F% \5 B- s
  2. 0.678431: 918 comic book
    + ?7 V6 {  M9 Q8 J! k
  3. 0.0784314: 418 balloon! x: m5 @' B" s; D% C
  4. 0.0470588: 880 umbrella
    * L8 |7 g& x& B3 a; z# |4 o
  5. 0.0470588: 722 pillow
    . B. f! V0 o9 `! h, U# E/ A( g4 k
  6. 0.0156863: 644 mask
复制代码
1 D% Z, f0 ^' Q# c5 |
. r8 D) P5 P; _9 j

* s( |, e  `5 C7 I. T$ H
  1. 0.184314: 585 hair slide
    * o7 l$ [$ r- i& M) A/ @) ^
  2. 0.156863: 794 shower cap, Z( a+ s3 b9 f: A% }1 R- F7 h  Y3 U  y
  3. 0.0941176: 797 ski mask0 W/ n& ?) f( {$ [
  4. 0.0431373: 644 mask
    ' q  D, c3 m3 U8 Q8 F! [
  5. 0.0352941: 571 gasmask
复制代码
9 S- T6 h* u4 D. a1 K
7 w1 i: e% H; w) H6 U: t2 A

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

3 b* S0 D- Y  c

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


" P8 U( ]0 ^* |2 f& n" ?) b0 w) I: `2 Y
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-16 11:14

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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