飞凌-marketing 发表于 2022-1-27 10:59:04

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

https://www.forlinx.com/file.php?f=202201/f_ec54e25266071e568a616102d8e0d65f&t=png&o=&s=&v=1641782184
作者|donatello1996来源 | 电子发烧友题图|飞凌嵌入式 原文链接:https://www.forlinx.com/article_view_809.htmliMX8MPlus 核心板: https://www.forlinx.com/product/136.html

飞凌嵌入式OKMX8MP-C开发板基于NXP i.MX 8M Plus处理器开发设计,该系列处理器专注于机器学习与视觉、高级多媒体以及具有高可靠性的工业自动化。旨在满足智慧城市、工业互联网、智能医疗、智慧交通等应用的需求。强大的四核或双核Arm® Cortex®-A53处理器,主频高达1.6GHz,带有神经处理单元(NPU),最高运行速率可达2.3TOPS。
本文采用的硬件板卡为飞凌嵌入式OKMX8MP-C开发板,系统版本Linux5.4.70+Qt5.15.0,主要介绍移植官方NPU TensorFlow例程。
一、 NPU的图像识别例程
在OKMX8MP-C 开发板提供的产品使用手册中,有一章是针对 iMX8MP 板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。
https://www.forlinx.com/file.php?f=202201/f_43d13ff86f5cdef5e5e689566592a8e0&t=jpg&o=&s=&v=1641782278
https://www.forlinx.com/file.php?f=202201/f_c33f64c5d64c25af1dd676e6910f0f3e&t=jpg&o=&s=&v=1641782311

将 iMX8MP 开发板切换到EMMC启动,进入/usr/bin/tensorflow-lite-2.3.1/examples/目录下,运行测试example:
https://www.forlinx.com/file.php?f=202201/f_e8299b50c49a193d53f9d56855e3ead7&t=jpg&o=&s=&v=1641782322
再将 iMX8MP 开发板切回TF卡系统运行,提示报错,label_image程序的nnapi需要动态链接库支持:

https://www.forlinx.com/file.php?f=202201/f_7d1d0a43bf4bed58ec06118236f34fa5&t=jpg&o=&s=&v=1641782338
libm-2.30.so
libneuralnetworks.so.1.1.9
libnnrt.so.1.1.9
libArchModelSw.so
libGAL.so
libNNArchPerf.so
libOpenVX.so.1.3.0
libovxlib.so.1.1.0
libVSC.so

其中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/),再次运行:
https://www.forlinx.com/file.php?f=202201/f_d0c8f1728a70dec524257f3f8b84d94d&t=jpg&o=&s=&v=1641782375

可以看到没有任何报错,运行库环境移植成功,接下来可以在 iMX8MP 开发板上愉快地进行tensorflow例程的玩耍了。
二、TensorFlow例程验证
飞凌嵌入式iMX8MP官方资料中提供了许多测试例程,先用官方DEMO做一下验证,其验证结果如下。
https://www.forlinx.com/file.php?f=202201/f_1905ab53eb37b7b1e9a5bcc6a7005e51&t=png&o=&s=&v=1641782423
0.780392: 653 military unIForm
0.105882: 907 Windsor tie
0.0156863: 458 bow tie
0.0117647: 466 bulletproof vest
0.00784314: 835 suit
78%结果吻合陆军制服,10%结果吻合温莎领带,1%结果吻合领结,1%结果吻合防弹背心,不到1%结果吻合西装,总的来说这个结果还是挺令人满意的,NPU的算力确实还可以,多次运行程序,得出的结果完全相同,说明 iMX8MP NPU计算时使用的是固定的/静态的图像识别库。
我这边突发奇想,用这个Demo去测一下我自己的论坛头像,看看结果:

https://www.forlinx.com/file.php?f=202201/f_0a96119d4d169e4809646c02387b44e9&t=png&o=&s=&v=1641782442

0.352941: 274 dingo
0.254902: 265 Cardigan
0.184314: 264 Pembroke
0.0666667: 163 beagle
0.0156863: 354 gazelle

35%的野狗,25%的毛衣,18%的Pembroke???,6%的小猎犬(beagle),1%的羚羊,看到羚羊(gazelle)我属实蚌埠住了,哈哈。

再来试试另外几张图片,为了检验iMX8MP NPU的人工智能算力到底行不行,集齐了十张图,豪华尊享。由于源码不开放,所以无法移植源码到自己的例程中:
https://www.forlinx.com/file.php?f=202201/f_02954f30e5eafdbfb6c54bd991fed3f3&t=png&o=&s=&v=1641782487
0.160784: 639 maillot
0.137255: 436 bathtub
0.117647: 886 velvet
0.0705882: 586 hair spray
0.0509804: 440 bearskin

https://www.forlinx.com/file.php?f=202201/f_05b4fa0904667446d011a425e0350cca&t=png&o=&s=&v=1641782524
0.972549: 644 mask
0.00392157: 918 comic book
0.00392157: 904 wig
0.00392157: 797 ski mask
0.00392157: 732 plunger


https://www.forlinx.com/file.php?f=202201/f_ee0ac7b0a415e1f4aa2b02b0264bd0a2&t=png&o=&s=&v=1641782556
0.380392: 583 grocery store
0.321569: 957 custard apple
0.0862745: 955 banana
0.0352941: 956 jackfruit
0.027451: 954 pineapple

https://www.forlinx.com/file.php?f=202201/f_7dcd4ab9a332b7fef9ddf6fcbe1d18a0&t=png&o=&s=&v=1641782583
0.254902: 918 comic book
0.0470588: 771 running shoe
0.0470588: 474 can opener
0.0470588: 412 apron
0.0392157: 794 shower cap

https://www.forlinx.com/file.php?f=202201/f_d222b30482dc515d58e38bfd252cb856&t=png&o=&s=&v=1641782608
0.52549: 922 book jacket
0.0705882: 788 shield
0.0705882: 452 bolo tie
0.0588235: 627 lighter
0.0352941: 701 ** towel

https://www.forlinx.com/file.php?f=202201/f_6198684e6dcae17c158e101aa2369aa5&t=png&o=&s=&v=1641782640
0.121569: 656 miniskirt
0.054902: 835 suit
0.0470588: 852 television
0.0470588: 440 bearskin
0.0392157: 679 neck brace

https://www.forlinx.com/file.php?f=202201/f_bb964e098c2cdebe930377276bac662b&t=png&o=&s=&v=1641782663
0.65098: 918 comic book
0.172549: 747 puck
0.0196078: 922 book jacket
0.0196078: 723 ping-pong ball
0.0117647: 806 soccer ball


https://www.forlinx.com/file.php?f=202201/f_61d77a2f15ace46560421a811a727b5a&t=png&o=&s=&v=1641782716

0.678431: 918 comic book
0.0784314: 418 balloon
0.0470588: 880 umbrella
0.0470588: 722 pillow
0.0156863: 644 mask

https://www.forlinx.com/file.php?f=202201/f_fa1a105fbf481ea7ff000b744917e225&t=png&o=&s=&v=1641782691
0.184314: 585 hair slide
0.156863: 794 shower cap
0.0941176: 797 ski mask
0.0431373: 644 mask
0.0352941: 571 gasmask

十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,飞凌的这款 iMX8MP 开发板的NPU的算力还是非常强的。
据官方介绍,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.htmliMX8MPlus 核心板: https://www.forlinx.com/product/136.html

页: [1]
查看完整版本: 发烧友实测 | iMX8MP开发板移植官方NPU TensorFlow例程