热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

gitbashhere找不到应用程序_移植TFLitemicro应用程序到ArmCortexM55处理器

本人首发极术社区作者:PareenaVerma翻译:啥都吃的豆芽欢迎关注极术社区微信号(aijishu2020)获取更多Arm相关的技术干
本人首发极术社区作者:Pareena Verma 翻译:啥都吃的豆芽 欢迎关注极术社区微信号(aijishu2020) 获取更多Arm相关的技术干货。
d124b2c0a09d7c35541b2a34c4fd8295.png

ARM Cortex-M55处理器是第一个采用ARMv8.1-M架构的处理器,该架构包括ARM Helium技术(也称为M-profile矢量扩展(MVE))的实现。Helium技术可在下一代嵌入式设备上实现更高水平的机器学习和信号处理。

今天,MCU开发人员已经在使用开源库(如CMSIS-DSP、CMSIS-NN)和ML框架(如用于微控制器的TensorFlow Lite)将机器学习应用程序移植到ARM Cortex-M设备上。用于微控制器的TensorFlow Lite设计用于在内存占用非常小的处理器上运行机器学习模型。CMSIS-DSP和CMSIS-NN库中添加了对Cortex-M55的支持。这使得将ML应用程序移植到Cortex-M55变得容易得多,因为开发人员可以使用他们已经熟悉的相同的库和神经网络框架。

22258b29b25b6b85860cef8a2c163075.png

在此处了解如何将CMSIS-DSP库移植到Cortex-M55:如何将Arm Cortex-M55处理器与开源CMSIS库一起使用。

在本文中,我们将详细说明将TensorFlow Lite的微控制器应用程序构建和移植到Arm Cortex-M55快速和循环模型系统的过程。Arm快速模型是Arm IP在功能上准确的程序员视图模型。我们使用Arm Cortex-M55快速模型系统来调试,运行和验证已构建的ML应用程序。然后,我们将在Arm Cortex-M55循环模型系统上运行经过验证的ML应用程序,以测量准确的系统性能。手臂循环模型直接从Arm RTL构建,并提供完整的循环精度。

设置本地开发环境

首先,从github克隆项目存储库:

$git clone https://github.com/ARM-software/Tool-Solutions.git
$cd Tool-Solutions/docker/tflite-micro-models

tflite-micro-models项目包含构建在M55快速和循环模型虚拟平台上运行的Tensorflow Lite for Microcontrollers示例所需的一切。以下是项目中包含的内容的列表:

  • TFLite_micro_IPSS_Support –此目录包含我们需要向TensorFlow Lite提供的与自定义目标有关的所有系统信息-M55快速和循环模型系统。
  • download_tflow_cmsis.sh –克隆TensorFlow和CMSIS存储库并将TFLite_micro_IPSS_Support软件包复制到TensorFlow存储库的适当位置的脚本。
  • TensorFlow仓库从https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro克隆而来 。
  • CMSIS存储库从https://github.com/ARM-software/CMSIS_5.git克隆
  • get-ac6.sh –下载用于Linux的Arm Compiler 6.14的脚本。我们使用 Arm Compiler 作为工具链来构建TensorFlow Lite for Microcontroller示例。
  • build_tflite_micro_test.sh-用于针对自定义M55虚拟平台构建TensorFlow Lite for Microcontroller示例的脚本
  • Dockerfile –包含用于组装此项目的Docker映像的所有命令。
  • build.sh –用于构建docker映像的脚本
  • run.sh –运行docker容器的脚本

我们正在为项目使用基于 Docker的开发环境。它使创建一个具有所有依赖项的已知良好开发环境变得更加容易。

首先,下载适用于Linux的Arm Compiler 6.14。您可以在此处直接从Arm Developer 或通过运行 get-ac6.sh 文件下载它 :

$ ./get-ac6.sh

然后,通过运行build.sh文件或使用以下命令为该项目构建Docker映像:

$ docker build -t tflite-micro-models -f Dockerfile .

接下来,通过运行run.sh文件或使用以下命令来启动Docker容器:

$ docker run --network host -it tflite-micro-models /bin/bash

我们现在在Docker容器中,可以开始构建TensorFlow Lite Micro示例应用程序。

构建TensorFlow Lite Micro示例应用程序

TensorFlow Lite for Microcontrollers附带了几个示例。使用TensorFlow Lite for Microcontrollers,您可以为Keil,Make和Mbed开发环境生成独立项目。在此示例中,我们使用Make生成项目。

可以使用TFLite Micro中的参考内核(tensorflow / lite / micro / kernels)或使用CMSIS-NN库的优化内核(tensorflow / lite / micro / kernels / cmsis-nn)构建应用程序。参考内核不包括任何特定于平台的优化。我们使用优化的CMSIS-NN内核构建应用程序。

CMSIS-NN 是高效的神经网络内核的集合,这些内核可以最大化性能,并最小化Cortex-M处理器内核上神经网络的内存占用。对Helium技术(M-Profile Vector扩展)的内核支持已添加到CMSIS-NN库。

要构建针对Cortex-M55系统的示例应用程序,请使用 build_tflite_micro_test.sh 脚本。您要构建的示例应用程序作为参数传递给此脚本。以下选项是:

  • hello_world
  • magic_wand
  • micro_speech
  • network_tester
  • person_detection

如果您是第一次使用TensorFlow Lite for Microcontrollers框架,那么 hello world 是了解基础知识和学习完整的端到端工作流程的经典开始。

在本文中,我们将把微型语音示例移植 到Cortex-M55快速和循环模型系统。此示例运行22kB TensorFlow Lite模型并使用很少的内存(大约10kB的RAM)。该模型可以从样本语音数据中识别两个关键字,是和否。

要在容器中构建micro_speech_test可执行文件,请使用:

$ ./build_tflite_micro_test.sh -t micro_speech

生成的可执行文件“ micro_speech_test”被复制到Cortex-M55 / software / exe目录中。要了解此测试的功能,您可以在此处检查源代码 。它实质上是创建一个解释器,获取TensorFlow Lite模型的句柄,然后使用模型和一些示例输入来运行解释器。

现在,我们准备在Cortex-M55快速和循环模型系统上运行micro_speech_test可执行文件。要访问这些系统,请在此处与我们联系 。

在Arm Fast Model系统上运行TensorFlow Lite应用程序

ARM Fast Model是ARM CPU和系统IP的快速、功能精确的程序员视图模型。在任何硬件可用之前,您就可以使用Fast型号开发针对ARM IP的软件,非常适合在Cortex-M55上进行开发。

用于微控制器的TensorFlow Lite可执行文件“MICRO_SPICE_TEST”在一个简单的M55快速模型系统上运行,如下所述。

// This file was generated by System Generator Canvas// --------------------------------------------------component m55
{composition{ramdevice : RAMDevice("size"=0x100000000);pvbus2ambapv : PVBus2AMBAPV();BusDecoder : PVBusDecoder();armm55ct : ARMCortexM55CT("MVE"=2, "CFGDTCMSZ"=0xf, "CFGITCMSZ"=0xf);Clock1Hz : MasterClock();Clock100MHz : ClockDivider("mul"=100000000);}connection{Clock100MHz.clk_out => armm55ct.clk_in;Clock1Hz.clk_out => Clock100MHz.clk_in;armm55ct.pvbus_m => BusDecoder.pvbus_s;pvbus2ambapv.amba_pv_m => self.amba_pv_m;BusDecoder.pvbus_m_range[0x0..0x9fffffff] => ramdevice.pvbus;BusDecoder.pvbus_m_range[0xa8000000..0xa8001000] => pvbus2ambapv.pvbus_s;}master port amba_pv_m;
}

这是在此M55快速模型系统上运行micro_speech_test的输出:

Fast Models [11.10.22 (Mar 11 2020)]
Copyright 2000-2020 ARM Limited.
All Rights Reserved.
Testing TestInvoke
Ran successfully
1/1 tests passed~~~ALL TESTS PASSED~~~simulation is complete
Info: /OSCI/SystemC: Simulation stopped by user.

输出意味着将训练有素的语音TensorFlow模型成功加载到Cortex-M55目标上,并通过它运行了一些示例输入,并获得了预期的输出。

要了解有关Arm快速模型入门的更多信息,请参考此处的快速入门。

您还可以 通过对TFLite_micro_IPSS_Support中特定于系统的代码进行少量修改,将这些示例移植到 Arm Cortex-M55 FVP(固定虚拟平台)上。

利用Arm快速模型,这种类型的工作流程可用于在硬件可用之前验证平台上的神经网络行为。为了从仿真中获得并分析周期精确的性能指标,例如网络执行所需的时间,使用了Arm Cortex-M55周期模型系统。

在Arm Cycle Model系统上测量系统性能并获得准确的推理周期计数

ARM周期模型是ARM IP的100%功能和周期精确模型,直接从RTL编译而来。

Cortex-M55周期型号在ARM IP交换上提供。我们使用这个CPU模型建立了一个简单的Cortex-M55周期模型系统,并建立了系统互连和内存的周期模型。通过将M55周期模型系统的内存映射与快速模型系统的内存映射相匹配,我们可以在周期模型系统上运行相同的microSpeech_test可执行文件。

在M55周期模型系统上运行microSpeech_test可执行文件可以为我们提供整个应用程序的准确周期计数。我们使用周期精确的仿真结果来测量系统的关键性能指标,如内存带宽利用率。我们还可以在TensorFlow Lite应用程序中插入软件标记,以测量仅在TensorFlow Lite模型上运行推断的周期计数。

总结

Arm编译器中对Cortex-M55的支持以及CMSIS-NN库与TensorFlow Lite for Microcontrollers的紧密集成,使得将ML工作负载移植到新的Cortex-M设备的过程变得快捷,易于使用。˚F urthermore,ARM快速模型和周期模型的用于Cortex-M55的可用性使得早期的软件带来向上,验证和性能分析与ML工作量任何硬件设备可用之前。

英文链接:https://community.arm.com/developer/tools-software/tools/b/tools-software-ides-blog/posts/port-tensorflow-lite-for-cortex-m55

相关文章

极术社区:使用Arm CMSIS-DSP库实现经典ML​zhuanlan.zhihu.com
极术社区:Cortex-M和Cortex-A的TrustZone差异​zhuanlan.zhihu.com



推荐阅读
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 中国学者实现 CNN 全程可视化,详尽展示每次卷积、ReLU 和池化过程 ... [详细]
  • 在该项目中,参与者需结合历史使用模式和天气数据,以预测华盛顿特区自行车共享系统的租赁需求。数据分析部分首先涉及数据的收集,包括用户骑行记录和气象信息,为后续模型构建提供基础。通过深入的数据预处理和特征工程,确保数据质量和模型准确性,最终实现对自行车租赁需求的有效预测。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • Java 模式原型在游戏服务器架构中的应用与优化 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 在Spring与Ibatis集成的环境中,通过Spring AOP配置事务管理至服务层。当在一个服务方法中引入自定义多线程时,发现事务管理功能失效。若不使用多线程,事务管理则能正常工作。本文深入分析了这一现象背后的潜在风险,并探讨了可能的解决方案,以确保事务一致性和线程安全。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • Java队列机制深度解析与应用指南
    Java队列机制在并发编程中扮演着重要角色。本文深入解析了Java队列的各种实现类及其应用场景,包括`LinkedList`、`ArrayBlockingQueue`和`PriorityQueue`等,并探讨了它们在高并发环境下的性能表现和适用场景。通过详细分析这些队列的内部机制和使用技巧,帮助开发者更好地理解和应用Java队列,提升系统的设计和架构能力。 ... [详细]
  • 本文提供了PyTorch框架中常用的预训练模型的下载链接及详细使用指南,涵盖ResNet、Inception、DenseNet、AlexNet、VGGNet等六大分类模型。每种模型的预训练参数均经过精心调优,适用于多种计算机视觉任务。文章不仅介绍了模型的下载方式,还详细说明了如何在实际项目中高效地加载和使用这些模型,为开发者提供全面的技术支持。 ... [详细]
author-avatar
喵喵-浩_174
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有