0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用EdgeImpulse在线网站自行训练神经网络进行分类识别

STM32单片机 来源:STM32单片机 作者:STM32单片机 2021-03-11 09:33 次阅读

大家在很多地方都可以看到嵌入式AI的概念,但是到实际的上手和开发过程中,不完善的工具链和复杂的开发流程都是嵌入式工程师或者AI算法工程师很大的阻碍。

而基于STM32H7的OpenMV机器视觉模组和云端AI平台Edge Impulse合作,就很好的打通了从数据收集、打标,NN模型训练、优化到部署的整个流程。

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

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

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

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

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

你可以在以下地址查看整个项目内容,所有代码和模型都包括在内: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的连通。

* 选择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”,你就会进入“实时分类”的界面,里面包含文件的更多细节。这个界面将帮助你确定图片分类错误的原因。

一个无法分类的图片(因为其最高数值仍低于0.8的阈值)

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

04 在OpenMV上运行模型

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

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

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

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

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

识别戴口罩的人脸

识别不戴口罩的人脸

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

期待你的成果!

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4764

    浏览量

    100542
  • 数据集
    +关注

    关注

    4

    文章

    1205

    浏览量

    24644
  • 智能摄像头
    +关注

    关注

    0

    文章

    84

    浏览量

    14844

原文标题:OpenMV4 Plus使用Edge Impulse自行训练神经网络进行口罩识别

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    脉冲神经网络怎么训练

    脉冲神经网络(SNN, Spiking Neural Network)的训练是一个复杂但充满挑战的过程,它模拟了生物神经元通过脉冲(或称为尖峰)进行信息传递的方式。以下是对脉冲
    的头像 发表于 07-12 10:13 495次阅读

    怎么对神经网络重新训练

    重新训练神经网络是一个复杂的过程,涉及到多个步骤和考虑因素。 引言 神经网络是一种强大的机器学习模型,广泛应用于图像识别、自然语言处理、语音识别
    的头像 发表于 07-11 10:25 419次阅读

    BP神经网络在语言特征信号分类中的应用

    随着人工智能技术的飞速发展,语言特征信号分类作为语音识别、语种识别及语音情感分析等领域的重要基础,正逐渐受到研究者的广泛关注。BP神经网络(Back Propagation Neura
    的头像 发表于 07-10 15:44 324次阅读

    如何利用Matlab进行神经网络训练

    ,使得神经网络的创建、训练和仿真变得更加便捷。本文将详细介绍如何利用Matlab进行神经网络训练
    的头像 发表于 07-08 18:26 1689次阅读

    人工神经网络模型训练的基本原理

    图像识别、语音识别、自然语言处理等。本文将介绍人工神经网络模型训练的基本原理。 1. 神经网络的基本概念 1.1
    的头像 发表于 07-05 09:16 574次阅读

    人工神经网络模型的分类有哪些

    人工神经网络(Artificial Neural Networks, ANNs)是一种模拟人脑神经元网络的计算模型,它在许多领域,如图像识别、语音识别、自然语言处理、预测分析等有着广泛
    的头像 发表于 07-05 09:13 955次阅读

    反向传播神经网络优点和缺点有哪些

    反向传播神经网络(Backpropagation Neural Network,简称BP神经网络)是一种多层前馈神经网络,通过反向传播算法进行训练
    的头像 发表于 07-03 11:05 743次阅读

    卷积神经网络训练的是什么

    训练过程以及应用场景。 1. 卷积神经网络的基本概念 1.1 卷积神经网络的定义 卷积神经网络是一种前馈深度学习模型,其核心思想是利用卷积
    的头像 发表于 07-03 09:15 352次阅读

    神经网络在图像识别中的应用

    随着人工智能技术的飞速发展,神经网络在图像识别领域的应用日益广泛。神经网络以其强大的特征提取和分类能力,为图像识别带来了革命性的进步。本文将
    的头像 发表于 07-01 14:19 617次阅读

    如何训练和优化神经网络

    神经网络是人工智能领域的重要分支,广泛应用于图像识别、自然语言处理、语音识别等多个领域。然而,要使神经网络在实际应用中取得良好效果,必须进行
    的头像 发表于 07-01 14:14 398次阅读

    基于毫米波雷达的手势识别神经网络

    使用3D-CNN对三种手势进行分类,结果表明识别率为91%。然而,3D-CNN在数据分辨率灵敏度和数据要求方面存在局限性。Ref等人的另一项研究[12]介绍了一种定制的多分支卷积神经网络
    发表于 05-23 12:12

    利用深度循环神经网络对心电图降噪

    曼滤波。因此,通过这种方式训 练网络,无法获得比卡尔曼滤波本身更好的 性能。本文介绍了一种利用深度递归神经网络 (DRNN)对 ECG 信号进行降噪的新方 法。该
    发表于 05-15 14:42

    基于胎心仪的胎儿心脏诊断神经网络

    产生不同的结果。因此,CNN 必须反复训练才能获得稳定的精度。速率记录被分为1到16 段,以减少对记录长度的依赖。使用卷积神经网络对每 个片段进行分类,然后计算每个记录的相关标签的频率
    发表于 05-14 18:47

    实现图像识别神经网络的步骤

    我们的下一个任务是使用先前标记的图像来训练神经网络,以对新的测试图像进行分类。因此,我们将使用nn模块来构建我们的神经网络
    的头像 发表于 01-22 10:01 967次阅读
    实现图像<b class='flag-5'>识别</b><b class='flag-5'>神经网络</b>的步骤

    Kaggle知识点:训练神经网络的7个技巧

    科学神经网络模型使用随机梯度下降进行训练,模型权重使用反向传播算法进行更新。通过训练神经网络模型
    的头像 发表于 12-30 08:27 632次阅读
    Kaggle知识点:<b class='flag-5'>训练</b><b class='flag-5'>神经网络</b>的7个技巧