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

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

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

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

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

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

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

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

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

01采集数据集

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

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

*创建两个分类:

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

新建数据集

创建分类文件夹

*用OpenMV采集图像

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

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

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

用OopenMV采集男生戴口罩的图像

用OopenMV采集女生戴口罩的图像

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

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

02上传

*在EdgeImpulse上新建一个项目,点击“keys”,选择“APIKey”并复制“APIKey”。通过APIKey实现OpenMVIDE和EdgeImpulse的连通。

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

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

用OpenMV上传数据集

将数据集上传到EdgeImpulse上

03训练数据集

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

*配置处理模块:

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

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

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

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

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

配置处理模块

*图像预处理:

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

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

特征资源管理器将数据集中的数据进行可视化处理。

在特征资源管理器中分离良好的集群更便于机器学习模型学习。

*配置迁移学习模型

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

1.将训练周期数Numberoftrainingcycles设置默认为10

2.将学习率Learningrate设置为0.0005

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

4.将最低置信度Minimumconfidencerating默认设置为0.8。

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

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

训练完成后的表现

*测试模型:

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

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

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

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

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

04在OpenMV上运行模型

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

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

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

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

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

识别戴口罩的人脸

识别不戴口罩的人脸

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

THE END
1.机器学习数据集合集!AiWaf-2 是一个高级的机器学习系统,使用多种模型来检测三种类别的网络行为:XSS攻击、SQL注入攻击和良性请求。该系统旨在提供高精度的威胁识别和分类,包括: GRU (门控循环单元) CNN (卷积神经网络) KNN (K-最近邻) SVM (支持向量机) RF (随机森林) https://blog.csdn.net/Kyzy_1919/article/details/144371975
2.机器学习Hinton 因通过神经网络对现代机器学习作出的奠基性贡献,获得 2024 年诺贝尔物理学奖。“将超越人的智力水平”:机器学习先驱获2024年诺贝尔物理学奖 机器学习2024-10-09 10:15 1896 划重点 012024年诺贝尔物理学奖授予美国普林斯顿大学的John Hopfield和加拿大多伦多大学的Geoffrey Hinton,以表彰他们开发了理解神经https://ailab.cn/ml/
3.训练简单的密集神经网络在本单元中,我们将了解如何训练最简单的密集神经网络(或感知器)识别手写数字,并尝试可视化网络权重以了解其工作原理。https://docs.microsoft.com/zh-cn/training/modules/intro-computer-vision-pytorch/3-train-dense-neural-networks
4.量子神经网络初体验从上述打印可以看到,此时构建的哈密顿量为对第0位量子比特执行泡利Z算符测量,且系数为-1。之所以将系数设为-1,是因为在量子神经网络的训练中,Ansatz中的参数的梯度会一直下降,同时测量值也会一直减少。如果最后收敛于-1,那么此时对应的量子态是|1?而不是|0,如下所示 https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.5/initial_experience_of_quantum_neural_network.html
5.PaddlePaddle/PaddleClas:Atreasurechestforvisual基于ImageNet1k 分类数据集,PaddleClas 支持 37 个系列分类网络结构以及对应的 217 个图像分类预训练模型,训练技巧、每个系列网络结构的简单介绍和性能评估将在相应章节展现,下面所有的速度指标评估环境如下: Arm CPU 的评估环境基于骁龙 855(SD855)。 Intel CPU 的评估环境基于 Intel(R) Xeon(R) Gold 6148。 GPUhttps://openi.pcl.ac.cn/PaddlePaddle/PaddleClas/src/branch/develop/docs/zh_CN/models/ImageNet1k
6.获全美的壁纸和神经网络训练素材的网站集合获取精美的壁纸和神经网络训练素材的网站集合 天天对着电脑,也是经常要换一下屏幕的底色,让人耳目一新的感觉。本想随便在百度上找几个图片,没想到现在的图片都限制大小了,并且很多都收费了。免费的东西用惯了,只能花点时间自己去找点这样的网站,在一段时间的搜索尝试中,终于找到了几个比较ok的。这里推荐几个网站https://blog.51cto.com/u_15054047/4134143
7.python使用Tensorflow训练BP神经网络实现鸢尾花分类python所以只要给出足够多的鸢尾花花萼、花瓣数据,以及对应种类,使用合适的神经网络训练,就可以实现鸢尾花分类。 搭建神经网络 输入数据是花萼长、花萼宽、花瓣长、花瓣宽,是n行四列的矩阵。 而输出的是每个种类的概率,是n行三列的矩阵。 我们采用BP神经网络,设X为输入数据,Y为输出数据,W为权重,B偏置。有 https://www.jb51.net/article/212039.htm
8.愉快使用谷歌免费人工智能平台colab,训练你的神经网络模型,为你的言归正传,本人研究方向为音频信息隐藏,是不是很憨的方向,具体的暂时做使用神经网络做音频隐写分析。既然使用神经网络了,那肯定需要GPU资源了。总的来说就是需要一台cpu和gpu都很强劲,内存很大的工作站了。但是苦于实验室和导师现状,我一时半会搞不到GPU资源。但是天无绝人之路,谷歌提供了这个免费的平台。国内https://www.shanyemangfu.com/colab.html
9.神经网络的训练方法专利名称::神经网络的训练方法技术领域::本发明一般地涉及人工神经网络及其操作,尤其但不专门涉及一种改进的神经网络训练方法和/或系统,该方法和/或系统使得神经元能够在训练过程屮根据需要增加到网络中。背景技术::随着过去十年间产生的数据集的扩增和规模,人们更感兴趣于开发能够用于找到数据集内的一些关系、也就是https://www.xjishu.com/zhuanli/55/200680042779.html
10.最新训练神经网络的五大算法腾讯云开发者社区神经网络模型的每一类学习过程通常被归纳为一种训练算法。训练的算法有很多,它们的特点和性能各不相同。 问题的抽象 人们把神经网络的学习过程转化为求损失函数f的最小值问题。一般来说,损失函数包括误差项和正则项两部分。误差项衡量神经网络模型在训练数据集上的拟合程度,而正则项则是控制模型的复杂程度,防止出现过https://cloud.tencent.com/developer/article/1090593
11.不敲代码,也能训练深度神经网络?试试DeepCognition不敲代码,也能训练深度神经网络?试试DeepCognition 提起AI与编程,很多人的脑海里,浮现出的画面,也许是这样子的。 目前,即便是代码量要求较小的自动化 AI 模型训练框架,比如 AutoML/AutoKeras等,使用它们,也需要一定的的编程基础,需要编写许多行的代码。https://www.jianshu.com/p/4454893ad7eb
12.MIT史上首次用AI控制动物大脑活动!技术前沿洞察新闻频道找到神经网络的“子网络”,让神经网络训练更快更好 如今,我们生活中几乎所有基于人工智能的产品都依赖于有自主学习并标记数据能力的“深度神经网络”。 然而,为了更好地学习,神经网络通常需要需要大量的数据集进行大型的训练——这一训练过程耗时长、需要配备昂贵的GPU,有时还需要定制设计的硬件。这些客观因素导致深度https://news.hexun.com/2019-05-14/197178826.html
13.字节跳动破局联邦学习:开源Fedlearner框架,广告投放增效209%联邦学习技术本质上是为了帮助联邦双方更好地训练模型。不同公司由于此前积累的数据类型特征不同,落地应用场景不同,会采用不同的模型训练方式。 常见的模型训练包括神经网络模型训练、树模型训练、线性回归模型训练等等。其中,神经网络训练模型最常见的落地应用场景是推荐,包括个性化内容推荐、广告推荐等等,而树模型更多在https://maimai.cn/article/detail?fid=1550604028&efid=zqj9rqK7Yf_Us-lu-0Wnmg
14.清华大学交叉信息研究院然而,研究人员发现深度学习网络常常倾向于寻找“捷径”的解决方案,当数据分布与训练集有稍许偏差时,这样的捷径解常常会出现灾难性的错误。该研究发现,当人们可以根据输入信号中的关键成分提供一个额外的“引导”特征时,深度神经网络可以成功避免捷径,这个“引导”特征可以是一个对于输出目标的粗略估计。这样的“引导”是https://iiis.tsinghua.edu.cn/show-9635-1.html
15.基于一维宽核卷积神经网络—长短时记忆网络的单导脑电信号睡眠本文从数据类不均衡处理及神经网络模型训练优化两方面开展研究工作[18-19],构建高性能的睡眠状态识别模型,以达到准确分类睡眠状态的目的。首先,针对N1样本量与其他状态样本量不均衡的问题,采用合成少数过采样技术(synthetic minority over sampling technique,SMOTE)联合托梅克联系对(Tomek link,Tomek)算法(SMOTE-Tomek)对https://www.cjebm.com/article/10.7507/1001-5515.202204021