电子说
水表是常见的家用设备。模拟式水表(如下图中所示)数量庞大,需要技术人员每月现场抄表并手工记录数据,以计算当月的用水量。整个过程枯燥且费力。当前,虽然联网仪表正在取代模拟式水表,但成本也会随之上涨;更何况,一些国家并不具备接入全球网络的能力,而有的家庭和公司也无计划支付更换仪表的费用。
本文,意法半导体为你演示如何使用低功耗、低成本的系统(由采用MCU嵌入式连接的低分辨率摄像机组成)高效地将模拟式仪表数字化。
该方法以STM32WL55为基础,通过摄像头捕捉水表读数区域,然后通过MCU上运行的人工智能算法识别水表读数。之后,AI分类器算法的运行结果(即仪表读数)通过STM32WL支持的远程sub-GHz无线网络(如LoRaWAN)进行传输。传统的联网设备会将图像传送到云端,而我们的解决方案传送的是读数。
该解决方案的优点是:通过本地AI模型,可以快速准确地识别读数,只需将结果发送回数据中心即可。此举不仅能有效保护用户数据隐私(仅传输推理结果),而且效率更高,还节省带宽。这样,我们就能以低成本、低功耗、高效率的方式解决问题。
STM32WL系列是世界上第一款支持远程无线通信的MCU。
作为市场上首款可以连接LoRa低功耗广域网的系统级芯片,STM32WL集成了STM32L4超低功耗微控制器和支持多种调制方案的Sub-GHz射频子系统。
STM32取得成功的一个重要因素是其强大的生态系统。基于STM32WL产品的开发人员可以借用已经被市场证明成熟可靠的STM32生态系统。该生态系统包含已经熟练掌握的开发工具(支持基于STM32进行通用开发)、专门用于sub-GHz无线电开发的软件包,以及AI设计工具,由此大大降低了开发难度,并缩短了产品上市时间。
生态系统中的资源包括STM32CubeMX项目配置和代码生成工具、STM32CubeMonitor运行时监测和可视化工具,以及STM32CubeProgrammer代码烧录工具。
STM32Cube.AI可以帮助用户快速将经过训练的AI模型部署到STM32并进行验证测试。
STM32CubeWL MCU软件包的组件包含STM32WL系列运行所需的所有嵌入式软件模块,包括外设驱动程序、意法半导体的LoRaWAN协议栈、Sigfox协议栈,以及利用意法半导体安全启动和安全固件更新技术实现LoRaWAN固件无线更新的示例代码。
此外,还有两种基于STM32WL的nucleo板件可用于快速原型制作:NUCLEO-WL55JC1(868pm 915amp 923 MHz)和NUCLEO-WL55JC2(433Accord470 MHz)。与此同时,有两种基于Nucleo的Nucleo板可用于快速原型开发。该项目基于NUCLEO-WL55JC2开发板。
除了NUCLEO-WL55JC2,该项目的另一个关键组成部分是摄像头。
摄像头模块(基于低成本的OV2640传感器)通过标准GPIO直接连接到NUCLEO-WL55JC2开发板,因为STM32WL系列产品不提供DCMI接口。为方便进行演示,我们使用了一款常见的电磁计数器,这样更容易进行模型演示。
实验系统如下图所示。我们将直流电源转化成方波,用于驱动电磁计数器,然后摄像头就可以采集计数器的读数画面,通过GPIO传输到NUCLEO-WL55JC2,由MCU上运行的AI模型进行识别。
所有硬件准备就绪后,我们就可以自己制作一个数据集,用于模型训练。
在计算机视觉应用中,有一个经典的入门级项目 - 识别MNIST数据集。MNIST数据集收集0-9这10个阿拉伯数字的手写字体,包括训练集中的60000个样本和测试集中的1000个样本。有的用户想要通过真实数据来尝试学习技巧和模式识别方法,同时尽可能地节省在预处理和格式化方面花费的精力,对于此类用户, MNIST是一个很好的练手项目。
但是我们不使用该数据集,因为水表上的数字的字体和颜色与该数据集差别很大。为了使模型获得更好的表现,我们将使用上面提到的设备制作一个类似于MNIST的数据集。
该数据集大约有4000个样本。每个样本包含5位数字。数据集的部分样本如下所示:
拥有数据集之后,我们可以构建一个神经网络,并用自己的数据集来训练模型。在该模型中,我们输入一幅40 X32(单个字符)的灰度图像来识别从0到19(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)的20个类。下图显示了训练中的损失和准确率的变化。该数据集的特点是背景简单和字体规则,看起来训练效果非常好。实际上,我们可以收集不同的水表读数(不同的字体和颜色)进行训练,这样一个模型就可以识别多个不同水表读数。
训练结束后,我们将得到一个模型文件。此时,我们可以使用前面文章中提到的STM32cube.AI工具将模型转换为优化的代码,并快速将其部署到NUCLEO-WL55JC2板。
STM32Cube集成使STM32Cube.AI用户能够有效地在广泛的STM32微控制器系列产品之间移植模型,并且(在相似型号适用于不同产品的情况下)在STM32产品之间轻松迁移。该项目使用STM32cube.AI将模型部署到STM32WL。关于计算机视觉应用,我们在前面文章中介绍的FP-AI-VISION1软件包中有许多开放代码,可帮助开发人员理解和快速开发。用户可以浏览前面的文章:AI技术专题之六:STM32计算机视觉包FP-AI-VISION1简介,以了解详细信息。
该插件扩展了STM32CubeMX功能,可自动转换预训练人工智能模型和将生成的优化库集成到用户项目中,而不是人工构建代码,并支持将深度学习解决方案嵌入到广泛的STM32微控制器产品组合中,从而为每个产品添加新的智能化功能。
STM32Cube.AI原生支持各种深度学习框架,如Keras、TensorFlow™ Lite、ConvNetJs,并支持可导出为ONNX标准格式的所有框架,如PyTorch™、Microsoft®Cognitive Toolkit、MATLAB®等。
此外,STM32Cube.AI支持来自广泛ML开源库Scikit-Learn的标准机器学习算法,如孤立森林、支持向量机(SVM)、K-Means。
在该项目中,我们使用的是TensorFlow框架。
最后,让我们看看实际表现如何。为了便于演示,我们将摄像头捕捉到的图像和MCU上的识别结果传输到计算机屏幕上。视频中黑色背景上的数字(白色字体)是摄像头捕捉到的图像,第一行是AI模型的识别结果。我们将水表设置为每五秒钟驱动一次,这样数字每隔五秒就会更新一次。该视频显示的是未经编辑的录屏。在演示过程中,我们采用了遮挡的光线的方式,去模拟不同的光照条件,证明模型的鲁棒性很好。
来源:意法半导体中国
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !