MaskInsightface
基于人脸关键区域提取的人脸识别(LFW:99.82%+ CFP_FP:98.50%+ AgeDB30:98.25%+)
Install / Use
/learn @bleakie/MaskInsightfaceREADME
insightface制作自己的数据及其训练
2021.03.03: 更新insightface TensorRT模型,trt模型与原版差距<0.01,参考InsightFace-REST
2020.04.09: 更新基于SSR-Net的性别和年龄预测网络,在私有数据集上gender(98.53), age_mae(3.29),原作者SSR-Net
2019.12.30: 更新MobileFaceNet的训练模型,参考> ZQCNN ,人脸检测+landmark可参考CenterMulti,效果更好,而且支持landmark的confidence
2019.12.10: 更新VarGFaceNet的训练模型,参考VarGFaceNet
2019.10.21: 更新人脸检测模型,检测器是基于SSH,相较于原版检测,该版本主要更新了误检
2019.10.01: 公布人脸识别模型,模型基于glint和私有数据训练,在私有数据上拥有0.88的F1-score,insightface原始模型0.56
说明:算法集成insightface:insightface
改进地方:ssh(人脸检测)+prnet(68 landmark 人脸对齐, 3d人脸mask)+insightface
(1)修改人脸检测器(优化后的SSH,误检率更低,对大角度和blur的face进行过滤)
(2)使用68个点的landmark,prnet的对齐效果更准
(3)利用prnet拟合有效区域的人脸位置,抠出背景,以平均人脸像素填充背景,减少噪声影响,会在图片质量较好的情况下提高识别


0.安装
(1)mxnet
(2)tensorflow
1.生成对齐后的数据集
1.1.数据下载
| Data | deepglint | 数据集集合 | insightface | | -------- | -----------|--------------|---------- | | Url | download | download | download |
cd make_rec
1.2.生成,'.lst, .rec, .idx, property'
(1)为了合并数据,可采用generate_lst.sh
(2)property是属性文件,里面内容是类别数和图像大小,例如
1000,112,112 其中1000代表人脸的类别数目,图片格式为112x112(一直都不知道怎么自动生成这个,我是自己写的)
(3)sh generate_lst.sh
1.3.生成测试文件.bin
python gen_valdatasets.py
1.4.生成数据
python3 gen_datasets.py #完成后会output下生成train.lst
2.验证model精度
2.1.在bash
python3 -u ./src/eval/verification.py --gpu 0 --model "./models/glint-mobilenet/model,1" --target 'lfw'
2.2.快捷
sh verification.sh
3.训练
3.1.在bash里面训练
CUDA_VISIBLE_DEVICES='2,3,4,5' python3 -u train.py --network r100 --loss arcface --per-batch-size 64 2>&1 > log.log &
3.2.如果想要合并不同数据集
CUDA_VISIBLE_DEVICES=0 python3 src/data/dataset_merge.py --include 001_data,002_data --output ms1m+vgg --model ../../models/model,1
4.result
4.1 Resnet训练
network backbone: r100 ( output=E, emb_size=512, prelu )
loss function: arcface(m=0.5)
batch-size:256, 4gpu, config.fc7_wd_mult = 10
lr = 0.004, lr_steps [105000, 125000, 150000], default.wd = 0.0005, end with 180001,
then retrain with lr = 0.0004, lr_steps[200000, 300000, 400000], default.wd = 0.00001
| Data | LFW | CFP_FP | AgeDB30 | | -------- | -----------|--------------|---------- | | ACCU(%) | 99.82+ | 98.50+ | 98.25+ |
4.2 MobileFacenet训练
#!/usr/bin/env bash
export CUDA_VISIBLE_DEVICES=0,1,2,3
set MXNET_CUDNN_AUTOTUNE_DEFAULT=0
set MXNET_ENGINE_TYPE=ThreadedEnginePerDevice
set MXNET_CPU_WORKER_NTHREADS=8
# train softmax
#nohup python3 -u train_softmax.py --network y1 --margin-s 32.0 --margin-m 0.1 --ckpt 1 --loss-type 0 --lr-steps 240000,360000,440000 --wd 0.00004 --fc7-wd-mult 10 --per-batch-size 80 --emb-size 256 --version-output GDC --data-dir ../../datasets/glint-shimao-id-zhaohang-output --prefix ../models/y2/mobilefacenet-res4-8-16-4-dim256 --target 'agedb_30,img_ours-retina-5' --max-steps 140002 2>&1 > mobilenet-1.log &
# train arcface
nohup python3 -u train_softmax.py --network y1 --margin-s 64.0 --margin-m 0.5 --ckpt 1 --loss-type 4 --lr-steps 600000,800000,1000000 --wd 0.00004 --fc7-wd-mult 10.0 --per-batch-size 48 --emb-size 256 --version-output GDC --data-dir ../../datasets/glint-shimao-id-zhaohang-output --prefix ../models/y2/y2-4-8-16-4-dim256 --pretrained ../models/y2/mobilefacenet-res4-8-16-4-dim256/mobilefacenet-res4-8-16-4-dim256,62 --target 'agedb_30,img_ours-retina-5' --max-steps 1200002 2>&1 > mobilenet-2.log &
5.预训练模型
5.1. 人脸检测
(1) SSH: 人脸检测模型请参见mxnet-ssh-face-detection(在自有数据集上标定+修改部分训练参数,可在FDDB上取得98.7%)
(2) CenterMulti: 人脸检测+landmark可参考CenterMulti,效果更好,而且支持landmark的confidence
5.2. mask人脸识别预训练模型
模型基于glint和私有数据训练,backbone resnet152,在私有数据上拥有0.88的F1-score,insightface原始模型0.56,因为进行了私有数据的增强训练,在开源测试集上效果一般 google baidu,提取码: enph
5.3. VarGFaceNet预训练模型
使用RetinaFace的5点landmark对齐src/common/face_align_util.py/ARC_FACE(没有使用mask) baidu,提取码: ds3c
5.4. MobileFaceNet预训练模型,使用RetinaFace的5点landmark对齐src/common/face_align_util.py/ARC_FACE(没有使用mask),res4-8-16-4-dim256在个人测试集上效果更好
| Backbone | CFP_FP(%) | AGE_db30(%) | Speed(ms) | Download | |--------------|-----------|--------------|----------|----------| |y2-res2-6-10-2-dim256 | 97.18 | 97.52 | 22 |model | |y2-res4-8-16-4-dim256 | 98.03 | 98.30 | 33 |model |
6. TensorRT转换
6.1 List of supported models:
Detection:
| Model | Auto download | Inference code | Source | |:----------------------|:--------------|:---------------|:------------------------------------------------------------------------------------------------| | retinaface_r50_v1 | Yes | Yes | official package | | retinaface_mnet025_v1 | Yes | Yes | official package | | retinaface_mnet025_v2 | Yes | Yes | official package | | mnet_cov2 | No | Yes | mnet_cov2 | | centerface | Yes | Yes | Star-Clouds/CenterFace |
Recognition:
| Model | Auto download | Inference code | Source | |:-----------------------|:--------------|:---------------|:----------------------------------------------------------------------------------------------------------| | arcface_r100_v1 | Yes | Yes | official package | | r100-arcface-msfdrop75 | No | Yes | SubCenter-ArcFace | | r50-arcface-msfdrop75 | No | Yes | SubCenter-ArcFace | | glint360k_r100FC_1.0 | No | Yes | Partial-FC | | glint360k_r100FC_0.1 | No | Yes | Partial-FC |
Other:
| Model | Auto download | Inference code | Source | |:-------------|:--------------|:---------------|:------------------------------------------------------------------------------------------------| | genderage_v1 | Yes | Yes | official package | | 2d106det | No | No | coordinateReg |
Todo
-
释放训练好的模型(PRNET,更新人脸检测模型基于Retina的RetinaDetection 链接:https://github.com/bleakie/RetinaDetector )
-
近期会更新新的静默活体识别模型
Related Skills
node-connect
351.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
