十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何 3 步用 ArcFace-PyTorch 训练出属于自己的 PyTorch 人脸识别模型:完整指南

如何 3 步用 ArcFace-PyTorch 训练出属于自己的 PyTorch 人脸识别模型:完整指南 如何 3 步用 ArcFace-PyTorch 训练出属于自己的 PyTorch 人脸识别模型完整指南【免费下载链接】arcface-pytorch这是一个arcface-pytorch的源码可以用于训练自己的模型。项目地址: https://gitcode.com/gh_mirrors/arc/arcface-pytorchArcFace-PyTorch是一份基于 PyTorch 的人脸识别完整实现核心价值很直接既能用内置预训练权重立刻比对两张人脸的相似度也能按自己的数据集从头训练人脸识别模型还能在 LFW 基准上评估准确率。对于想自己动手练人脸模型的朋友这套代码几乎省去了全部工程搭建工作。先说结论ArcFace 损失凭什么更准人脸识别模型好不好关键看它把人这件事学得够不够清楚。普通做法训练出来的特征同一个人的照片容易挤成一团不同人之间也分得不彻底——比对时就容易误判。ArcFace 损失函数的做法可以打个比方先给所有人脸特征和分类权重都归一化相当于站成一列整齐的队伍然后再做两件事——把同一个人的特征在角度上进一步挤紧类内紧凑把不同人的特征在角度上强制推远拉开一个额外的角边距类间分离。结果就是本人的特征聚得更紧跟别人的分得更开识别准确率自然上去了。这也是它在多个公开数据集上能冲到领先位置的原因。在 LFW 测试集上的实测数据训练集均为 CASIA-WebFace输入 112×112主干网络准确率LFW 验证指标arcface_mobilenet99.11%0.95033 ± 0.02152 FAR0.00133arcface_iresnet5098.93%0.93100 ± 0.01422 FAR0.00133arcface_mobilefacenet98.78%0.91100 ± 0.01745 FAR0.00100小贴士mobilenet 版本准确率偏高是因为用了主干的预训练权重官方仍在继续调参。三个方向的差距不算大选型时更该看你的部署环境吃不吃得动大模型。内置能力清单不止一个模型这份代码不是只有一个网的演示工程可配置项给得很足主干网络随你挑mobilefacenet、mobilenetv1以及iresnet18 / 34 / 50 / 100 / 200轻量到重型都有得选学习率策略支持 step、cos 两种下降方式还能根据 batch_size 自动适配学习率优化器adam、sgd 二选一训练工程细节断点续训、图片裁剪、CPU 降级运行把cuda置为 False 即可。也就是说你不用动几行网络代码光改配置就能跑出不同规格的模型这是它适合二次开发的关键。3 步上手从克隆到比对人脸第 1 步拿到代码git clone https://gitcode.com/gh_mirrors/arc/arcface-pytorch cd arcface-pytorch第 2 步跑一次人脸比对解压后仓库里已自带预训练权重直接运行 predict.py按提示输入两张人脸图片路径即可输出会给出两张脸是否属于同一人的概率。img目录下的1_001.jpg、1_002.jpg就是现成的示例图。第 3 步训练自己的模型数据按每个人一个文件夹组织放在datasets目录下datasets ├── people0 │ ├── 123.jpg │ └── 234.jpg └── people1 ├── 345.jpg └── 456.jpg训练用的 CASIA-WebFace 数据集和评估用的 LFW 数据集可放到根目录官方 README 里提供了网盘下载入口先运行 txt_annotation.py 生成cls_train.txt标签文件运行 train.py 开训——改参数前注意backbone和model_path必须一一对应想量化评估用 eval_LFW.py 跑 LFW 准确率测试。网络结构都在 nets/ 目录里想读懂 ArcFace 损失怎么落地直接翻nets/arcface.py就对了。真实场景这套模型能干什么模型本身只是给一张脸算出一串特征向量但配合检测模块后落地场景就多了安全监控系统抓拍比对确认目标人员身份门禁系统进门刷脸比对通过才开门手机解锁本地比对兼顾速度与隐私社交媒体身份验证确认屏幕后面真的是本人。想让效果稳一点三条经验值得记牢数据质量清晰度、多样性、类别平衡是一切的前提超参数学习率、batch_size、训练轮次按场景微调定期用验证集评估别只盯着训练曲线。进阶玩法和其他开源项目组队人脸识别通常是检测 → 对齐 → 识别一条链。如果你已有现成的人脸检测模型可以把 ArcFace-PyTorch 当纯识别模块接在后面。同类型的生态项目也值得参考InsightFace覆盖面广的深度学习人脸分析库ArcFace 正是其中的明星方案FaceNetGoogle 的人脸识别与聚类经典工作思想一脉相承DlibC 底层的算法库人脸检测、识别都有现成工具。互相借鉴实现思路比自己硬啃论文效率高得多。新手常踩的 6 个坑环境版本项目对应 PyTorch 1.2.0如果你用的是 30 系显卡按官方经验换 PyTorch 1.7.0 CUDA 11.0 的组合权重文件在哪.pth预训练权重要单独放进model_data目录README 里有网盘链接不是开箱就有的断点续训把train.py里的model_path指向logs下已训好的权重即可继续训练记得同步Init_Epoch保证世代连续预训练权重别省随机初始化的特征提取能力很差绝大多数场景都应该带上主干预训练权重再开训mobilenetv1 要特殊对待它没有残差边、收敛慢选它做主干时建议设pretrain True其它 backbone 反而建议Falseloss 值不用纠结它只是看模型收敛与否的参考重点看是否在稳定下降、预测是否真的有效而不是绝对数值。写在最后模型跑通只是起点。真正拉开差距的是你手里的数据和评估习惯多换几个 backbone 对比一下 LFW 分数在真实业务数据上迭代微调并养成每训完一版就跑一次 eval_LFW.py 的习惯。如果还没有人脸检测环节也可以顺手补一个检测模型比如 RetinaFace 这类方案把检测 识别整条链路串起来才算一个完整的人脸识别系统。【免费下载链接】arcface-pytorch这是一个arcface-pytorch的源码可以用于训练自己的模型。项目地址: https://gitcode.com/gh_mirrors/arc/arcface-pytorch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表