# MobileFaceNet
本项目参考了[ArcFace](https://arxiv.org/abs/1801.07698)的损失函数结合MobileNet,意在开发一个模型较小,但识别准确率较高且推理速度快的一种人脸识别项目,该项目训练数据使用emore数据集,一共有85742个人,共5822653张图片,使用lfw-align-128数据集作为测试数据。
# 数据集准备
本项目提供了标注文件,存放在`dataset`目录下,解压即可。另外需要下载下面这两个数据集,下载完解压到`dataset`目录下。
- emore数据集[百度网盘](https://pan.baidu.com/s/1eXohwNBHbbKXh5KHyItVhQ)
- lfw-align-128下载地址:[百度网盘](https://pan.baidu.com/s/1tFEX0yjUq3srop378Z1WMA) 提取码:b2ec
然后执行下面命令,将提取人脸图片到`dataset/images`,并把整个数据集打包为二进制文件,这样可以大幅度的提高训练时数据的读取速度。
```shell
python create_dataset.py
```
# 训练
执行`train.py`即可,更多训练参数请查看代码。
```shell
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`即可,更多训练参数请查看代码。
```shell
python eval.py
```
# 预测
本项目已经不教提供了模预测,模型文件可以直接用于预测。在执行预测之前,先要在face_db目录下存放人脸图片,每张图片只包含一个人脸,并以该人脸的名称命名,这建立一个人脸库。之后的识别都会跟这些图片对比,找出匹配成功的人脸。这里使用的人脸检测是MTCNN模型,这个模型具有速度快,模型小的特点,源码地址:[Pytorch-MTCNN](https://github.com/yeyupiaoling/Pytorch-MTCNN)
如果是通过图片路径预测的,请执行下面命令。
```shell
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
```
![识别结果](./dataset/result.jpg)
如果是通过相机预测的,请执行下面命令。
```shell
python infer_camera.py --camera_id=0
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Pytorch实现的人脸识别明细MobileFaceNet模型,在预测使用MTCNN检测人脸,然后使用MobileFaceNet模型识别。.zip 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目源码系统完整,内容都是经过专业老师审定过的,基本能够满足学习、使用参考需求,如果有需要的话可以放心下载使用。
资源推荐
资源详情
资源评论
收起资源包目录
Pytorch实现的人脸识别明细MobileFaceNet模型,在预测使用MTCNN检测人脸,然后使用MobileFaceNet模型识别。.zip (27个子文件)
Pytorch-MobileFaceNet-master
eval.py 1KB
LICENSE 11KB
detection
utils.py 5KB
__init__.py 0B
face_detect.py 10KB
save_model
mobilefacenet.pth 4.81MB
mtcnn
ONet.pth 1.5MB
RNet.pth 414KB
PNet.pth 45KB
infer.py 6KB
utils
utils.py 4KB
__init__.py 0B
reader.py 4KB
dataset
test.jpg 18KB
lfw_test.zip 81KB
infer_camera.py 6KB
requirements.txt 152B
face_db
杨幂.jpg 53KB
迪丽热巴.jpg 19KB
models
__init__.py 0B
mobilefacenet.py 4KB
arcmargin.py 2KB
.gitignore 123B
simfang.ttf 10.09MB
train.py 7KB
create_dataset.py 3KB
README.md 4KB
共 27 条
- 1
资源评论
LeapMay
- 粉丝: 2w+
- 资源: 2305
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功