[关闭]
@wujiaju 2019-11-09T05:38:59.000000Z 字数 3431 阅读 1778

基于神经网络的人脸检测和识别

机器学习 人脸识别 人脸检测 pytorch


Language: You can click here to get the version in English.

实验目的

  1. 理解和掌握基于神经网络的人脸检测和人脸识别算法的基础知识。
  2. 理解MTCNN人脸检测的基本流程,并加以实践。
  3. 理解MobilfeFaceNet人脸识别的基本流程,并加以实践

实验数据集介绍

一、MTCNN的所需数据集
1. 训练PNet和RNet两个子网络,将 WiderFace 数据集用于人脸检测和人脸边界框回归。
2. 训练ONet,将 FacePoint 数据集用于人脸特征点回归。

二、MobileFaceNet的所需数据集
1. 训练数据集 LFW,实际上,该数据集常作为测试数据集,而本次仅供教学实验。
2. 测试数据集是学生统一采集的人脸照片,已转换成人脸特征向量的形式保存,仅供模型测试使用,其存放路径是 pretrained_model/mobilefacenet/features_dict/lab_undrgraduate_visible_features.json。

实验环境

anaconda3
pytorch 1.0.0
torchvision
opencv-python
tensorflow

实验步骤

一、获取代码

实验完整代码已给出,可直接下载或是通过git clone命令下载。

git clone https://github.com/wujiaju/ML-04.git

二、实验环境安装
1. 确保本机或是服务器已安装好anaconda3环境;
2. pip或conda安装pytorch 1.0.0 和 torchvision环境;
3. pip或conda安装opencv-python环境。

conda install pytorch
conda install torchvision
pip install opencv-python

三、数据集和测试模型准备
1. 自行将dataset文件夹下后缀为.zip的压缩文件解压到当前目录,作为训练数据集和测试数据集。
2. mtcnn的测试模型已存放在mtcnn_experiment/checkpoints文件夹中。
2. 本科生的人脸特征向量作为MobileFaceNet的测试数据集,已存放在pretrained_model/mobilefacenet/features_dict/lab_udergraduete_visible_features.json文件中。
3. mobilefacenet的测试模型存放在pretrained_model/mobilefacenet/mobilefacenet.pth文件中。

注意: 在模型训练和测试过程中,检查训练数据集和测试模型路径是否与你本机或服务器存放路径一致,若不一致,则需修改相关文件代码,实验所提供代码统一使用相对路径。

四、训练和测试MTCNN人脸检测神经网络

  1. 测试实验已给定mtcnn模型
    1.1 图片测试:
    使用训练好的网络模型在给定的测试图片(位于mtcnn_experiment/data/test_images/目录的测试图片),运行以下命令,即可在mtcnn_experiment/data/test_image_result/目录下查看检测结果。

    1. cd mtcnn_experiment
    2. python test_image.py

    1.2 视频测试:
    使用训练好的模型在给定的测试视频 (位于mtcnn_experiment/data/test_video/目录下的测试视频),运行以下命令,即会弹出窗口显示人脸检测结果。

    1. cd mtcnn_experiment
    2. python test_video.py
  2. 训练PNet网络 (选做)

    1. cd mtcnn_experiment
    2. python preprocessing/gen_pnet_data.py
    3. python preprocessing/assemble_pnet_imglist.py
    4. python training/pnet/train.py
  3. 训练RNet网络 (选做)

    1. cd mtcnn_experiment
    2. python preprocessing/gen_rnet_data.py
    3. python preprocessing/assemble_rnet_imglist.py
    4. python training/rnet/train.py
  4. 训练ONet网络 (选做)

    1. cd mtcnn_experiment
    2. python preprocessing/gen_landmark_48.py
    3. python preprocessing/gen_onet_data.py
    4. python preprocessing/assemble_onet_imglist.py
    5. python training/onet/train.py

    提示: PNet,RNet,ONet三个网络训练完成,即可在mtcnn_experiment/results/目录下得到三个训练好的网络模型。

  5. 测试自己训练的模型 (选做)

    在给定的测试数据集(位于mtcnn_experiment/data/test_images/目录下,共64张测试图片)简单测试自己训练好的网络模型,运行以下命令,即可在mtcnn_experiment/data/you_result/目录下查看检测结果。

    1. cd mtcnn_experiment/
    2. python test_youModel_images.py

    注意: 检查test_youModel_images.py中的模型路径是否与你训练好的模型路径一致,若不一致,则修改路径。整理实验结果并完成实验报告(实验报告模板将包含在示例仓库中)。

五、训练和测试MobileFaceNet人脸识别神经网络

  1. 训练MobileFaceNet神经网络 (选做)

    1. cd mobilefacenet_experiment
    2. python lfw_train.py

    注意: 训练过程中保存的模型全部存放在pretrained_model/mofacenet/checkpoint/{datetime}/目录下。

  2. 测试实验已给定MobileFaceNet模型
    2.1 图片测试:
    在mobilefacenet_experiment/img文件夹中放入两张人脸照片,分别命名为1.jpg, 2.jpg。运行以下命令,首先进行人脸检测并弹出人脸窗口,然后计算两者相似度,在终端看到输出结果。

    1. cd mobilefacenet_experiment
    2. python test_img.py

    2.2 视频测试:
    在mobilefacenet_experiment/video文件夹中存放自己的人脸视频,人脸距离摄像头一米左右,同时减少光线的影响。如果实验之前没有采集你的人脸,则需要在mobilefacenet_experiment/video/your_face_img文件夹下存在自己的10-20张人脸照片进行人脸识别,效果会有差别。修改test_video.py文件中video_src变量为你的视频名字,运行以下命令,即会弹出窗口显示识别结果。

    1. cd mobilefacenet_experiment
    2. python test_video.py

实验代码及报告提交

提交内容

提交时间

评分标准

评分项 占比 说明
出勤 40% 特殊情况可向学院请假,请假条交给助教
代码有效 30% 代码是否正确
实验报告 30% 是否认真按照实验模板填写

注意事项


有任何的意见或者建议都可以直接向助教反映。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注