|
 4 i0 x4 ^3 ?. C' F* z0 S
作者|donatello1996 来源 | 电子发烧友 题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.html iMX8MPlus 核心板: https://www.forlinx.com/product/136.html . Y+ k4 W, ^0 `9 H9 j
& i5 x' ~7 J; J3 p飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。
% |% I- W' s) v# k, ]3 z( ~本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。
( A" p, F- p2 [3 L1 I* t( D一、 NPU的图像识别例程
* W& ^0 o* ]# _! j- x; J( j5 z在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。
3 `8 P3 Q4 E2 ?0 V- H. l- z6 C5 I5 v
; M0 I; ?, q4 A) Y* f, V7 | C( T: G2 R8 C; G5 k; ?* M& x Q
" N; {0 E& i1 ?: h! \2 b将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
* B# s( W" O1 q( ~ ) g' t$ z" t4 V7 j& ]$ k3 ?6 O+ d
再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持:
; o/ R9 [ f. W$ H
! {; }) {6 E1 L 5 m+ }- V( Q! q1 Z1 n2 g
- libm-2.30.so5 j$ o6 S; J6 r) r$ G$ ]& Q
- libneuralnetworks.so.1.1.9
8 J1 w: t: H# \ - libnnrt.so.1.1.9
* U* s/ J. u% n& g0 f* Q - libArchModelSw.so
; l7 f/ h' e. Q) ] - libGAL.so
/ s5 T- U, x- s6 U: U9 M - libNNArchPerf.so/ M5 D% ?* v3 P) A1 A' c
- libOpenVX.so.1.3.0
; ?, I) C( m3 o& c1 K - libovxlib.so.1.1.0+ J, S+ g$ \/ K g' G. X2 @
- libVSC.so
复制代码 1 n7 _% J. r. v) H1 s- P" W( ?
6 \1 Q9 L- } ?9 m Y1 X其中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/),再次运行: & j; Z) _9 Z% r- T

9 H) N0 A+ B! F% c* |: O" @* r3 H' T4 G% ^2 T, O- o- M7 _
可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。 * S4 e7 y' c1 [. }2 ]2 e
二、TensorFlow例程验证 ) G W: n' e9 Z
飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。
, }. Z/ u- T) \
! a; c% S" g7 k$ ?- 0.780392: 653 military unIForm& |" f1 h1 N% @
- 0.105882: 907 Windsor tie/ q1 l8 R9 O+ d
- 0.0156863: 458 bow tie
; h$ P9 ]* W1 M: G& N1 T - 0.0117647: 466 bulletproof vest& c& H d& {; b) ?# G
- 0.00784314: 835 suit
复制代码
. ~1 O/ S( \) M3 z9 E; F! i78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。 2 T( }5 b% d% {$ h7 k
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果: * _. c4 s# W8 q: A5 A) g
: J( G- a2 o8 ^- {2 Y0 Y; b

- w* d3 U. e4 A; W$ D' s$ L) O
% A) U' E' H, P8 i+ i
- 0.352941: 274 dingo
% q) ?- K7 z; `/ {( V( u! J - 0.254902: 265 Cardigan' Y# d% T! Y3 x, D1 ]1 {' ^
- 0.184314: 264 Pembroke! U0 K- M8 U' ?. j# d5 g2 @
- 0.0666667: 163 beagle7 P/ \8 u- O; U4 J3 i
- 0.0156863: 354 gazelle
复制代码 4 M* d5 B+ `7 h2 N/ a0 [3 W6 Q
0 V& l9 g: C- G7 |5 M: `35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。1 C! }/ V3 C: r, g$ b% W- U: ^! a
2 p3 Z1 ~- R) S, B' T, F" T% T再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中:
6 u! P k/ r' d# H; S; r7 [
 @+ F3 \; d$ W
- 0.160784: 639 maillot
1 S7 C$ T, N& P8 U0 @/ w - 0.137255: 436 bathtub
. m- I- z1 L7 }0 L; F6 F! B$ P - 0.117647: 886 velvet
0 Y2 _' d. ^: S- w, Y+ a - 0.0705882: 586 hair spray V ^& R4 ^; ]/ m4 e5 F
- 0.0509804: 440 bearskin
复制代码
+ M9 W# Q+ n$ Y9 u
( |6 G( J, m6 E/ o5 M
9 p4 ?! M' y$ D% Z' a8 c- 0.972549: 644 mask
1 H& g6 J6 h& e# m! N$ x: h6 j - 0.00392157: 918 comic book/ X& c2 n: d7 ~2 [% @& U
- 0.00392157: 904 wig
5 C2 |- C; j7 @8 {9 M0 ]8 Y - 0.00392157: 797 ski mask
$ }" e& z5 p; j/ ~' b6 T0 [ - 0.00392157: 732 plunger8 g6 J) G' \3 L$ s0 T
复制代码
z# H; e1 _& J' z) R7 r
) W0 a; \$ C; ]% U0 D
+ K0 i/ O6 \; G+ b& E6 H- 0.380392: 583 grocery store
/ }6 e' Y! n* Q9 i - 0.321569: 957 custard apple
7 g' L, m2 p/ G1 O$ s - 0.0862745: 955 banana& Q- y3 V: c' s3 b4 s
- 0.0352941: 956 jackfruit
- w/ Q/ d. s; ]& N - 0.027451: 954 pineapple
复制代码 ; w0 m" O1 n! A# v9 o3 K0 g
& d# o9 a* t. K- l) s$ c $ J2 |+ v3 g8 N% C5 P
- 0.254902: 918 comic book
4 B! p( V9 {6 x/ C! { - 0.0470588: 771 running shoe
' U; \% o0 G0 s9 U: d8 N, B+ k - 0.0470588: 474 can opener2 s6 ~2 a! ~- z
- 0.0470588: 412 apron
- X B$ T( c/ z& F - 0.0392157: 794 shower cap
复制代码
% }1 e R. r1 k5 q" ^' x# a, r: L3 G7 m- F$ A. M5 s

) K; Z- Z/ S; l9 V: e+ l- 0.52549: 922 book jacket
% @- g: i R, u% Q) j8 w7 z - 0.0705882: 788 shield% y( z! j6 s' F' b
- 0.0705882: 452 bolo tie
% S4 E0 `' T" Y) \ - 0.0588235: 627 lighter y( {/ |: T7 L
- 0.0352941: 701 ** towel
复制代码
! ^; L4 T+ w* F9 @& R3 f+ W
4 y2 A( v; U3 e- h; o. @; \
. a0 W" x+ k" b& L- R+ @- 0.121569: 656 miniskirt
# N. x* D$ l4 n; }( Z+ \ - 0.054902: 835 suit6 D/ t& p, l8 C2 ?1 k/ o+ j
- 0.0470588: 852 television
) z& c8 M% v! w% Z5 E0 @ - 0.0470588: 440 bearskin
}4 x5 p+ C% J' O; _ - 0.0392157: 679 neck brace
复制代码
, m% M: W5 w4 i5 x
# a+ h; W( V: a( V6 ^0 w * w# P# [* ^8 j P5 P8 H! s0 R
- 0.65098: 918 comic book
( B2 Q5 @; t# h3 o3 H. q. c - 0.172549: 747 puck6 m& w8 ?* U& R2 C- X$ o6 W
- 0.0196078: 922 book jacket7 Y' t* I' M" z9 E0 M
- 0.0196078: 723 ping-pong ball. y1 q7 a Y h
- 0.0117647: 806 soccer ball
, s6 L) f; a2 f8 c& E2 j% L
复制代码
* k* R" ^# y; x/ {% o+ B0 A' z" Z5 G5 z9 }2 b

1 v- X" e' C0 `8 r) ]
9 m) j' p1 N. _- 0.678431: 918 comic book# p6 q: \) a% p% D' R
- 0.0784314: 418 balloon# o- y, e1 g# i9 _( \; z0 m
- 0.0470588: 880 umbrella
6 z, X% o& a7 z/ r - 0.0470588: 722 pillow( X( f# ~6 W7 o5 o! H- H) x
- 0.0156863: 644 mask
复制代码 , D/ G& {+ I6 ~ X2 x2 [% S
1 l- |- `: j/ G" {/ C5 P
& B" s1 u' c& f; w% q- 0.184314: 585 hair slide% d" D) l9 u4 B8 p9 |
- 0.156863: 794 shower cap- j E6 h+ U- X; a
- 0.0941176: 797 ski mask
& w5 `. [' E' c - 0.0431373: 644 mask
8 H6 k7 i6 t% _% F* ^9 f5 [ - 0.0352941: 571 gasmask
复制代码
. n/ v+ l6 d, s7 g* i* U) y+ B9 Q4 d
十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。 & t1 W' Q# F2 \- \6 F" `+ }" K
据官方介绍,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
! v% d( ^( |7 w5 H# ]' }3 q) o* Z! R( t1 g6 u+ O; m
|