嵌入式爱好者

查看: 12345|回复: 1

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

[复制链接]

48

主题

55

帖子

306

积分

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

/ n* h, s3 Y2 v- {% _& \

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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

. T6 B- ]0 |0 J

$ O. |( G# s* u  N1 x+ S8 t% x( T

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


8 u- c: B  h, c, d# m

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


5 m/ m! w  q  o  {  P

一、 NPU的图像识别例程


: T0 V# A% Z1 D4 k0 E4 L

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

! }4 `, I9 k# R


$ B7 F+ S" u8 h! N


% H/ u. Y( M8 p2 Y% j- ]9 Q; [5 S' E0 L3 D4 j& H8 Q: l1 x% I( X

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


5 ~  a+ r. d3 u

2 b" ^9 ^1 d. z; q, b- ~, U9 I

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


, k: w: }- [- W! f" K9 |7 o% T/ ]% R2 k0 X

. H) \$ W* C5 O! b* j
  1. libm-2.30.so
    / H% g; v4 h* Z2 o
  2. libneuralnetworks.so.1.1.9, J" J; O) z8 \8 W5 J3 x7 `
  3. libnnrt.so.1.1.94 o7 a! y/ `9 C
  4. libArchModelSw.so
    3 ]- C4 H3 V- C+ n6 F
  5. libGAL.so
    - E7 t& h5 v7 m
  6. libNNArchPerf.so
    - f- V/ P. M' g, R/ C2 S
  7. libOpenVX.so.1.3.0$ H; v: V& \1 E+ q
  8. libovxlib.so.1.1.0$ ~) T8 H! h( }4 ]0 e
  9. libVSC.so
复制代码
# a. \& I$ e& }$ ]6 @$ x
/ r" f4 _0 W: 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/),再次运行:

, D$ q3 I: b, r, [7 d/ Y# {$ C; l# r


3 {/ z3 V7 u; @  G  t3 s5 Q7 u
& h% \9 ^/ O7 p3 S( |: }2 w" |8 Q

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


0 c+ |! b; J1 |) q" u: i

二、TensorFlow例程验证


- o8 ~0 E$ h! P! Y4 y' [

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


4 M& R8 O3 O1 e% U


8 [% O4 N$ f# i  _* @- Y
  1. 0.780392: 653 military unIForm7 u1 S  V+ m/ y' H* a4 ?& c
  2. 0.105882: 907 Windsor tie
    . E, Q, Y* v, Z1 S; p
  3. 0.0156863: 458 bow tie5 c) e% j* u6 e$ d9 B4 t5 M
  4. 0.0117647: 466 bulletproof vest6 F' o" v: `$ D
  5. 0.00784314: 835 suit
复制代码
; Q# S) s. k0 @. P4 A% h

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


# `; U$ k! b. `! Q# T8 H* W" w

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


- Y0 G5 |2 r) b8 H' j, Y1 P; D3 k) ^' d9 `. J+ \: Q0 l& v3 J


8 _" p! l- g& {. n8 C


2 E/ J; q: F7 p0 _0 `& L6 x

  1. 0.352941: 274 dingo
    ! C# X0 ?; t* m+ }1 I& p. A
  2. 0.254902: 265 Cardigan: {) S% Y$ G/ |
  3. 0.184314: 264 Pembroke
    . z" g# N8 }% C, `% z
  4. 0.0666667: 163 beagle
    ; N/ E7 i3 T1 J/ B% G
  5. 0.0156863: 354 gazelle
复制代码
* f1 l' g' m0 T( |2 V+ `; F

  t: |9 f% M2 A. R35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。+ n8 ?  r8 t$ t* x# f" z

- R4 X, G$ }: g$ j

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

" e! b. b* P" |, a$ }- v1 F


6 t0 X; I. a& ?/ r
  1. 0.160784: 639 maillot- _, V8 N6 `! `% H$ |) N. ^* j' t
  2. 0.137255: 436 bathtub
    ) l) M9 D2 v( i7 v" u2 M* J
  3. 0.117647: 886 velvet) H$ q. u" f/ L5 g4 U6 K# q
  4. 0.0705882: 586 hair spray" |% K: B* i* l- D2 j% C
  5. 0.0509804: 440 bearskin
复制代码

/ p( v! D9 b0 E1 u2 k4 x: t0 W7 A! `! ~

/ T' c4 l. N0 P7 z5 @
  1. 0.972549: 644 mask! s! h$ L1 L0 A- c, O5 |, y
  2. 0.00392157: 918 comic book
    ; _( d+ S/ H) i& }; r5 g8 T: e- D
  3. 0.00392157: 904 wig
    5 o5 F. r# W/ u: ^1 [& n# `, U
  4. 0.00392157: 797 ski mask9 D, R+ G/ N! h- r: ]. o; @/ u
  5. 0.00392157: 732 plunger
    3 z- k- e* a. S6 X, U: K6 V1 `
复制代码

0 S. r2 J1 X, G- V& H# S+ t! R+ Q; D
( E7 b! G% }: _) {! m& }  g% G


* j. {: O  Q  f4 P
  1. 0.380392: 583 grocery store
    7 f$ g$ z7 v! F, Y
  2. 0.321569: 957 custard apple
    : S) H; I7 R0 s
  3. 0.0862745: 955 banana
    ) U. p: F/ t, a4 C
  4. 0.0352941: 956 jackfruit. B4 ?5 ]- X4 f5 i, E+ G2 V9 P
  5. 0.027451: 954 pineapple
复制代码
# U% g! F! A- T) I7 r% B# ?  x' g
( e, o, D* H) ^/ J( @) K# M2 w


1 O) ]& b9 W) R. e1 [, t
  1. 0.254902: 918 comic book; ?2 Q2 C0 M1 s* Z
  2. 0.0470588: 771 running shoe2 |! P7 V0 O1 g: R0 g& Q% l' K" L
  3. 0.0470588: 474 can opener
    ! }5 S7 b, D' `8 Z) |5 g3 n( ?  t
  4. 0.0470588: 412 apron
    * R, Y, B8 ]6 \/ `  q* d
  5. 0.0392157: 794 shower cap
复制代码

/ p. D& S# R; u: B
5 X4 y' Z0 I8 g2 y2 I


; H7 ?1 t% a6 k
  1. 0.52549: 922 book jacket% d( C' C7 z% b1 a/ Q+ w. N
  2. 0.0705882: 788 shield% C4 d/ \% E* |1 h
  3. 0.0705882: 452 bolo tie: o9 F. `4 x1 t- ]4 x0 z3 d
  4. 0.0588235: 627 lighter
    ) N" q, H- c, U& d" H
  5. 0.0352941: 701 ** towel
复制代码

5 {$ F) |8 f- b4 Q, S# s' \. N6 C+ h$ _% D6 ?

% B# q# e4 o: a1 Z0 S
  1. 0.121569: 656 miniskirt
    5 g7 v: P: \) \  V& d: J6 T9 K
  2. 0.054902: 835 suit
    + q$ X& r: r' [1 u# G
  3. 0.0470588: 852 television
    ; O. J, }+ f+ M
  4. 0.0470588: 440 bearskin
    / U) @# h0 A7 O$ @" q& U1 {8 Z3 M
  5. 0.0392157: 679 neck brace
复制代码
7 f: {- W; G2 f" e. }2 ^" E+ n

$ [4 L  ]& ?6 t; i

& C3 f9 x& H( |/ r# u- v
  1. 0.65098: 918 comic book, a0 v! f  n/ K% Z8 C, ^! ^
  2. 0.172549: 747 puck0 o/ }. O2 j5 Y7 p; Y
  3. 0.0196078: 922 book jacket
    : o" b2 R! N; Q+ j3 Q
  4. 0.0196078: 723 ping-pong ball
    - B& a( ?& e/ i. ~, M) i
  5. 0.0117647: 806 soccer ball
    % `. L1 a0 _- k) M7 k# Z
复制代码
6 _1 k6 W# Z6 ]6 @

  h7 ^1 [7 }! P3 f( @; R

$ D5 X  w% {1 B) X' g
  1. , I- \4 ~# s/ s5 ^( }; P
  2. 0.678431: 918 comic book
    3 G# v8 x; ?5 z" G0 q/ z0 |; Q/ c
  3. 0.0784314: 418 balloon0 X/ ^4 ~) [& ^3 k8 o
  4. 0.0470588: 880 umbrella
    # z* ~, j, z4 V/ D/ [  W. V7 {
  5. 0.0470588: 722 pillow! b! J( I" g% E0 L- z; D+ e4 Y
  6. 0.0156863: 644 mask
复制代码
1 [8 J0 ]; a) B8 T; H# L
- N; P, o* A. U3 l  Z! h2 z& W

& v* b1 T; o! w8 ]
  1. 0.184314: 585 hair slide5 O( a0 y4 d9 o+ Z, ]( b, J, O9 ]# C
  2. 0.156863: 794 shower cap1 Q) B' N" a2 a  q3 D+ u/ Z2 x
  3. 0.0941176: 797 ski mask
    " e9 q: t; \9 G  Z8 m
  4. 0.0431373: 644 mask
    : L4 i- a, `0 T4 B) b
  5. 0.0352941: 571 gasmask
复制代码

$ T0 O, g$ \2 j5 B- h, C" q) B1 c; Q1 y, a* K& y4 p6 X3 @/ z

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


/ H- b, 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

, O2 M" Z% F: }7 u, h, Y

* G0 @6 M8 t" V4 S7 q6 T3 \. \  T% a3 _
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-24 19:34

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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