【项目实战】Python基于MTCNN+FaceNet+SVM进行人脸识别项目实战

376 篇文章 273 订阅

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

1.项目背景

       人脸识别的现代研究始于20世纪60年代末。在近20年,随着计算机性能的不断提高和算法的不断发展,人脸识别有了重大突破,真正进入自动识别阶段。早期的应用主要为刑侦破案,随后应用在手机解锁等安全要求不鳥的场所,现今人脸识别己广泛应用于金融、司法、军队、教育等人类生活的各个领域,并且还在不断地开拓新领域。

       随着近年来深度卷积神经网络被引入人脸识别领域,使得人脸识别效果获得了巨大的提高。基于深度学习的人脸检测方法可W通过网络自动学习人脸面部特征,而且通过网络级联来提高人脸检测效率。该方法的输入为原始图像,不需要大量的前期工作,从而节省了时间和成本。并且相较于传统的机器学习检测方法,基于深度学习的人脸检测方法效果更好。

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

数据详情如下(部分展示):包含五个人的训练样本与验证样本。文件夹名称为人名,可作为数据集的标签。

 上图为五个人的日常图片。

上图为ben_afflek的图片,部分作为展示。

3.数据预处理

3.1 加载和读取数据

关键代码:

用MTCNN检测图像文件中的人脸,转换为指定尺寸,返回人脸图像的numpy矩阵格式。

4.探索性数据分析

4.1.标签样本统计

关键代码如下:

结果输出如下:

5.特征工程

5.1.用FaceNet提取特征

本项目使用FaceNet 预训练模型进行特征提取。

关键代码如下:

输出结果如下:

 训练集特征提取矩阵维度:

5.2.数据集特征标准化

关键代码如下:

输出结果如下:

5.2.数据集标签编码

由于数据集标签为字符模式,无法进行机器学习,所以对标签数据进行编码处理,转化为数字形式。

关键代码如下:

输出结果如下:

6.构建SVM人脸识别模型

主要使用SVM分类算法,用于目标检测。

6.1建立SVM模型

7.模型评估

关键代码:

准确率:

训练集准确率:100.0,验证集准确率:100.0

8.人脸图像随机测试

从验证集随机选取一张人脸图像进行检测识别。

关键代码:

结果如下:

9.结论与展望

综上所述,本文采用MTCNN对人脸图像进行预处理和优化、FaceNet进行特征提取、SVM进行人脸识别,最终证明了我们提出的模型效果良好。准确率达到了100%,可用于日常生活中进行建模预测,以提高价值。

image = Image.open(filename)  # 打开图像文件
image = image.convert('RGB')  # 颜色模式


# 本次机器学习项目实战所需的资料,项目资源如下:

链接:https://pan.baidu.com/s/1Z371Dkx3gjkl152GPCB5PA 
提取码:x16g






image = np.asarray(image)  # 图像转换为numpy矩阵格式
detector = MTCNN()  # 使用默认权重创建MTCNN人脸检测器
results = detector.detect_faces(image)  # 人脸检测
x1, y1, width, height = results[0]['box']  # 第一张脸的 bounding_box
x1, y1 = abs(x1), abs(y1)
x2, y2 = x1 + width, y1 + height
face = image[y1:y2, x1:x2]
image = Image.fromarray(face)
image = image.resize(required_size)  # 大小转换
face_array = np.asarray(image)
  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python是一种高级编程语言,并且非常适合进行人工智能领域的开发。MTCNN (多任务级联卷积神经网络) 是一种用于人脸检测、对齐和识别的深度学习模型。Facenet是一种基于卷积神经网络的人脸识别模型,该模型可以将两张不同的人脸图片转换为同一向量空间中的两个不同点。SVM(Support Vector Machine)是一种监督式学习算法,它的主要目标是将训练集中的不同类别数据分隔开来,以便将来被识别的新的样本能够被正确分类。 在这个项目中,我们使用Python编程语言和上述技术来实现了人脸识别系统。首先,我们使用MTCNN对输入图像进行了人脸检测和对齐,即找到并将人脸图像转换为标准大小,然后使用Facenet来将图像转换为向量表示。 接下来,我们使用支持向量机 (SVM)算法对向量进行分类并预测所属人脸的标签。如果已知标签,则可以将标签与输出进行比对,从而确认识别结果是否正确。 在实际项目中,我们面对的是不同的人脸照片,这些照片具有各种不同的外观和表情。为了提高识别准确性,我们引入了数据增强技术,例如旋转、缩放、剪切等操作,从而增加了机器学习模型的训练数据量。此外,我们还通过t-SNE降维可视化技术来研究不同人脸图像在高维特征空间的不同分布,从而更好地理解人脸识别模型的工作原理。 总的来说,Python基于MTCNNFacenet、SVM等算法进行人脸识别项目实战,是一项非常有挑战性的任务。然而,随着深度学习技术的不断进步,越来越多的人脸识别项目可以得到解决。从这个意义上说,这项任务带给我们的启示是,通过深度学习算法和多种技术手段的结合,我们可以构建更加高效和智能的人脸识别系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖哥真不错

您的鼓励,将是我最大的坚持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值