littlebot
Published on 2025-04-09 / 1 Visits
0

【源码】基于MindSpore框架的LightCNN人脸识别系统

项目简介

本项目是基于MindSpore框架实现的LightCNN人脸识别系统。LightCNN适用于有大量噪声的人脸识别数据集,通过提出Max - Feature - Map (MFM)这一maxout的变体,有效将噪声与有用信息分隔开,实现特征选择。该系统能在包含大量噪声的训练样本中训练轻量级的人脸识别模型,且在多个常见的人脸测试集上达到了state - of - art的效果。

项目的主要特性和功能

  1. 模型架构优势
    • 在CNN每层卷积层引入maxout激活概念得到MFM,通过竞争关系抑制神经元,能分离噪声信号和有用信号,在特征选择上有关键作用。
    • 基于MFM构建,有5个卷积层和4个Network in Network(NIN)层,小卷积核与NIN减少参数、提升性能。
    • 采用预训练模型的semantic bootstrapping方法,提高模型在噪声样本中的稳定性,可检测出错误样本。
  2. 混合精度训练:采用混合精度训练方法,利用单精度和半精度数据提高深度学习神经网络的训练速度,同时保持单精度训练所能达到的网络精度,减少内存使用,支持在特定硬件上训练更大模型或实现更大批次训练。
  3. 多场景评估:可在LFW人脸数据集的6,000 pairs和BLUFR protocols场景下评估模型性能,给出如100% - EER、TPR@RAR = 1%等多项评估指标。

安装使用步骤

环境准备

  1. 准备Ascend处理器搭建硬件环境。
  2. 安装MindSpore框架。
  3. 安装requirements.txt中的python包。
  4. 生成config json文件用于8卡训练: bash cd src/ python3 get_multicards_json.py 10.111.*.* 详细配置方法参照官网教程

数据集准备

  1. 下载训练集(微软人脸识别数据库MS - Celeb - 1M)和测试集(LFW人脸数据集)。
  2. 将下载的训练集(tsv文件)转为图片集: bash bash scripts/convert.sh --file_name FILE_PATH --output_path OUTPUT_PATH
  3. 数据集结构应如下: 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 # 清洗后的训练图片列表

训练

  1. 修改配置文件src/config.py,确保数据集路径正确。
  2. 单卡训练: bash cd LightCNN/ sh scripts/train_standalone.sh DEVICE_ID
  3. 多卡训练: 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】