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

    文章

    4827

    浏览量

    106796
  • 数据集
    +关注

    关注

    4

    文章

    1230

    浏览量

    26046
  • 智能摄像头
    +关注

    关注

    0

    文章

    89

    浏览量

    15358

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NMSIS神经网络库使用介绍

    NMSIS NN 软件库是一组高效的神经网络内核,旨在最大限度地提高 Nuclei N 处理器内核上的神经网络的性能并最​​大限度地减少其内存占用。 该库分为多个功能,每个功能涵盖特定类别
    发表于 10-29 06:08

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    模型。 我们使用MNIST数据集,训练一个卷积神经网络(CNN)模型,用于手写数字识别。一旦模型被训练并保存,就可以用于对新图像进行推理和预
    发表于 10-22 07:03

    无刷电机小波神经网络转子位置检测方法的研究

    摘要:论文通过对无刷电机数学模型的推导,得出转角:与三相相电压之间存在映射关系,因此构建了一个以三相相电压为输人,转角为输出的小波神经网络来实现转角预测,并采用改进遗传算法来训练网络结构与参数,借助
    发表于 06-25 13:06

    基于FPGA搭建神经网络的步骤解析

    本文的目的是在一个神经网络已经通过python或者MATLAB训练好的神经网络模型,将训练好的模型的权重和偏置文件以TXT文件格式导出,然后通过python程序将txt文件转化为coe
    的头像 发表于 06-03 15:51 897次阅读
    基于FPGA搭建<b class='flag-5'>神经网络</b>的步骤解析

    使用BP神经网络进行时间序列预测

    使用BP(Backpropagation)神经网络进行时间序列预测是一种常见且有效的方法。以下是一个基于BP神经网络进行时间序列预测的详细步骤和考虑因素: 一、数据准备 收集数据 :
    的头像 发表于 02-12 16:44 1266次阅读

    BP神经网络网络结构设计原则

    BP(back propagation)神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,其网络结构设计原则主要基于以下几个方面: 一、层次结构 输入层 :接收外部输入信号,不
    的头像 发表于 02-12 16:41 1254次阅读

    BP神经网络与卷积神经网络的比较

    多层。 每一层都由若干个神经元构成,神经元之间通过权重连接。信号在神经网络中是前向传播的,而误差是反向传播的。 卷积神经网络(CNN) : CNN主要由卷积层、池化层和全连接层组成。
    的头像 发表于 02-12 15:53 1307次阅读

    如何优化BP神经网络的学习率

    优化BP神经网络的学习率是提高模型训练效率和性能的关键步骤。以下是一些优化BP神经网络学习率的方法: 一、理解学习率的重要性 学习率决定了模型参数在每次迭代时更新的幅度。过大的学习率可能导致模型在
    的头像 发表于 02-12 15:51 1423次阅读

    BP神经网络的优缺点分析

    自学习能力 : BP神经网络能够通过训练数据自动调整网络参数,实现对输入数据的分类、回归等任务,无需人工进行复杂的特征工程。 泛化能力强
    的头像 发表于 02-12 15:36 1581次阅读

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播算法的介绍: 一、基本概念 反向传播算
    的头像 发表于 02-12 15:18 1274次阅读

    BP神经网络与深度学习的关系

    ),是一种多层前馈神经网络,它通过反向传播算法进行训练。BP神经网络由输入层、一个或多个隐藏层和输出层组成,通过逐层递减的方式调整网络权重,
    的头像 发表于 02-12 15:15 1340次阅读

    BP神经网络的基本原理

    输入层、隐藏层和输出层组成。其中,输入层负责接收外部输入数据,这些数据随后被传递到隐藏层。隐藏层是BP神经网络的核心部分,它可以通过一层或多层神经元对输入数据进行加权求和,并通过非线性激活函数(如ReLU、sigmoid或tan
    的头像 发表于 02-12 15:13 1518次阅读

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

    传播神经网络(Back Propagation Neural Network),是一种多层前馈神经网络,主要通过反向传播算法进行学习。它通常包括输入层、一个或多个隐藏层和输出层。BP神经网络
    的头像 发表于 02-12 15:12 1188次阅读

    如何训练BP神经网络模型

    BP(Back Propagation)神经网络是一种经典的人工神经网络模型,其训练过程主要分为两个阶段:前向传播和反向传播。以下是训练BP神经网络
    的头像 发表于 02-12 15:10 1463次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工神经网络   人工神经网络模型之所
    的头像 发表于 01-09 10:24 2245次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法