, , ,

手写识别

GitHub分支

本手写识别演示可以识别字符,包括字母和数字。 演示的典型使用场景是智能手表,用户可以快速编写特定命令(例如聊天、打电话、邮件等)或输入文本消息。 也可以用这种方式与智能设备进行交互。

方法

手写识别演示能够识别在STM32L562E MCU探索套件小型触摸屏(智能手表)上写下的字母和数字。

  • 触摸屏以图像形式被捕获,然后通过神经网络 (NN) 进行分类
  • 每个字符或字母都被识别为特定命令的组合
  • 本演示在STM32L562E探索套件上运行,每个字符都有与之对应的NN推理时间

可以通过STM32 Model Zoo重新训练模型。

传感器

演示使用触摸屏作为用户的输入媒介。
用户可以使用Model Zoo测试相机模块捆绑包(参考: B-CAMS-OMV)。

数据

数据集
在STM32 Model Zoo中,模型在EMNIST数据集的一个子集版本上进行训练。
在实验中,只保留了MatLab版本EMNIST ByClass数据集中的十位数类别 [0;9] 和字母表的大写字母 [A-Z]。
针对本演示,我们利用意法半导体板件上的触摸屏捕获的图像对数据集进行了丰富。

数据格式
数据集内容:

  • 从A到Z的大写字母
  • 从0到9的数字

数据集包含36个平衡类别的28 x 28像素灰度图像。

结果

模型: 意法半导体MNIST

输入大小: 28x28x1

存储器占用:

浮点模型:
38 KB Flash存储器用于加权
30 KB RAM用于激活

量化模型:
10 KB Flash存储器用于加权
14 KB RAM用于激活

准确率:
浮点模型: 93.48%
量化模型: 93.39%

110 MHz时的STM32L562E性能

浮点模型:
推理时间: 83 ms
帧率:12 fps

量化模型:
推理时间:29 ms
帧率: 34 fps

混淆矩阵