基于MXNET实现的年龄性别识别
年龄性别识别,基于 insightface 功能模块开发的,支持多张人脸同时检测和识别。
年龄性别识别,基于 insightface 功能模块开发的,支持多张人脸同时检测和识别。
MTCNN,Multi-task convolutional neural network(多任务卷积神经网络),将人脸区域检测与人脸关键点检测放在了一起,总体可分为 P-Net、R-Net、和 O-Net 三层网络结构。它是 2016 年中国科学院深圳研究院提出的用于人脸检测任务的多任务神经网络模型,该模型主要采用了三个级联的网络,采用候选框加分类器的思想,进行快速高效的人脸检测。这三个级联的网络分别是快速生成候选窗口的 P-Net、进行高精度候选窗口过滤选择的 R-Net 和生成最终边界框与人脸关键点的 O-Net。和很多处理图像问题的卷积神经网络模型,该模型也用到了图像金字塔、边框回归、非最大值抑制等技术。
在数据预处理方便,本项目主要是将音频执行梅尔频率倒谱系数(MFCCs)处理,然后在使用出来的数据进行训练,在读取音频时,使用 librosa.load(wav_path, sr=16000)
函数读取音频文件,再使用 librosa.feature.mfcc()
执行数据处理。MFCC 全称梅尔频率倒谱系数。梅尔频率是基于人耳听觉特性提出来的, 它与 Hz 频率成非线性对应关系。梅尔频率倒谱系数(MFCC)则是利用它们之间的这种关系,计算得到的 Hz 频谱特征,主要计算方式分别是预加重,分帧,加窗,快速傅里叶变换(FFT),梅尔滤波器组,离散余弦变换(DCT),最后提取语音数据特征和降低运算维度。本项目使用的全部音频的采样率都是 16000Hz,如果其他采样率的音频都需要转为 16000Hz,create_manifest.py
程序也提供了把音频转为 16000Hz。
在这个任务是对坐标进行回归,使用均方误差(Mean Square error )损失函数 paddle.nn.MSELoss()
来做计算,飞桨 2.0 中,在 nn 下将损失函数封装成可调用类。这里使用 paddle.Model 相关的 API 直接进行训练,只需要定义好数据集、网络模型和损失函数即可。
使用模型代码进行 Model 实例生成,使用 prepare 接口定义优化器、损失函数和评价指标等信息,用于后续训练使用。在所有初步配置完成后,调用 fit 接口开启训练执行过程,调用 fit 时只需要将前面定义好的训练数据集、测试数据集、训练轮次(Epoch)和批次大小(batch_size)配置好即可。
手写数字的 MNIST 数据集,包含 60,000 个用于训练的示例和 10,000 个用于测试的示例。这些数字已经过尺寸标准化并位于图像中心,图像是固定大小(28x28 像素),其值为 0 到 1。该数据集的官方地址为:http://yann.lecun.com/exdb/mnist 。
本案例将会使用飞桨提供的 API 完成数据集的下载并为后续的训练任务准备好数据迭代器。cifar10 数据集由 60000 张大小为 32 * 32 的彩色图片组成,其中有 50000 张图片组成了训练集,另外 10000 张图片组成了测试集。这些图片分为 10 个类别,将训练一个模型能够把图片进行正确的分类。
然后开始编写人脸识别和人脸注册工具类,使用 insightface.app.FaceAnalysis()
可以获取模型对象,这里包含了三个模型,首先是人脸检测模型,然后是人脸特征提取模型,和最后的性别年龄识别模型。使用 model.prepare()
可以配置 ctx_id
指定使用哪一块 GPU,如果是负数则是使用 CPU 执行预测,nms
配置的是人脸检测的阈值。load_faces()
函数是加载人脸库中的人脸,用于之后的人脸识别对比。
循环神经网络(RNN) 是一类神经网络,其中节点之间的连接形成沿着时间序列的有向图的。这使其能够表现出时间动态行为,使其非常适合时间序列分析,语音识别,语法学习,文字构成等。
Python 是一种非常通用的编程语言,并且由于它的社区和库,您几乎可以做任何您想做的事情,尽管有时您不应该这样做。没有一种语言可以全部统治它们,它们都有优点和缺点,Python 也不例外。
在开始对图像应用霍夫变换之前,我们需要了解霍夫空间是什么,我们将通过示例的方式来学习。
如果您是那种希望尽快入门的男孩(或女孩),则可以跳过本节,直接进入代码。但是为了更好地了解 face-api.js 中用于实现人脸识别的方法,我强烈建议您继续学习,因为我经常被问到这一点。
为简单起见,我们实际上要实现的目标是,识别出具有其面部图像的人,例如 输入图像。我们这样做的方法是为我们要识别的每个人提供一张(或多张)图像,并标上人名,例如参考数据。现在我们将输入图像与参考数据进行比较,找到最相似参考图片。如果两个图像足够相似,我们将输出人名,否则我们输出 '未知'。
听起来像是个计划!但是,仍然存在两个问题。首先,如果我们有一个显示多个人的图像并且我们想要识别所有这些人怎么办?其次,我们需要能够为两个面部图像获得这种相似性度量,以便对其进行比较...
SSD,全称 Single Shot MultiBox Detector,是 Wei Liu 在 ECCV 2016 上提出的一种目标检测算法,截至目前是主要的检测框架之一,相比 Faster RCNN 有明显的速度优势,相比 YOLO V1 又有明显的 mAP 优势。本开源是基于 PaddlePaddle 实现的 SSD,包括 MobileNetSSD,MobileNetV2SSD,VGGSSD,ResNetSSD。使用的是 VOC 格式数据集,同时提供了预训练模型和 VOC 数据的预测模型。
在上一章我们介绍了《双目摄像头测量距离》,在这个基础上,我们来了解如何在 Android 上使用双目测距算法。通过本教程,你不仅掌握如何在 Android 中使用 SBM 等双目测距算法,顺便也了解到如何在 Android Studio 配置 OpenCV,通过使用 OpenCV 可以在 Android 中实现很多图像处理的功能。
在计算机视觉中,可以通过双目摄像头实现,常用的有 BM 算法和 SGBM 算法等,双目测距跟激光不同,双目测距不需要激光光源,是人眼安全的,只需要摄像头,成本非常底,也用于应用到大多数的项目中。本章我们就来介绍如何使用双目摄像头和 SGBM 算法实现距离测量。
本章介绍如何使用 PaddlePaddle 实现简单的声纹识别模型,首先你需要熟悉音频分类,没有了解的可以查看这篇文章《基于 PaddlePaddle 实现声音分类》
。基于这个知识基础之上,我们训练一个声纹识别模型,通过这个模型我们可以识别说话的人是谁,可以应用在一些需要音频验证的项目。
本章介绍如何使用 Tensorflow 实现简单的声纹识别模型,首先你需要熟悉音频分类,没有了解的可以查看这篇文章《基于 Tensorflow 实现声音分类》。基于这个知识基础之上,我们训练一个声纹识别模型,通过这个模型我们可以识别说话的人是谁,可以应用在一些需要音频验证的项目。
本章我们来介绍如何使用 PaddelPaddle 训练一个区分不同音频的分类模型,例如你有这样一个需求,需要根据不同的鸟叫声识别是什么种类的鸟,这时你就可以使用这个方法来实现你的需求了。
本章我们来介绍如何使用 Tensorflow 训练一个区分不同音频的分类模型,例如你有这样一个需求,需要根据不同的鸟叫声识别是什么种类的鸟,这时你就可以使用这个方法来实现你的需求了。话不多说,来干。
目前大部分的手机都有语音助手,例如小米手机的小爱同学,VIVO 的小 V 等等,通过智能助手我们可以快速询一些资讯或者操作手机,例如询问天气,发送微信给你的好友等等。这篇文章就来介绍如何使用 AIUI 快速搭建类似这样的智能助手。