项目简介
本项目是基于MindSpore框架实现的LightCNN人脸识别系统。LightCNN适用于有大量噪声的人脸识别数据集,通过提出Max - Feature - Map (MFM)这一maxout的变体,有效将噪声与有用信息分隔开,实现特征选择。该系统能在包含大量噪声的训练样本中训练轻量级的人脸识别模型,且在多个常见的人脸测试集上达到了state - of - art的效果。
项目的主要特性和功能
- 模型架构优势
- 在CNN每层卷积层引入maxout激活概念得到MFM,通过竞争关系抑制神经元,能分离噪声信号和有用信号,在特征选择上有关键作用。
- 基于MFM构建,有5个卷积层和4个Network in Network(NIN)层,小卷积核与NIN减少参数、提升性能。
- 采用预训练模型的semantic bootstrapping方法,提高模型在噪声样本中的稳定性,可检测出错误样本。
- 混合精度训练:采用混合精度训练方法,利用单精度和半精度数据提高深度学习神经网络的训练速度,同时保持单精度训练所能达到的网络精度,减少内存使用,支持在特定硬件上训练更大模型或实现更大批次训练。
- 多场景评估:可在LFW人脸数据集的6,000 pairs和BLUFR protocols场景下评估模型性能,给出如100% - EER、TPR@RAR = 1%等多项评估指标。
安装使用步骤
环境准备
- 准备Ascend处理器搭建硬件环境。
- 安装MindSpore框架。
- 安装
requirements.txt
中的python包。 - 生成config json文件用于8卡训练:
bash cd src/ python3 get_multicards_json.py 10.111.*.*
详细配置方法参照官网教程。
数据集准备
- 下载训练集(微软人脸识别数据库MS - Celeb - 1M)和测试集(LFW人脸数据集)。
- 将下载的训练集(tsv文件)转为图片集:
bash bash scripts/convert.sh --file_name FILE_PATH --output_path OUTPUT_PATH
- 数据集结构应如下:
shell . └──data ├── FaceImageCroppedWithAlignment # 训练数据集 MS - Celeb - 1M │ ├── m.0_0zl │ ├── m.0_0zy │ ├── m.01_06j │ ├── m.0107_f │ ... │ ├── lfw # 测试数据集 LFW │ ├── image │ │ ├── Aaron_Eckhart │ │ ├── Aaron_Guiel │ │ ├── Aaron_Patterson │ │ ├── Aaron_Peirsol │ │ ├── Aaron_Pena │ │ ... │ │ │ ├── image_list_for_blufr.txt # lfw BLUFR protocols 测试图片列表 │ └── image_list_for_lfw.txt # lfw 6,000 pairs 测试图片列表 │ └── MS - Celeb - 1M_clean_list.txt # 清洗后的训练图片列表
训练
- 修改配置文件
src/config.py
,确保数据集路径正确。 - 单卡训练:
bash cd LightCNN/ sh scripts/train_standalone.sh DEVICE_ID
- 多卡训练:
bash cd LightCNN/scripts sh train_distribute.sh hccl.json DEVICE_NUM sh train_distribute_8p.sh hccl.json
评估
bash
cd LightCNN/
sh scripts/eval_lfw.sh DEVICE_ID CKPT_FILE
sh scripts/eval_blufr.sh DEVICE_ID CKPT_FILE
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】