LightCNN
LightCNN 是一个用于深度人脸表征的轻量级卷积神经网络,特别适用于处理带有噪声标签的人脸识别任务。它通过简化网络结构,在保证高识别准确率的同时显著降低了计算复杂度和模型参数量,使得模型更易于部署在资源受限的设备上。
LightCNN 解决了传统人脸识别模型在面对噪声标签数据时性能下降的问题,并且在多个公开数据集(如 LFW、MegaFace)上取得了优异的识别效果,例如在 LFW 数据集上实现了高达 99.43% 的识别准确率。
该工具适合研究人员和开发者使用,尤其是那些希望在实际场景中应用轻量级人脸识别模型的人。其独特的技术亮点包括对网络结构的精简设计、针对噪声标签的鲁棒训练方法以及高效的训练策略,使其在保持高性能的同时具备良好的泛化能力。此外,项目提供了 PyTorch 实现,方便用户进行二次开发和实验验证。
使用场景
某金融科技公司正在开发一款基于人脸识别的智能客服系统,用于在银行网点中快速验证客户身份,以提升服务效率和安全性。该系统需要在复杂光照和不同角度下准确识别用户面部,并且对训练数据中的噪声标签具有较强的鲁棒性。
没有 LightCNN 时
- 训练模型时,由于数据集中存在大量噪声标签,导致模型在验证集上的识别准确率较低,误识率较高。
- 模型结构较为复杂,训练时间长,资源消耗大,难以在有限的硬件条件下部署。
- 在实际应用中,面对不同角度、光照条件下的图像,模型泛化能力差,影响用户体验。
- 缺乏针对小样本或低质量数据的优化策略,导致模型在实际场景中表现不稳定。
- 需要依赖昂贵的商业人脸识别解决方案,增加了开发成本和维护难度。
使用 LightCNN 后
- LightCNN 的轻量化设计和对噪声标签的鲁棒性显著提升了模型在低质量数据下的识别准确率,降低了误识率。
- 简洁的网络结构减少了训练时间和计算资源消耗,使得模型能够在普通服务器上高效运行。
- 模型在多种光照和角度条件下表现出良好的泛化能力,提高了实际使用中的识别稳定性。
- 提供了针对小样本训练的优化方法,使模型在数据量有限的情况下仍能保持较高的识别性能。
- 基于开源实现,企业可以灵活定制和部署,大幅降低开发和维护成本。
LightCNN 通过其高效的网络结构和对噪声标签的鲁棒处理,显著提升了金融场景下人脸识别系统的准确性和实用性。
运行环境要求
- Linux
- macOS
需要 NVIDIA GPU,显存 8GB+,CUDA 11.7+
16GB+

快速开始
用于深度人脸识别的轻量级卷积神经网络,基于 PyTorch
这是由吴翔、何然、孙振安和谭铁牛撰写的论文《一种适用于带噪声标签的深度人脸表征的轻量级卷积神经网络》[1]在 PyTorch [2] 上的实现。官方原始的 Caffe 代码可在此处找到:https://github.com/AlfredXiangWu/face_verification_experiment。
目录
更新
- 2022年2月9日
发布了 Light CNN v4 预训练模型。 - 2018年1月17日
发布了 Light CNN-29 v2 模型及训练代码。在 LFW 上的“100% - EER”达到 99.43%。 在 MegaFace 的第1组上,排名1准确率达到了 76.021%,TPR@FAR=10^-6 时为 89.740%。 - 2017年9月12日
发布了 Light CNN-29 模型及训练代码。在 LFW 上的“100% - EER”达到 99.40%。 在 MegaFace 的第1组上,排名1准确率达到了 72.704%,TPR@FAR=10^-6 时为 85.891%。 - 2017年7月12日
发布了 Light CNN-9 模型及训练代码。在 LFW 上的“100% - EER”达到 98.70%。 在 MegaFace 的第1组上,排名1准确率达到了 65.782%,TPR@FAR=10^-6 时为 76.288%。 - 2017年7月4日
仓库搭建完成。
安装
- 按照官网说明安装 pytorch。
- 克隆本仓库。
- 注意:目前我们仅支持 Python 2.7 运行。
数据集
- 下载人脸数据集,如 CASIA-WebFace、VGG-Face 和 MS-Celeb-1M。
- MS-Celeb-1M 的干净列表已上传:百度网盘,Google Drive。
- 所有人脸图像均转换为灰度图像,并根据面部特征点归一化至 144x144。
- 根据五个面部关键点,我们不仅将双眼水平旋转,还调整了眼中心与嘴中心之间的距离(ec_mc_y)以及眼中心的纵坐标(ec_y)。
- 对齐后的 LFW 图像已上传至 百度网盘。
| 数据集 | 尺寸 | ec_mc_y | ec_y |
|---|---|---|---|
| 训练集 | 144x144 | 48 | 48 |
| 测试集 | 128x128 | 48 | 40 |
训练
- 使用 train 脚本训练 Light CNN 时,只需将
train.py中列出的参数作为标志指定,或手动修改即可。
python train.py --root_path=/path/to/your/datasets/ \
--train_list=/path/to/your/train/list.txt \
--val_list=/path/to/your/val/list.txt \
--save_path=/path/to/your/save/path/ \
--model="LightCNN-9/LightCNN-29" --num_classes=n
- 提示:
- 训练集和验证集的列表格式遵循 Caffe 标准。数据加载器的详细信息见
load_imglist.py。或者您也可以使用torchvision.datasets.ImageFolder来加载您的数据集。 num_classes表示您的训练数据集中身份的数量。- 使用 PyTorch 训练时,可以设置比 Caffe 更大的学习率,且 PyTorch 在 Light CNN 上的收敛速度通常快于 Caffe。
- 我们会增大 fc2 参数的学习率,这可能会带来更好的性能。如果在您自己的数据集上训练时出现崩溃,可以适当降低学习率。
- 我们对带有动量的 SGD 实现进行了修改,因为官方的 PyTorch 实现与 Sutskever 等人的实现有所不同。具体细节请参见 此处。
- LightCNN-29v2 的训练数据集为 CASIA-WebFace 和 MS-Celeb-1M,因此
num_classes为 80013。
- 训练集和验证集的列表格式遵循 Caffe 标准。数据加载器的详细信息见
评估
- 评估已训练的网络:
python extract_features.py --resume=/path/to/your/model \
--root_path=/path/to/your/datasets/ \
--img_list=/path/to/your/list.txt \
--save_path=/path/to/your/save/path/ \
--model="LightCNN-9/LightCNN-29/LightCNN-29v2"\
--num_classes=n (79077 for LightCNN-9/LightCNN-29, 80013 for LightCNN-29v2)
- 您可以使用
vlfeat或sklearn对特征进行 ROC 评估,从而获得测试数据集的EER和TPR@FPR。 - LightCNN-9 的模型已发布在 Google Drive 上。
- 请注意,发布的模型包含整个 Light CNN 模块的状态及优化器状态。加载模型的详细信息可在
train.py中找到。
- 请注意,发布的模型包含整个 Light CNN 模块的状态及优化器状态。加载模型的详细信息可在
- LightCNN-29 的模型已发布在 Google Drive 上。
- LightCNN-29 v2 的模型已发布在 Google Drive 上。
- LightCNN-9 的 lfw 和 megaface 特征已发布。
- LightCNN v4 的模型已发布在 Google Drive 上。
- LightCNN v4 的详细结构见 light_cnn_v4.py。
- 输入为对齐后的 128*128 BGR 人脸图像。
- 输入像素值按均值 ([0.0, 0.0, 0.0]) 和标准差 ([255.0, 255.0, 255.0]) 进行归一化。
性能
Light CNN 在 LFW 6,000 对上的表现如下:
| 模型 | 100% - EER | TPR@FAR=1% | TPR@FAR=0.1% | TPR@FAR=0 |
|---|---|---|---|---|
| LightCNN-9 | 98.70% | 98.47% | 95.13% | 89.53% |
| LightCNN-29 | 99.40% | 99.43% | 98.67% | 95.70% |
| LightCNN-29v2 | 99.43% | 99.53% | 99.30% | 96.77% |
| LightCNN v4 | 99.67% | 99.67% | 99.57% | 99.27% |
Light CNN 在 lfw BLUFR 协议 上的表现如下:
| 模型 | VR@FAR=0.1% | DIR@FAR=1% |
|---|---|---|
| LightCNN-9 | 96.80% | 83.06% |
| LightCNN-29 | 98.95% | 91.33% |
| LightCNN-29v2 | 99.41% | 94.43% |
Light CNN 在 MegaFace 上的表现如下:
| 模型 | 排名1 | TPR@FAR=1e-6 |
|---|---|---|
| LightCNN-9 | 65.782% | 76.288% |
| LightCNN-29 | 72.704% | 85.891% |
| LightCNN-29v2 | 76.021% | 89.740% |
引用
如果您使用我们的模型,请引用以下论文:
@article{wu2018light,
title={A light CNN for deep face representation with noisy labels},
author={Wu, Xiang and He, Ran and Sun, Zhenan and Tan, Tieniu},
journal={IEEE Transactions on Information Forensics and Security},
volume={13},
number={11},
pages={2884--2896},
year={2018},
publisher={IEEE}
}
参考文献
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。