嵌入式爱好者

查看: 12069|回复: 1

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

[复制链接]

48

主题

55

帖子

305

积分

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


: L) u) Q# Q) S

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

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

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


. N. _! G0 t1 Z4 j6 R' h/ R# k8 R4 o+ Q

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

" v$ K  V0 A' {3 b- l  U1 Y& t

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


. Y9 ~# y- a3 u' C; ?

一、 NPU的图像识别例程

8 g. _, U: ?' Z9 S; S7 t, h3 d6 {9 J4 G

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


/ D% @& e& q1 Q1 p; r9 W

( L! ^; j  r' U: E9 b# h7 _# R9 F


2 k& [2 o) e3 Z- k  m2 A" G: o7 [" ^9 G' u; L

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

" F" Y6 A" y/ _# O


% Y2 l" {# I& T

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

, F, E5 X/ _" L# L. _

4 l# x: |: N' X. T4 I0 m# `/ n5 M

# ?! d8 u0 ?/ }' h' D
  1. libm-2.30.so" {1 S, V: W3 a+ r( R; \' j
  2. libneuralnetworks.so.1.1.9
    : ?/ P9 B; w7 H
  3. libnnrt.so.1.1.9( d3 R8 e6 Z7 f* a
  4. libArchModelSw.so
    ( N4 W+ Y  `: h4 w2 t
  5. libGAL.so
    . h& @5 _( x( p% u1 W
  6. libNNArchPerf.so
    & V( |8 @" ?+ I7 c; C
  7. libOpenVX.so.1.3.0
    2 V! e: R6 Q8 f' y4 J, J) l
  8. libovxlib.so.1.1.0
    " u  J0 M# c+ x& W0 t
  9. libVSC.so
复制代码
! o* W* E" r7 A7 U. ~1 Q

& O$ E6 D6 W' I

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


  h  T, z9 g- X/ W


2 x; A! q1 m' U7 |+ t; B. j- i& z9 Q: N  q1 T0 o0 J+ e

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


' M  s7 L* F4 s, q% M3 I- u

二、TensorFlow例程验证

' ~2 W- p- g. c4 g. ]2 p9 a" {

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


; t1 ?$ G( e4 g! E* F5 Q

6 }* u. Z+ f4 X
  1. 0.780392: 653 military unIForm
    6 s! i1 ^  I  S+ |# {
  2. 0.105882: 907 Windsor tie
    - C* _9 a( B; p0 d: J
  3. 0.0156863: 458 bow tie
    5 b) _; l- y; F; J1 S$ B
  4. 0.0117647: 466 bulletproof vest
      T9 \0 L+ A/ B# d0 t9 ]3 y
  5. 0.00784314: 835 suit
复制代码
& M4 {8 g8 L& ^( s3 x4 q

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


, O0 j2 ?" D, D1 s  e

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

% @3 F7 h, {" i& d" g$ g* R9 ^
* m/ [/ Y) p5 O, P


. a( p3 ^  Q6 L+ F+ f% W: v4 r1 d' L


% v1 n) v1 r' _9 s2 C

  1. 0.352941: 274 dingo
    ) Q6 G/ e, B* C  k- V/ i" `- @
  2. 0.254902: 265 Cardigan
    2 B4 X8 |" u) z) G6 w$ H- u% D; b2 V0 }
  3. 0.184314: 264 Pembroke1 v5 y! ^9 Z* p( j. @
  4. 0.0666667: 163 beagle. l6 t5 _1 j2 N" u4 v
  5. 0.0156863: 354 gazelle
复制代码
  Q5 {) A: P, D1 e

  {1 P2 _/ f5 f: E35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。+ G; S6 Y9 y: h$ }

$ s8 Q9 a' i1 N- G. d

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


' r0 B, F6 D! k+ b+ f# G* t

, a9 A) O, B& t: @$ ~) d
  1. 0.160784: 639 maillot
    6 o4 N, H- x" }' Y6 E2 `5 U
  2. 0.137255: 436 bathtub
    0 H$ _! {3 E% |3 ?" T
  3. 0.117647: 886 velvet( Z. z6 k4 @6 A, z+ i/ y
  4. 0.0705882: 586 hair spray9 t9 |' T5 W$ }3 L$ L
  5. 0.0509804: 440 bearskin
复制代码
  \6 I  `/ K9 E! n  ^% V
! n' ?! _8 W0 S# C1 c% o

4 L7 O4 q! A' c1 t
  1. 0.972549: 644 mask$ @' t; I- B$ O, f0 S9 u- Z* e+ [
  2. 0.00392157: 918 comic book9 N. Q! F' S: B( ]# m
  3. 0.00392157: 904 wig) u5 Z/ d2 D; U. L) B
  4. 0.00392157: 797 ski mask
    8 f# R6 N% |: {1 z' Z% h
  5. 0.00392157: 732 plunger3 [2 e2 A! V+ K" d! {- h; `
复制代码

; A2 I9 P) d' @5 C9 @& l- E4 U* V+ t. B9 ?6 R5 v


& r6 v5 {% A4 r% v
  1. 0.380392: 583 grocery store
    % l+ c6 B6 W9 l. [& {! D
  2. 0.321569: 957 custard apple' `! r3 o; E0 ^3 U. h
  3. 0.0862745: 955 banana. q, r4 m( o) r$ ~( y' H7 o) V
  4. 0.0352941: 956 jackfruit  h: O1 Q! }% p; u# X% X4 T
  5. 0.027451: 954 pineapple
复制代码

! p: W2 {! H: i' U+ d" D8 x. j9 t& x7 @/ m. g

; m# P) c# T1 I/ j
  1. 0.254902: 918 comic book
    & R1 T% |0 O0 _7 U/ S# t' b
  2. 0.0470588: 771 running shoe7 X* [6 E3 H; [( T8 `: n7 |# M
  3. 0.0470588: 474 can opener8 `6 \1 z4 Q  i
  4. 0.0470588: 412 apron
    - Y$ j' j$ Y6 B- Q8 W) q. Q. C& u/ F
  5. 0.0392157: 794 shower cap
复制代码
4 A5 c) r' w# P9 o5 s0 g! s

5 _4 G7 ?* ]5 p( P9 U- ^

" |, y# _& U6 S5 N5 i- B2 P
  1. 0.52549: 922 book jacket
    7 s1 {" i1 d2 g/ ]0 p9 A6 a
  2. 0.0705882: 788 shield
    + J! f* ~6 o% F5 i5 t
  3. 0.0705882: 452 bolo tie& s& K$ O* T, @
  4. 0.0588235: 627 lighter
    2 |* T. e1 r4 ^  b
  5. 0.0352941: 701 ** towel
复制代码

9 }8 Z9 ?% h  {8 H* E9 E9 B7 }+ m+ h* U- M; i7 f6 C1 i

0 v0 Z4 j1 ]* ]& Q. w/ N; b
  1. 0.121569: 656 miniskirt
    / @# J/ T) o2 l, ~
  2. 0.054902: 835 suit
    1 @4 ]. N9 f/ k$ v) A
  3. 0.0470588: 852 television
    ) b; G6 @4 X6 \2 n1 F# E9 X% b
  4. 0.0470588: 440 bearskin
    ; p0 O& n1 u6 ~' I
  5. 0.0392157: 679 neck brace
复制代码
) B. Y! h8 B$ u$ K: v' L

3 S' M- A: ^/ q8 i2 d; U- [5 D


8 W1 w5 R% I" `$ s
  1. 0.65098: 918 comic book0 h% \) ?/ }& {  a! ?
  2. 0.172549: 747 puck( I; K- S$ Y8 {9 D
  3. 0.0196078: 922 book jacket# y! ~8 ^( r$ Q2 H$ ~7 y! n/ R
  4. 0.0196078: 723 ping-pong ball/ H8 e- v; u9 E, v- D
  5. 0.0117647: 806 soccer ball
    9 i* }6 U  {# g
复制代码

  {- @# [+ Z% r" `% z0 i
" {( f2 x3 Q, C$ |& G) h: w; }' B


4 ~' g7 j* t" Q/ n0 B8 X
  1. 2 p6 q1 z1 O- P+ W
  2. 0.678431: 918 comic book2 O6 D/ m5 R9 x& s/ y1 `: ^
  3. 0.0784314: 418 balloon; J8 _3 X( z) C; l1 t; n
  4. 0.0470588: 880 umbrella
    4 M1 M) p/ y* O. b5 I( J6 f
  5. 0.0470588: 722 pillow5 ~! e; y$ f8 Q, ~% B
  6. 0.0156863: 644 mask
复制代码

/ p( C: m' L. p: e" r8 p
& M, c* I' z& ]6 U+ {& A


0 l5 C3 z/ ]. W( S
  1. 0.184314: 585 hair slide1 }1 g& l! }# v
  2. 0.156863: 794 shower cap
    4 N3 @9 C. \. |  a4 z
  3. 0.0941176: 797 ski mask
    ; z' D" \$ w3 O: `5 q6 c$ a
  4. 0.0431373: 644 mask
    5 Y4 }. ]" H; Z2 `
  5. 0.0352941: 571 gasmask
复制代码
% b* ^# c/ s8 l% T* X. n

( I, t) e  N5 s# A

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

1 u" y8 v# c7 r1 c& z9 B# a

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

9 L" i- H' ^* G- W; ]# u

" H, U' u5 J7 C5 i. K
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-26 14:53

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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