|
 / 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
- libm-2.30.so
/ H% g; v4 h* Z2 o - libneuralnetworks.so.1.1.9, J" J; O) z8 \8 W5 J3 x7 `
- libnnrt.so.1.1.94 o7 a! y/ `9 C
- libArchModelSw.so
3 ]- C4 H3 V- C+ n6 F - libGAL.so
- E7 t& h5 v7 m - libNNArchPerf.so
- f- V/ P. M' g, R/ C2 S - libOpenVX.so.1.3.0$ H; v: V& \1 E+ q
- libovxlib.so.1.1.0$ ~) T8 H! h( }4 ]0 e
- 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- 0.780392: 653 military unIForm7 u1 S V+ m/ y' H* a4 ?& c
- 0.105882: 907 Windsor tie
. E, Q, Y* v, Z1 S; p - 0.0156863: 458 bow tie5 c) e% j* u6 e$ d9 B4 t5 M
- 0.0117647: 466 bulletproof vest6 F' o" v: `$ D
- 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
- 0.352941: 274 dingo
! C# X0 ?; t* m+ }1 I& p. A - 0.254902: 265 Cardigan: {) S% Y$ G/ |
- 0.184314: 264 Pembroke
. z" g# N8 }% C, `% z - 0.0666667: 163 beagle
; N/ E7 i3 T1 J/ B% G - 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- 0.160784: 639 maillot- _, V8 N6 `! `% H$ |) N. ^* j' t
- 0.137255: 436 bathtub
) l) M9 D2 v( i7 v" u2 M* J - 0.117647: 886 velvet) H$ q. u" f/ L5 g4 U6 K# q
- 0.0705882: 586 hair spray" |% K: B* i* l- D2 j% C
- 0.0509804: 440 bearskin
复制代码
/ p( v! D9 b0 E1 u2 k4 x: t0 W7 A! `! ~
 / T' c4 l. N0 P7 z5 @
- 0.972549: 644 mask! s! h$ L1 L0 A- c, O5 |, y
- 0.00392157: 918 comic book
; _( d+ S/ H) i& }; r5 g8 T: e- D - 0.00392157: 904 wig
5 o5 F. r# W/ u: ^1 [& n# `, U - 0.00392157: 797 ski mask9 D, R+ G/ N! h- r: ]. o; @/ u
- 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- 0.380392: 583 grocery store
7 f$ g$ z7 v! F, Y - 0.321569: 957 custard apple
: S) H; I7 R0 s - 0.0862745: 955 banana
) U. p: F/ t, a4 C - 0.0352941: 956 jackfruit. B4 ?5 ]- X4 f5 i, E+ G2 V9 P
- 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- 0.254902: 918 comic book; ?2 Q2 C0 M1 s* Z
- 0.0470588: 771 running shoe2 |! P7 V0 O1 g: R0 g& Q% l' K" L
- 0.0470588: 474 can opener
! }5 S7 b, D' `8 Z) |5 g3 n( ? t - 0.0470588: 412 apron
* R, Y, B8 ]6 \/ ` q* d - 0.0392157: 794 shower cap
复制代码
/ p. D& S# R; u: B
5 X4 y' Z0 I8 g2 y2 I
; H7 ?1 t% a6 k- 0.52549: 922 book jacket% d( C' C7 z% b1 a/ Q+ w. N
- 0.0705882: 788 shield% C4 d/ \% E* |1 h
- 0.0705882: 452 bolo tie: o9 F. `4 x1 t- ]4 x0 z3 d
- 0.0588235: 627 lighter
) N" q, H- c, U& d" H - 0.0352941: 701 ** towel
复制代码
5 {$ F) |8 f- b4 Q, S# s' \. N6 C+ h$ _% D6 ?
 % B# q# e4 o: a1 Z0 S
- 0.121569: 656 miniskirt
5 g7 v: P: \) \ V& d: J6 T9 K - 0.054902: 835 suit
+ q$ X& r: r' [1 u# G - 0.0470588: 852 television
; O. J, }+ f+ M - 0.0470588: 440 bearskin
/ U) @# h0 A7 O$ @" q& U1 {8 Z3 M - 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
- 0.65098: 918 comic book, a0 v! f n/ K% Z8 C, ^! ^
- 0.172549: 747 puck0 o/ }. O2 j5 Y7 p; Y
- 0.0196078: 922 book jacket
: o" b2 R! N; Q+ j3 Q - 0.0196078: 723 ping-pong ball
- B& a( ?& e/ i. ~, M) i - 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
- , I- \4 ~# s/ s5 ^( }; P
- 0.678431: 918 comic book
3 G# v8 x; ?5 z" G0 q/ z0 |; Q/ c - 0.0784314: 418 balloon0 X/ ^4 ~) [& ^3 k8 o
- 0.0470588: 880 umbrella
# z* ~, j, z4 V/ D/ [ W. V7 { - 0.0470588: 722 pillow! b! J( I" g% E0 L- z; D+ e4 Y
- 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 ]
- 0.184314: 585 hair slide5 O( a0 y4 d9 o+ Z, ]( b, J, O9 ]# C
- 0.156863: 794 shower cap1 Q) B' N" a2 a q3 D+ u/ Z2 x
- 0.0941176: 797 ski mask
" e9 q: t; \9 G Z8 m - 0.0431373: 644 mask
: L4 i- a, `0 T4 B) b - 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 _ |