logo
OpenMV
家庭
应用
店铺
AI
销售渠道
支持
OpenMVOpenMV
扩展板扩展板
镜头镜头
机器人机器人
电子书电子书
视频教程视频教程
下载下载
文档文档
论坛论坛
英文官网英文官网
GithubGithub

OpenMV4 Plus使用Edge Impulse自行训练神经网络进行口罩识别

去年4月份我们的新品OpenMV4 H7 Plus上市啦,今天我来给大家介绍一下OpenMV4 H7 Plus的新功能——利用EdgeImpulse在线网站自行训练神经网络进行分类识别。

在本教程中,你将使用机器学习来构建一个识别系统,该系统可通过OpenMV4 H7 Plus智能摄像头识别人脸是否佩戴口罩,即实现影像分类。

OpenMV产品图

EdgeImpulse是一个为嵌入式设备提供在线训练神经网络模型服务的网站,它是我们OpenMV的合作伙伴,同时也均为ST意法半导体的官方合作伙伴。目前EdgeImpulse对我们OpenMV用户是免费开放的,OpenMV用户可以免费的使用EdgeImpulse在线训练适用于OpenMV的神经网络模型。

为嵌入式设备OpenMV增加神经网络,可实现区分盗猎者和大象、对工厂生产线进行质量控制、让遥控模型车自行驾驶等功能。

在本教程中,你将学习如何收集图像建立一个高质量的数据集,如何应用迁移学习训练神经网络,以及如何将系统部署到OpenMV。

另外我们也提供了视频教程,可在官网搜索《OpenMV4 Plus训练神经网络进行口罩识别》观看。

你可以在以下地址查看整个项目内容,所有代码和模型都包括在内:https://book.openmv.cc/project/mask.html

使用EdgeImpulse在线训练适用于OpenMV的神经网络模型主要分为以下四个步骤:数据集采集、上传、训练以及部署。

01、采集数据集

在本教程中,我们会构建一个可以区分人脸是否佩戴口罩的模型。当然你也可以选择分类其他物品。为实现机器学习模型的运作,你需要收集戴口罩和不带口罩两种人脸的大量示例图像。在训练时,这些示例图像就用来做模型的区分练习。

我们需要利用OpenMV IDE来采集我们的数据集,采集图像的步骤如下:

* 创建两个分类:

打开OpenMV IDE菜单栏的“工具”,选择“数据集编辑器”,单击“新建数据集”,然后新建一个文件夹并打开,在数据集里面再新建两个文件夹分别命名为mask(用来保存戴口罩的人脸的照片)和face(用来保存不戴口罩的人脸的照片)。

口罩识别教程-新建数据集
口罩识别教程-创建分类文件夹

* 用OpenMV采集图像

首先我们连接OpenMV,点击IDE里面的“连接”,点击“运行”,Framebuffer帧缓冲区中可以看到OpenMV实时的图像,点击左侧菜单栏中的照片的按钮,OpenMV就会自动的保存这张图片,这就是数据集里面的一个数据。

首先我们要保存的是戴了口罩的人脸,点一下照片的按钮,IDE下侧就会拍摄一张照片,它会自动命名为00000,然后下一张是00001,以此类推。

用OpenMV分别采集200张戴口罩(男女各100张)和200张不戴口罩(男女各占100张)的人脸的照片。

口罩识别教程-用OopenMV采集男生戴口罩的图像
口罩识别教程-用OopenMV采集女生戴口罩的图像

* 注意:要确保采集到各种角度的照片,保证我们训练学习的多样化。

* 如果采集的过程中发现某张图片采集得不够完美的话,可以右键此图片点击删除。

02、上传

使用OpenMV采集完图像以后,你需要注册账号登录EdgeImpulse官网(https://edgeimpulse.com/)开始上传图像,上传图像的步骤:

* 在EdgeImpulse上新建一个项目,点击“keys”,选择“API Key”并复制“API Key”。通过API Key实现OpenMV IDE和Edge Impulse的连通。

口罩识别教程-和Edge Impulse的连通

* 选择OpenMV IDE上方菜单栏的“工具”——“数据编辑器”——“Export”——“上传”——“通过API Key上传”,复制“API Key”上传即可。

上传时数据将自动划分为训练集和测试集,我们默认选择比例为“80%和20%”即可。我们一共采集了400多张人脸图片,其中80%的Training Date就是默认你80%的数据用来训练,剩余的20%用作测试集。

口罩识别教程-用OpenMV上传数据集
口罩识别教程-将数据集上传到EdgeImpulse上

03、训练数据集

数据集准备就绪,你就可以在EdgeImpulse网站界面中训练数据集了。

* 配置处理模块:

首先选择“Impulse Design”,配置处理模块:

 * 设置默认的图像长宽为“96 x 96”;

 * 选择“图像Images”模块,表示我们是对图像进行分类训练(你也可以用EdgeImpulse分类声音、视频等);

 * 选择“迁移学习(图像)Transfer Learning (Images)”,设置学习的模型;

选择“保存Save impulse”,显示Successfully就是配置成功了。

口罩识别教程-配置处理模块

* 图像预处理:

单击左侧菜单中的“图像Image”,将颜色格式设置为“RGB”,然后点击“Save”。

口罩识别教程-图像预处理

* 接下来选择“生成特征Generate features”来启动流程,将对400多张数据进行图像预处理,右侧会显示完整数据集的3D可视化。

口罩识别教程-数据可视化处理

* 配置迁移学习模型

单击左侧菜单中的“迁移学习Transfer learning”,设置的参数全部选择默认的就可以,也可以根据需求来更改参数:

 1.将训练周期数Number of training cycles设置默认为10

 2.将学习率Learning rate设置为0.0005

 3.可以勾选也可以不勾选“数据增强Data augmentation”

 4.将最低置信度Minimum confidence rating默认设置为0.8。

点击“开始训练Start training”,训练的过程大概4到5分钟左右。

模型训练完成后,你可以查看准确度、混淆矩阵confusion matrix和预期设备性能。

口罩识别教程-训练完成后的表现

* 测试模型:

训练完成后,我们将使用测试数据来检验模型。

选择“模型测试Model testing”,勾选“样本名称Sample name”旁的复选框,点击“分类选择Classify selected”。这里显示的准确度达到了97%,就一个数据甚少的模型而言实属难得。

口罩识别教程-测试模型

发现显示红色的这一张图片是不确定的,点击这张图片右侧的三个点,选择“显示分类 Show classification”,你就会进入“实时分类”的界面,里面包含文件的更多细节。这个界面将帮助你确定图片分类错误的原因。

口罩识别教程-无法分类的图片

如果数据在所有已知的集群(戴口罩/不戴口罩)之外,这可能是与以前看到的任何分类都不匹配的数据——可能是由于头发遮住了大半的人脸。

04、在OpenMV上运行模型

完成了训练设计、模型训练和模型验证的步骤,你就可以将这个模型导出到你的OpenMV,选择“OpenMV”,选择“Build”进行生成,它自动生成了3个文件:

 * trained.tflite 训练好的神经网络模型

 * labels.txt 两个分类标签(face和mask)  

 * ei_image_classification.py 是OpenMV上面要运行的代码

口罩识别教程-在OpenMV上运行模型

连接OpenMV IDE,把这3个文件保存到OpenMV内置的Flash里面。将ei_image_classification.py文件在OpenMV IDE中打开,可以看到我们刚刚在EdgeImpulse里面生成的代码。点击运行,在串行终端里面会显示运行的结果。

口罩识别教程-识别戴口罩的人脸.
口罩识别教程-识别不戴口罩的人脸

好啦,你已经成功地为OpenMV增加自行训练神经网络的功能了。

期待你的成果!

相关文章

机房/配电房/单元门敞开识别

基于OpenMV的AI哨兵:重点场所未关自动提醒

自动判断重点场所门是否长时间未关闭,并及时提醒。

越界识别

人员越界即警报,OpenMV诠释“安全边界感”

通过虚拟警戒线识别人员或设备越界行为。

占道经营识别

“AI城管”来咯,基于OpenMV构建占道经营自动识别系统

自动识别占道经营行为,辅助城市日常治理。

煤气罐违规摆放识别

煤气罐乱放?利用OpenMV自动触发危险预警

自动识别煤气罐违规摆放位置,提前发现燃气安全隐患。

绝缘手套佩戴识别

带电作业没戴绝缘手套?OpenMV即刻警报!

自动识别作业人员是否佩戴绝缘手套,辅助安全作业。

铝板缺陷识别

运用OpenMV智能摄像头,实时识别铝板表面缺陷

在线识别铝板表面划痕、凹陷等缺陷,辅助质量管控。

热门分类

语言和地区
Copyright © 2025 星瞳科技SingTown
粤ICP备17045162号