基于 Multi-Task CNN 和 facenet 模型的人脸识别

前言

人脸识别技术已经应用到了生活的方方面面,刷脸进门、刷脸支付等。本文介绍一种简单的基于 MTCNNfacenet 的人脸识别实现。让初学者有个大致的体感,人脸识别是怎么做的。

框架

训练流程:

对训练集中已标注好人物名称 (label) 的图片:

  1. 使用 MTCNN 提取图片中的人脸
  2. 使用 facenet 模型编码图片生成 128 维的 embedding 特征向量 (features)
  3. 使用 SVM(Support Vector Machine) 对所有 features 和对应的 label 做分类,得到训练模型。

识别流程:

对要识别的目标图片,和训练图片一样提取出 features 向量,使用训练过程得到的模型做分类。

实现

可以下载 face-recognition-mtcnn 源代码 直接使用。

一、环境安装

# tensorflow
pip install tensorflow
# mtcnn
pip install mtcnn
# PIL
pip install Pillow
# numpy
pip install numpy
# matplotlib
pip install matplotlib

二、准备数据

下载 5-celebrity-faces-dataset 数据集,其中包含 5 个人脸的训练和验证数据。当然这里你也可以自己搜集数据。数据集的目录格式:

  • dataset-name
    • train
      • person1
        • xxx.jpg
        • xxx.jpg
      • person2
      • personM
    • val
      • person1
      • person2
      • personM

下载已训练好的 facenet 模型 facenet_keras.h5
将上述资源放在工程 res 目录中。

三、代码实现

人脸提取

将测试集和训练集中的图片进行处理,提取人脸图片,用于作为后续特征提取的输入。
preprocess.py

  1. 从单个图片文件中提取人脸图片
def extract_face
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值