您好,上海自动化仪表自仪销售网欢迎您!

官方微信|联系我们|

上自仪微信

上海自动化仪表股份有限公司,上海自动化仪表有限公司

上海自动化仪表自仪销售网热线:

021-62155955021-56725115

您是否在找: 上海自动化仪表厂膜片压力表|上海自动化仪表厂不锈钢压力表|
上海自动化仪表四厂简介

在嵌入式IoT节点中运行机器学习代码以轻松识别对象

来源:上海自动化仪表有限公司作者:发表时间:2020-10-13 13:55:03

 在动态环境中运行的物联网(IoT)网络已从对象检测扩展到了在安全性,环境监控,安全性和工业物联网(IIoT)等应用程序中包括可视对象识别。由于对象识别是自适应的,并且涉及使用机器学习(ML)模型,因此这是一个复杂的领域,可能很难从头开始学习并难以有效实施。

 
困难源于一个事实,即ML模型仅与其数据集一样好,并且一旦获取了正确的数据,就必须对该系统进行适当的培训以使其起作用,以使其实用。
 
本文将向开发人员展示如何将Google的TensorFlow Lite for Microcontrollers ML模型实现到Microchip Technology微控制器中。然后,它将说明如何在TensorFlow Lite中使用图像分类和对象检测学习数据集,以最少的自定义编码轻松识别对象。
 
然后,它将引入Adafruit Industries的TensorFlow Lite ML入门套件,该套件可使开发人员熟悉ML的基础知识。
 
嵌入式视觉系统的ML
广义上讲,ML为计算机或嵌入式系统提供了类似于人的模式识别功能。从人类感觉的角度来看,这意味着使用诸如麦克风和摄像机之类的传感器来模仿人类对听觉和视觉的感觉感知。尽管传感器很容易用于捕获音频和视频数据,但是一旦将数据数字化并存储起来,就必须对其进行处理,以便可以与代表已知声音或对象的存储模式进行匹配。挑战在于,例如,摄像机为视觉对象捕获的图像数据将与对象内存中存储的数据不完全匹配。需要在视觉上识别对象的ML应用程序必须处理数据,以便它可以准确有效地将相机捕获的图案与存储在内存中的图案进行匹配。
 
有不同的库或引擎用于匹配传感器捕获的数据。TensorFlow是一个用于匹配模式的开源代码库。TensorFlow Lite for Microcontrollers代码库专为在微控制器上运行而设计,因此减少了内存和CPU要求以在更有限的硬件上运行。具体来说,它需要一个32位微控制器,并使用少于25 KB的闪存。
 
但是,虽然TensorFlow Lite for Microcontrollers是ML引擎,但系统仍需要学习要识别的模式的数据集。不管ML引擎有多好,该系统仅与其学习数据集一样好,对于视觉对象,某些学习数据集对于许多大型模型可能需要数GB的数据。更多数据需要更高的CPU性能才能快速找到准确的匹配项,这就是为什么这些类型的应用程序通常可以在功能强大的计算机或高端笔记本电脑上运行的原因。
 
对于嵌入式系统应用程序,仅应将应用程序必需的那些特定模型存储在学习数据集中。如果系统应该识别工具和硬件,则可以删除代表水果和玩具的模型。这减小了学习数据集的大小,从而降低了嵌入式系统的内存需求,从而在降低成本的同时提高了性能。
 
ML微控制器
为了运行用于微处理器的TensorFlow Lite,Microchip Technology的目标是使用基于Arm®Cortex®-M4F的ATSAMD51J19A-AFT微控制器在微控制器中进行机器学习(图1)。它具有512 KB的闪存和192 KB的SRAM存储器,并以120兆赫(MHz)的速度运行。ATSAMD51J19A-AFT是Microchip Technology ATSAMD51  ML微控制器系列的一部分。它符合汽车AEC-Q100 1级质量标准,并在-40°C至+ 125°C的温度范围内运行,使其适用于最苛刻的IoT和IIoT环境。它是一种低压微控制器,在120 MHz下运行时的工作电压为1.71至3.63伏。
ATSAMD51J19A基于以120 MHz运行的Arm Cortex-M4F内核。
 
ATSAMD51J19A联网选项包括用于工业联网的CAN 2.0B和用于大多数有线网络的10/100以太网。这使微控制器可以在各种IoT网络上运行。USB 2.0接口支持主机和设备操作模式,可用于设备调试或系统联网。
 
处理ML代码时,4 KB的组合指令和数据缓存可提高性能。浮点单元(FPU)对于改善ML代码的性能以及处理原始传感器数据也很有用。
 
存储学习数据集
ATSAMD51J19A还具有用于外部程序或数据存储器存储的QSPI接口。对于超出芯片上闪存容量的学习数据集的额外数据存储,这很有用。QSPI还具有就地执行(XiP)支持,用于外部高速程序存储器扩展。
 
ATSAMD51J19A还具有SD / MMC存储卡主机控制器(SDHC),对于ML应用非常有用,因为它可以轻松地交换ML代码和学习数据集。TensorFlow Lite for Microcontrollers引擎可以在ATSAMD51J19A的512 KB闪存中运行,而学习数据集则可以定期进行升级和改进。学习数据集可以存储在外部QSPI闪存或QSPI EEPROM中,并且可以根据网络配置通过网络进行远程升级。但是,对于某些系统,将存储卡与另一个具有改进的学习数据集的存储卡进行物理交换会更方便。在此配置中,开发人员需要确定是否应将系统设计为热交换存储卡,或者是否需要关闭IoT节点。
 
如果IoT节点受到空间的限制,那么最好使用尽可能多的应用程序放入微控制器存储器中,而不是使用外部存储器。Microchip Technology的ATSAMD51J20A-AFT与ATSAMD51J19A相似,并且引脚兼容,不同之处在于它具有1 MB的闪存和256 KB的SRAM,从而为学习数据集提供了更多的片上存储空间。
 
使用TensorFlow Lite开发微控制器
Adafruit Industries利用4317 TensorFlow Lite for Microcontrollers开发套件支持ATSAMD51J19A的开发(图2)。该评估板具有2 MB的QSPI闪存,可用于存储学习数据集。该套件带有用于ML音频识别的麦克风插孔。它的1.8英寸彩色160 x 128 TFT LCD可用于开发和调试。当TensorFlow Lite for Microcontrollers与语音识别学习数据集一起使用时,该显示器还可用于语音识别演示。当应用程序识别不同的单词时,它们可以显示在屏幕上。
 
Adafruit Industries套件还具有八个按钮,一个三轴加速度计,一个光传感器,一个微型扬声器和一个锂聚合物电池。ATSAMD51J19A的USB 2.0端口被引到用于电池充电,调试和编程的连接器。
 
Adafruit套件随附了适用于微控制器的TensorFlow Lite的最新版本。可以使用USB端口将学习数据集加载到ATSAMD51J19A微控制器的512 KB闪存中,或加载到外部2 MB QSPI存储器中。
 
为了进行图像识别评估,可以将TensorFlow对象检测学习集加载到开发板上。开发板具有用于连接微控制器的并行和串行端口的端口,其中许多端口可用于连接外部摄像机。将对象检测学习设置加载到微控制器上后,LCD可以用于显示对象检测ML处理结果的输出,因此,如果识别出香蕉,则TFT显示屏可能会显示识别出的对象以及百分比置信度。结果显示示例可能显示为:
 
香蕉:95%
扳手:12%
眼镜:8%
梳子:2%
 
对于物联网对象检测应用程序的开发,这可以加快开发速度并帮助诊断任何不正确的检测结果。
 
结论
ML是一个不断扩展的领域,需要专门技能才能从头开发微控制器和模型,并在边缘高效地实现它们。但是,在低成本,高效的微控制器或开发板上使用现有的代码库(例如TensorFlow Lite for Microcontrollers)可节省时间和金钱,从而产生了可用于快速检测IoT节点中对象的高性能ML系统,可靠,高效。