前言

本项目参考了ArcFace的损失函数结合MobileNet,意在开发一个模型较小,但识别准确率较高且推理速度快的一种人脸识别项目,该项目训练数据使用emore数据集,一共有85742个人,共5822653张图片,使用lfw-align-128数据集作为测试数据。

源码地址:https://github.com/yeyupiaoling/Pytorch-MobileFaceNet

数据集准备

本项目提供了标注文件,存放在dataset目录下,解压即可。另外需要下载下面这两个数据集,下载完解压到dataset目录下。

  • emore数据集百度网盘
  • lfw-align-128下载地址:百度网盘 提取码:b2ec

然后执行下面命令,将提取人脸图片到dataset/images,并把整个数据集打包为二进制文件,这样可以大幅度的提高训练时数据的读取速度。

python create_dataset.py

训练

执行train.py即可,更多训练参数请查看代码。

python train.py

训练输出如下:

[2021-11-03 15:18:28.813591] Train epoch 9, batch: 6100/90979, loss: 1.215695, accuracy: 0.859375, lr: 0.000107, eta: 5 days, 5:28:26
[2021-11-03 15:18:37.044353] Train epoch 9, batch: 6200/90979, loss: 0.908210, accuracy: 0.859375, lr: 0.000107, eta: 5 days, 6:35:02
[2021-11-03 15:18:45.229030] Train epoch 9, batch: 6300/90979, loss: 0.964092, accuracy: 0.875000, lr: 0.000107, eta: 5 days, 9:17:21
[2021-11-03 15:18:53.449567] Train epoch 9, batch: 6400/90979, loss: 1.208947, accuracy: 0.828125, lr: 0.000107, eta: 5 days, 12:41:06
[2021-11-03 15:19:01.682437] Train epoch 9, batch: 6500/90979, loss: 1.081449, accuracy: 0.875000, lr: 0.000107, eta: 5 days, 10:29:44
[2021-11-03 15:19:09.895995] Train epoch 9, batch: 6600/90979, loss: 1.277803, accuracy: 0.828125, lr: 0.000107, eta: 5 days, 12:29:05
[2021-11-03 15:19:18.086872] Train epoch 9, batch: 6700/90979, loss: 1.308692, accuracy: 0.828125, lr: 0.000107, eta: 5 days, 7:23:03
[2021-11-03 15:19:26.306897] Train epoch 9, batch: 6800/90979, loss: 1.474561, accuracy: 0.781250, lr: 0.000107, eta: 5 days, 8:20:23
[2021-11-03 15:19:34.528685] Train epoch 9, batch: 6900/90979, loss: 1.295028, accuracy: 0.812500, lr: 0.000107, eta: 5 days, 5:54:56
[2021-11-03 15:19:42.736712] Train epoch 9, batch: 7000/90979, loss: 1.474828, accuracy: 0.812500, lr: 0.000107, eta: 5 days, 8:32:33

评估

执行eval.py即可,更多训练参数请查看代码。

python eval.py

预测

本项目已经不教提供了模预测,模型文件可以直接用于预测。在执行预测之前,先要在face_db目录下存放人脸图片,每张图片只包含一个人脸,并以该人脸的名称命名,这建立一个人脸库。之后的识别都会跟这些图片对比,找出匹配成功的人脸。。这里使用的人脸检测是MTCNN模型,这个模型具有速度快,模型小的特点,源码地址:Pytorch-MTCNN

如果是通过图片路径预测的,请执行下面命令。

python infer.py --image_path=temp/test.jpg

日志输出如下:

人脸检测时间:38ms
人脸识别时间:11ms
人脸对比结果: [('迪丽热巴', 0.7030987), ('杨幂', 0.36442137)]
人脸对比结果: [('杨幂', 0.63616204), ('迪丽热巴', 0.3101096)]
预测的人脸位置: [[272, 67, 328, 118, 1], [156, 80, 215, 134, 1]]
识别的人脸名称: ['迪丽热巴', '杨幂']
总识别时间:82ms

如果是通过相机预测的,请执行下面命令。

python infer_camera.py --camera_id=0

基于Pytorch实现的快速人脸识别模型相关推荐

  1. 基于Pytorch实现的声纹识别模型

    前言 本章介绍如何使用Pytorch实现简单的声纹识别模型,本项目参考了人脸识别项目的做法Pytorch-MobileFaceNet ,使用了ArcFace Loss,ArcFace loss:Add ...

  2. 基于LDA+SVM实现人脸识别模型

    基于LDA+SVM实现人脸识别模型 描述 人脸识别(图像识别)是机器学习领域十经典的应用,在本质上,人脸识别属于监督学习中的分类问题.前面章节中我们已经学习了支持向量机(SVM),该算法在图像分类领域 ...

  3. 【项目实战课】基于Pytorch的StyleGAN v1人脸图像生成实战

    欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的StyleGAN v1人脸图像生成实战>. 所谓项目实战课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题, ...

  4. 基于SeetaFace+VS2017+Qt的人脸识别

    1 目的 目前计算机视觉技术已经比较成熟,相关的开源项目与算法很多,可以将这些开源算法进行整合,进而做成一个小项目,以供日后学习与研究.本实验主要将利用人脸识别开源项目SeetaFace,结合使用Op ...

  5. 基于深度卷积神经网络进行人脸识别的原理是什么?

    原文:https://www.zhihu.com/question/60759296 基于深度卷积神经网络进行人脸识别的原理是什么? 这里的人脸识别包括但不限于:人脸检测,人脸对齐,身份验证识别,和表 ...

  6. python读取视频流做人脸识别_基于OpenCV和Keras实现人脸识别系列——二、使用OpenCV通过摄像头捕获实时视频并探测人脸、准备人脸数据...

    基于OpenCV和Keras实现人脸识别系列手记: 项目完整代码参见Github仓库. 本篇是上面这一系列手记的第二篇. 在Opencv初接触,图片的基本操作这篇手记中,我介绍了一些图片的基本操作,而 ...

  7. ICCV 2019 | 爱奇艺提出半监督损失函数,利用无标签数据优化人脸识别模型

    点击我爱计算机视觉标星,更快获取CVML新技术 论文发表于ICCV 2019 作者 | 爱奇艺技术产品团队 编辑 | 唐里 论文标题:Unknown Identity Rejection Loss: ...

  8. 【人脸识别】VGGFace--基于VGGNet的人脸识别模型

    简介 VGGFace是基于VGGNet训练自己的数据集得到的人脸识别模型.主要有以下特点: ● 构建最少的人为干预大规模人脸数据集. ● 非端到端:先使用Softmax在VGGDataset上预训练, ...

  9. 使用Python+PCA+SVM算法实现人脸识别模型

    在本文中,我们将使用主成分分析和支持向量机来建立人脸识别模型. 首先,让我们了解PCA和SVM是什么: 主成分分析: 主成分分析(PCA)是一种机器学习算法,广泛应用于探索性数据分析和建立预测模型,它 ...

最新文章

  1. 算法设计与分析 搜索第k元
  2. 点到直线的投影公式_12分高考答题必刷题型,“空间向量分析点到线的距离问题”...
  3. saltstack与ansible对比
  4. 使用 Tye 辅助开发 k8s 应用竟如此简单(三)
  5. html5中音乐播放器怎么写,打造属于自己的音乐播放器 HTML5之audio标签
  6. vscode控制字符引起的问题以及解决思路
  7. 车牌识别的matlab程序(程序_讲解_模板),车牌识别的matlab程序(程序讲解模板)
  8. Hadoop HIVE 关联查询
  9. 集合类型及其操作(复习)
  10. Oracle数据库编程:PL/SQL编程基础
  11. 泛微oa服务器文件,泛微OA根据文档的docid查询文档附件存放的路径
  12. jq 遍历map集合
  13. Windows+WSL+DockerDesktop下安装OpenV2X
  14. 5.4 图层样式面板的实例讲解 [原创Ps教程]
  15. 论文相关-MATHTYPE字体对应
  16. 文本标注工具BRAT的安装与配置
  17. 【周记】腾讯犀牛鸟「云开发」校园技术布道师养成计划
  18. SQL Service数据库上机
  19. 开机动画启动 android 9.0
  20. 如何做提升工作效率能力的PPT课件?

热门文章

  1. 到底什么样的网站才需要办理ICP许可证?
  2. java 格式化时分秒_java整数(秒数)转换为时分秒格式的示例
  3. 1.图灵学院-----阿里/京东/滴滴/美团整理----高频JAVA并发篇
  4. “心若冰清,天塌不惊”,道家文化原文欣赏,你值得收藏研读!
  5. 【Pygame小游戏】这款“打地鼠”小游戏要火了(来来来)
  6. appcrash事件怎么解决?三种方法教你
  7. 卡方独立性检验|卡方拟合性检验
  8. 如何解决error: failed to push some refs to ‘https://gitee.com/
  9. sql查询条件有单引号
  10. php 漏洞_十大PHP安全漏洞