0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

手把手带你玩转—i.MX8MP开发板移植官方NPU TensorFlow例程

飞凌嵌入式 2022-01-10 16:32 次阅读

作者|donatello1996

来源 | 电子发烧友

题图|飞凌嵌入式

飞凌嵌入式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 开发板提供的产品使用手册中,有一章是针对板上NPU的图像识别例程,位于EMMC分区的/usr/bin/tensoRFlow-lite-2.3.1/examples,我将EMMC分区mount为了/media分区,找到对应的例程位置。

4a5dff88-6fd6-11ec-86cf-dac502259ad0.jpg

4a914f64-6fd6-11ec-86cf-dac502259ad0.jpg

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

4ad0b01e-6fd6-11ec-86cf-dac502259ad0.jpg


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

4af9867e-6fd6-11ec-86cf-dac502259ad0.jpg

libm-2.30.solibneuralnetworks.so.1.1.9libnnrt.so.1.1.9libArchModelSw.solibGAL.solibNNArchPerf.solibOpenVX.so.1.3.0libovxlib.so.1.1.0libVSC.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/),再次运行:


4b47624a-6fd6-11ec-86cf-dac502259ad0.jpg


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

二、TensorFlow例程验证

先用飞凌嵌入式官方DEMO做一下验证,其验证结果如下。

0.780392: 653 military unIForm0.105882: 907 Windsor tie0.0156863: 458 bow tie0.0117647: 466 bulletproof vest0.00784314: 835 suit

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

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

4bbc2422-6fd6-11ec-86cf-dac502259ad0.jpg

0.352941: 274 dingo0.254902: 265 Cardigan0.184314: 264 Pembroke0.0666667: 163 beagle0.0156863: 354 gazelle

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

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

4be37144-6fd6-11ec-86cf-dac502259ad0.jpg

0.160784: 639 maillot0.137255: 436 bathtub0.117647: 886 velvet0.0705882: 586 hair spray0.0509804: 440 bearskin

4c0de8c0-6fd6-11ec-86cf-dac502259ad0.jpg

0.972549: 644 mask0.00392157: 918 comic book0.00392157: 904 wig0.00392157: 797 ski mask0.00392157: 732 plunger

4c35b6fc-6fd6-11ec-86cf-dac502259ad0.jpg

0.380392: 583 grocery store0.321569: 957 custard apple0.0862745: 955 banana0.0352941: 956 jackfruit0.027451: 954 pineapple

4c616d38-6fd6-11ec-86cf-dac502259ad0.jpg

0.254902: 918 comic book0.0470588: 771 running shoe0.0470588: 474 can opener0.0470588: 412 apron0.0392157: 794 shower cap

4c942cdc-6fd6-11ec-86cf-dac502259ad0.jpg

0.52549: 922 book jacket0.0705882: 788 shield0.0705882: 452 bolo tie0.0588235: 627 lighter0.0352941: 701 paper towel

4cd8d314-6fd6-11ec-86cf-dac502259ad0.jpg

0.121569: 656 miniskirt0.054902: 835 suit0.0470588: 852 television0.0470588: 440 bearskin0.0392157: 679 neck brace

4d08fbfc-6fd6-11ec-86cf-dac502259ad0.jpg

0.65098: 918 comic book0.172549: 747 puck0.0196078: 922 book jacket0.0196078: 723 ping-pong ball0.0117647: 806 soccer ball

4d3f4176-6fd6-11ec-86cf-dac502259ad0.jpg

0.678431: 918 comic book0.0784314: 418 balloon0.0470588: 880 umbrella0.0470588: 722 pillow0.0156863: 644 mask

4d721452-6fd6-11ec-86cf-dac502259ad0.jpg

0.184314: 585 hair slide0.156863: 794 shower cap0.0941176: 797 ski mask0.0431373: 644 mask0.0352941: 571 gasmask

十张图片的识别结果均以编码方式呈现,从识别的概率结果来看,OKMX8MP-C开发板的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张图像的图像分类。

作者简介

donatello1996,某大型企业资深嵌入式工程师,电子发烧友论坛技术大牛,同时也是飞凌嵌入式多年铁粉,曾基于飞凌多款板卡产出过优质测评文章或使用心得。本期三篇文章为donatello1996在使用OKMX8MP-C开发板过程中精心产出的干货,在此对donatello1996表示感谢。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    5032

    浏览量

    97375
收藏 人收藏

    评论

    相关推荐

    Air780E模组LuatOS开发实战 —— 手把手教你搞定数据打包解包

    本文要说的是低功耗4G模组Air780E的LuatOS开发实战,我将手把手教你搞定数据打包解包。
    的头像 发表于 12-03 11:17 153次阅读
    Air780E模组LuatOS<b class='flag-5'>开发</b>实战 —— <b class='flag-5'>手把手</b>教你搞定数据打包解包

    【迅为电子】i.MX6UL和i.MX6ULL芯片区别与开发板对比

    【迅为电子】i.MX6UL和i.MX6ULL芯片区别与开发板对比
    的头像 发表于 11-28 14:31 320次阅读
    【迅为电子】<b class='flag-5'>i.MX</b>6UL和<b class='flag-5'>i.MX</b>6ULL芯片区别与<b class='flag-5'>开发板</b>对比

    【RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux

    【RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux
    的头像 发表于 11-16 01:02 220次阅读
    【RA<b class='flag-5'>8</b>D1试用活动】RA<b class='flag-5'>8</b>D1B-CPKCOR<b class='flag-5'>开发板</b><b class='flag-5'>移植</b>linux

    基于AR1335和i.MX8MP的视觉方案

    应用中实现卓越的图像处理效果。方案采用NXPi.MX8MP处理器和onsemiAR1335图像传感器,i.MX8MP集成四核Cortex-A53、NPU及双ISP
    的头像 发表于 11-13 01:01 202次阅读
    基于AR1335和<b class='flag-5'>i.MX8MP</b>的视觉方案

    强大视觉方案:i.MX8MP与AR0144的完美结合

    大联大友尚集团推出基于NXPi.MX8MP处理器和onsemiAR0144图像传感器的全新视觉方案。该方案不仅具备强大的图像处理能力,还能广泛应用于监控、智能零售、机器人视觉等领域。一、应用场景描述及市场优势该方案采用NXP的i.MX8MP作为主控平台,搭配onsemi的
    的头像 发表于 10-29 08:04 204次阅读
    强大视觉方案:<b class='flag-5'>i.MX8MP</b>与AR0144的完美结合

    i.MX Linux开发实战指南—基于野火i.MX系列开发板

    电子发烧友网站提供《i.MX Linux开发实战指南—基于野火i.MX系列开发板.pdf》资料免费下载
    发表于 10-10 17:23 11次下载

    迅为RK3568手册上新 | RK3568开发板NPU例程测试

    《iTOP-3568开发板NPU例程测试》 教程目录 第1章 瑞芯微原厂NPU资料介绍 1.1瑞芯微官方github 1.2 rknn-t
    发表于 07-12 14:44

    【正点原子i.MX93开发板试用连载体验】第一篇:开箱

    感谢电子发烧友论坛和正点原子提供的这次宝贵的试用机会,我计划利用该开发板完成一个小型机器人的控制demo,同时测评各个功能模块。首先,正点原子i.MX93开发板是一款基于NXP i.MX
    发表于 06-20 14:06

    手把手教你排序算法怎么写

    今天以直接插入排序算法,给大家分享一下排序算法的实现思路,主要包含以下部分内容:插入排序介绍插入排序算法实现手把手教你排序算法怎么写在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将
    的头像 发表于 06-04 08:03 681次阅读
    <b class='flag-5'>手把手</b>教你排序算法怎么写

    手把手带你移植HAL库函数

    开发者更高效地进行嵌入式开发手把手带你移植HAL库函数HAL库提供了一套抽象接口,使开发者无需
    的头像 发表于 05-18 08:04 1865次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>带你</b><b class='flag-5'>移植</b>HAL库函数

    NXP系列-NXP i.MX 93核心开发板-入门级嵌入式核心-产品资料

    MYC-LMX9X核心开发板NXP i.MX 93重新定义入门级嵌入式CPU模组2*Cortex-A55@1.7GHz+Cortex-M33@250MHz,满足高性能和实时性需求;集成0.5
    发表于 04-23 11:07 4次下载

    米尔i.MX93核心上市!MPU+MCU+NPU三芯一体,创新LGA设计

    近日,米尔电子推出基于NXPi.MX93系列产品-MYC-LMX9X核心开发板。NXPi.MX9系列在i.MX6和
    的头像 发表于 04-20 08:01 589次阅读
    米尔<b class='flag-5'>i.MX</b>93核心<b class='flag-5'>板</b>上市!MPU+MCU+<b class='flag-5'>NPU</b>三芯一体,创新LGA设计

    【先楫HPM5361EVK开发板试用体验】(原创)6.手把手实战红外线传感器源代码

    试用体验】2手把手实战密钥管理器 KEYM 【先楫HPM5361EVK开发板试用体验】3手把手实战安全数据处理器 SDP 【先楫HPM5361EVK开发板试用体验】4
    发表于 02-09 15:08

    【先楫HPM5361EVK开发板试用体验】(原创)5.手把手实战AI机械臂

    HPMicro 【先楫HPM5361EVK开发板试用体验】2手把手实战密钥管理器 KEYM 【先楫HPM5361EVK开发板试用体验】3手把手实战安全数据处理器 SDP 【先楫HPM5
    发表于 02-06 10:28

    【米尔-TIAM62开发板-接替335x-试用评测】+(五)手把手玩转U-Boot控制CPU管脚

    ,以确保正确使用GPIO。所以我接下来以米尔-TIAM62开发板为例,手把手实战U-Boot控制CPU管脚: 1.U-Boot终端命令玩转GPIO U-Boot可不是吃素的,它可以直接用命令来控制
    发表于 01-08 10:02