雷竞技注册
行业的文章

如何实现数字识别与TensorFlow Lite使用i.MX RT1060交叉MCU

2020年9月22日通过大卫·皮斯库拉,NXP半导体公司

本文使用MNIST EIQ查看数字检测和识别,作为若干部件的示例 - 数字识别由TensorFlow Lite模型执行,并且使用GUI来提高I.MX RT1060设备的可用性。

i.MX RT1060交叉MCU同样适用于高性价比的工业应用和需要显示功能的高性能和数据密集型消费产品。本文通过说明如何实现一个可以检测和分类用户手写输入的嵌入式机器学习应用程序来演示基于Arm®Cortex®- m7单片机的功能。

为此,本文重点介绍流行的MNIST eIQ示例,该示例由几个部分组成——数字识别由TensorFlow Lite模型执行,使用GUI提高i.MX RT1060设备的可用性。

查看mist数据集和模型

本文中使用的数据集包括60,000次培训和10,000个手写数字灰度图像的测试示例。每个样本的分辨率为28x28像素:

图1所示。MNIST数据集的例子

这些样品从美国的高中生和人口普查局员工中收集。因此,数据集主要包含在北美编写的数字的示例。例如,对于欧式编号,必须使用不同的数据集。卷积神经网络通常在与此数据集一起使用时提供最佳结果,甚至简单的网络也可以实现高精度。因此,Tensorflow Lite是此任务的合适选择。

本文选择的MNIST模型实现可以在GitHub上作为官方TensorFlow模型之一使用,它是用Python编写的。该脚本使用Keras库和tf。数据,tf.estimator. estimator,和tf。层API,构建了一个能够对测试样本实现高精度的卷积神经网络:

图2。使用模型的可视化。

对应的模型定义如下图3所示。

图3。对应于模型可视化的模型定义。

什么是TensorFlow Lite,在这个例子中它是如何使用的?

TensorFlow是一个著名的深度学习框架,被大公司广泛应用于生产。它是一个由谷歌开发和维护的开源、跨平台的深度学习库。低级Python API对于有经验的开发人员和高级库(如本例中使用的类库)很有用。此外,TensorFlow由一个大型社区和优秀的在线文档、学习资源、指南和来自谷歌的示例支持。

为了让计算受限的机器(如移动设备和嵌入式解决方案)能够运行TensorFlow应用程序,谷歌开发了TensorFlow Lite框架,它不支持TensorFlow框架的全部操作。它允许这些设备在预先训练的TensorFlow模型上运行推断,这些模型被转换为TensorFlow Lite。作为回报,这些转换后的模型不能被进一步训练,但可以通过量化和剪枝等技术进行优化。

将模型转换为TensorFlow Lite

上面讨论的训练过的TensorFlow模型必须转换成TensorFlow Lite才能在i.MX RT1060 MCU上使用。为此,它使用tflite_convert进行转换,并且,出于兼容性原因,使用了TensorFlow的1.13.2版本来训练和转换模型:

tflite_convert.

——saved_model_dir =

--output_file = converted_model.tflite.

——input_shape = 1, 28日,28

——input_array =占位符

——output_array = Softmax

——inference_type =浮动

--input_data_type = float.

——post_training_quantize

——target_ops TFLITE_BUILTINS

最后,使用xdd工具将TensorFlow Lite模型转换为一个二进制数组,以便应用程序加载:

xxd -i converted_model.tfl.tflite> converted_model.h

xdd是一个十六进制转储实用程序,可以利用它将文件的二进制形式转换为相应的十六进制转储表示,反之亦然。在这种情况下,TensorFlow Lite二进制文件被转换为C/ c++头文件,可以添加到eIQ项目中。转换过程和tflite_convert实用程序在eIQ用户指南中有更详细的描述。该实用程序在谷歌官方文档中也有描述。

嵌入式向导工作室的快速介绍

为了利用MIMXRT1060-EVK的图形功能,这个项目中包含了一个GUI。为此,我们使用了嵌入式向导工作室(Embedded Wizard Studio),这是一个IDE,用于为将在嵌入式设备上运行的应用程序开发gui。虽然有一个免费的IDE评估版本可用,但这个版本限制了图形用户界面的最大复杂性,而且还在GUI上添加了水印。

嵌入式Wizard Studio的优势之一是它能够基于XNP的SDK生成MCUXpresso和IAR项目,这意味着在IDE中创建用户界面后,开发人员可以立即在他们的设备上测试它。

IDE提供了对象和工具,如按钮、触摸敏感区域、形状等,这些都放在画布上。然后,它们的属性被设置为符合开发商的需求和期望。所有这些都以直观和用户友好的方式工作,并且极大地加快了GUI开发过程。

然而,有几个转换步骤必须将GUI项目与现有的eIQ应用程序项目合并,因为生成的GUI项目是用C语言编写的,而qIQ示例是用C/ c++编写的。因此,有些头文件的内容必须包含以下内容:

#ifdef __cplusplus.

外来的“C”{

#万一

/ * c代码* /

#ifdef __cplusplus.

}

#万一

此外,大部分源文件和头文件被移动到SDK的中间件文件夹中的一个新文件夹中,并添加了新的包含路径以反映这些更改。最后,对一些特定于设备的配置文件进行了比较和适当的合并。

完成的应用及其特点

应用程序的GUI显示在触摸敏感的LCD上。它包含用于写入数字的输入区域,也包含显示分类结果的输入区域。运行推理按钮执行推断,清除按钮清除输入和输出字段。应用程序将预测的结果和置信量输出到标准输出。

图4。示例应用程序的GUI包含一个输入字段、一个输出字段和两个按钮。结果和置信度也打印到标准输出。

TensorFlow Lite模型精度

如前所述,该模型对美式手写数字进行分类时,可以对训练和测试数据实现较高的准确性。然而,在本应用程序中却不是这样,这主要是因为用手指在LCD上写的数字与用钢笔在纸上写的数字是不一样的。这突出了对生产模型进行真实生产数据培训的重要性。

为了得到更好的结果,必须收集一组新的数据。此外,方法必须是相同的。在这种情况下,必须使用触摸屏输入来收集样本以绘制数字。进一步的技术可以提高预测的准确性。恩智浦社区网站包含了使用迁移学习技术的演练。

实施细节

嵌入式向导使用槽作为响应GUI交互的触发器,例如,当用户在输入区域上拖动手指时。在这种情况下,插槽会在手指下方连续画出像素宽的线。这条线的颜色由主颜色常数定义。

The clear button’s slot sets the color of every pixel in both fields to the background color, and the run inference button saves references to the input area, the underlying bitmap, and the width and height of the area, and then passes them to a native C program that processes them.

由于机器学习模型的位图仅为28x28像素,因此将输入区域创建为112x112平方,以使使用应用更舒适,在缩小图像时需要额外的预处理。否则,该过程会扭曲图像太多。

首先,创建一个具有输入区域的维数的8位整数数组,并用0填充。然后,对图像和数组进行迭代,图像中绘制的每个像素都存储为数组中的0xFF。在处理输入时,主颜色的像素被认为是白色的,其他的都是黑色的。此外,每个像素都被扩展成一个3x3的正方形来加粗线条,这将使缩小图像更安全。在将图像缩放到所需的28x28分辨率之前,绘图将被裁剪并居中,以类似MNIST图像:

图5。包含预处理输入数据的数组的可视化。

当应用程序开始时,可​​以分配机器学习模型,加载和准备。通过每个推理请求,模型的输入张磁阻被加工输入并传递给模型。输入必须按像素复制到张量像素中,并且必须将整数值转换为过程中的浮点值。此NXP应用程序注意包含代码的详细内存占用空间。

Tensorflow Lite:一种可行的解决方案

使用机器学习的手写数字识别可能会给嵌入式系统带来问题,TensorFlow Lite提供了一个可行的解决方案。有了这个解决方案,可以实现更复杂的用例,如数字锁上的pin输入域。正如本文所讨论的,对生产模型进行实际生产数据的培训是至关重要的。本文中使用的训练数据由用笔写在纸上的数字组成。这反过来又降低了该模型用于检测绘制在触摸屏上的数字的总体准确性。此外,必须考虑到区域差异。

i.MX RT crossover MCU系列可以实现到各种嵌入式应用程序中,如本文提供的示例。恩智浦在i.MX RT跨界MCU系列上有充足的信息,可以帮助弥合性能和可用性之间的差距。

有关I.MX RT Crossover MCU的更多信息,请访问i.mx RT产品页面

行业文章是一种内容的形式,允许行业合作伙伴分享有用的新闻,消息和技术,所有关于电路读者的行为编辑内容并不适合。雷竞技注册所有行业文章都受到严格的编辑准则,目的是提供读者有用的新闻,技术专业知识或故事。在行业文章中表达的观点和意见是合作伙伴的观点,不一定是关于电路或其作家的所有人。雷竞技注册