使用 ESP32 实现口罩检测
本教程将基于 SSCMA 示范使用 ESP32 实现口罩检测的开发流程。
TIP
在开始前,我们建议您先阅读 ESP32 - 部署教程。
准备工作
请参考 ESP32 - 部署教程 - 先决条件。
训练模型
口罩检测功能基于 FOMO 模型实现,在这一步您需要一个后缀为 .pth
的 FOMO 模型权重,您有两种方法获取该模型权重:
在我们的 Model Zoo 下载预训练好的模型。
参考模型训练 - FOMO 模型,基于 PyTorch 和 SSCMA 自行训练 FOMO 模型得到模型权重。
导出模型
由于训练得到的模型并不适合直接在边缘计算设备上运行,我们首先需要将其导出为后缀是 .tflite
的 TFLite 格式,您有两种方法获取导出的模型 (包含模型权重):
在我们的 Model Zoo 下载导出为 TFLite 格式的模型。
参考模型导出 - PyTorch 转 TFLite,自行将 FOMO 模型从 PyTorch 格式转换为 TFLite 格式。
转换模型
在完成导出模型后,我们还需要进一步处理,将其转换为嵌入式设备支持的格式。
进入
examples/esp32
目录 (在 SSCMA 项目根目录运行):shcd examples/esp32
转换 TFLite 模型为二进制 C 文件
shpython3 tools/tflite2c.py --input <TFLITE_MODEL_PATH> --name fomo --output_dir components/modules/model --classes='("unmask", "mask")'
TIP
您需要将 <TFLITE_MODEL_PATH>
替换为在模型导出步骤取得的 TFLite 模型的路径,转换生成的 C 文件将默认输出到 SSCMA/example/esp32
目录中的 components/modules/model
目录。
部署模型
这是完成口罩检测的最后一步,也是最重要的一步,在这一步您需要编译并刷写固件到 ESP32 MCU。请参考 ESP32 - 部署教程 - 编译和部署完成模型的部署。