人脸识别与insightFace梳理

一、基础知识

1.相关信息链接(总览):

http://www.sohu.com/a/225358405_473283

https://www.cnblogs.com/shouhuxianjian/p/9789243.html 人脸识别文献综述——学术版(Deep face recognition: a survey v4)

http://www.elecfans.com/d/709424.html 人脸识别讲解(简易版本,文字较长,写的比较详细)

2.数据方面:

https://blog.csdn.net/jobbofhe/article/details/79416661 LFW数据说明及测试说明

https://zhuanlan.zhihu.com/p/23886731 FDDB和LFW 数据集浅析

https://zhuanlan.zhihu.com/p/41195283 商汤科技:图片噪声才是人脸识别背后的恶魔 论文地址:https://arxiv.org/abs/1807.11649

https://hyper.ai/tag/%E4%BA%BA%E8%84%B8%E8%AF%86%E5%88%AB 18个公开的人脸数据集合

glint 数据集是网上下载的,guangda数据(每个人都有多张照片,也不太干净)

 

人脸识别目前实验场景与实际应用的差异

人脸识别与insightFace梳理_第1张图片

 

考虑,增加亚洲人的数据(增加 gelint和guangda的数据,但是又可能因为噪声太多)

3、训练方面:

https://zhuanlan.zhihu.com/p/64864995  学习率和batchsize如何影响模型的性能

一些别的扩展阅读:

https://cloud.tencent.com/developer/article/1359073 (Python的开源人脸识别库:离线识别率高达99.38%(附源码))

https://www.zhihu.com/question/32673260 , https://www.zhihu.com/question/61607442 Batch_size的设定有什么学问

https://zhuanlan.zhihu.com/p/35890660  微调

4、loss函数部分:

人脸识别综述:https://zhuanlan.zhihu.com/p/51324547

人脸识别中的Softmax-based Loss的演化史——旷视科技 https://zhuanlan.zhihu.com/p/76391405

各种loss函数的性能对比论文:https://arxiv.org/pdf/1901.05903.pdf

https://omoindrot.github.io/triplet-loss  Triplet-Loss原理以及实现,写的很详细很好。拉近正样本的距离,将推远负样本的距离。

http://www.lawlite.me/2018/10/16/Triplet-Loss%E5%8E%9F%E7%90%86%E5%8F%8A%E5%85%B6%E5%AE%9E%E7%8E%B0/

https://www.cnblogs.com/shouhuxianjian/p/10108517.html L-Softmax (增加一个角度,在角度方向提供一个Margin)

https://www.cnblogs.com/heguanyou/p/7503025.html A-Softmax的总结及与L-Softmax的对比(https://zhuanlan.zhihu.com/p/41479655 动图解释)

https://blog.csdn.net/u014380165/article/details/76946380 A-Softmax 详解

二、InsightFace 项目梳理

1.训练数据集下载和说明(insightFace官网代码)

训练数据集下载和说明:

Refine-MS1M: https://pan.baidu.com/s/1nxmSCch (推荐)

VGG2: https://pan.baidu.com/s/1c3KeLzy (数据部分解读:https://blog.csdn.net/shaoxiaohu1/article/details/79007477 能够用于识别不同姿态和年龄人脸的数据集)

所有数据集均用MXNet IndexedRecord存储, 加速读取性能.

文件列表:

faces_ms1m_112x112/ train.idx train.rec property lfw.bin cfp_ff.bin cfp_fp.bin agedb_30.bin

其中train.idx 和 train.rec分别是数据偏移索引和数据本身的文件. property代表数据集属性. 其余4个bin文件是验证集,

MXNet IndexedRecord是一种类kv结构. key是一个整数, 每个value代表数据并可包含一个header记录数据的标签.

InsightFace Record格式:

key:0, value_header => [identities_key_start, identities_key_end] key∈[1, identities_key_start), value_header => [identity_label], value_content => [face_image] key∈[identities_key_start, identities_key_end), value_header => [identity_key_start, identity_key_end]

这样的格式既可以支持Softmax这种类型的训练(不需要按人物分组), 又能支持类Triplet Loss的训练(通过id->images映射)

具体生成rec文件的命令可参考src/data/face2rec2.py

所有人脸图片均用MTCNN检测5点并相似变换到112x112大小.

 

 

部分代码分析:

http://www.ecohnoch.cn/2018/12/17/shuxue79/  复刻ArcFace网络结构与源码分析

 

https://blog.csdn.net/CLOUD_J/article/details/98769515   数据的制作

 

【待更新……】

 

 

 

 

 

 

 

 

主要遇到的问题:

人脸识别与insightFace梳理_第2张图片

人脸识别与insightFace梳理_第3张图片

 

 

 

一些trick:

mxnet fp16加速: https://beta.mxnet.io/guide/performance/compression/float16.html

https://devblogs.nvidia.com/mixed-precision-training-deep-neural-networks/

你可能感兴趣的:(机器学习,图像处理)