1. 介绍

学术界的测评比如IJB-C和megaface,利用该数据集很容易刷到SOTA,大家具体可以看论文,这里展示一下IFRT的结果,IFRT又称国产FRVT, IFRT测试集主要有不同肤色的素人构成,相比起IJB-C和megaface更具有模型的区分度。

相比起目前最好的训练集MS1MV3,Glint360K有十个点的提升

代码和数据地址
论文地址

2. 数据集的规模

Glint360K具有36w类别,和1700w张图片,不论在类别数还是图片数目,相比起MS1MV2都是大幅度的提升,类别数目和图片数目比主流训练集加起来还要多。

3. 如何训练大规模的数据

人脸识别任务特点就是数据多,类别大,几百万几千万类别的数据集在大公司非常常见,例如2015年的时候,Google声称他们有800w类别的人脸训练集。训如此规模的数据时,很直接的方法就是混合并行,即backbone使用数据并行,分类层使用模型并行, W (softmax 线性变换矩阵)分卡存储,这样优点有两个:

  1. 缓解了 W 的存储压力。
  2. 将 W 梯度的通信转换成了所有GPU的特征 X 与 softmax 局部分母的通信,大大降低了由于数据并行的带了的通信开销。

这种方法看似可以训练无限的类别(增加GPU的数量就好了),感觉很完美,但是实际上大家在尝试更大规模,更多机器的时候,突然发现,怎么显存不够用了,好像增加类别数的同时增加机器,单个GPU的显存还在增长? 其实我们忽略了另外一个占据显存的张量:logits。

首先定义 logits=Xwlogits=Xwlogits=Xw,其中www为存储在每块GPU上的子矩阵, XXX为经过集合通信 AllgaherAllgaherAllgaher收集到全局的特征,ddd为特征的维度大小,CCC为总的类别数,kkk为GPU的数量,其中每块GPU中www占用的显存为:

通过这个公式我们发现,更多的类别数,只要增加GPU的数量,就可以维持 www占用的显存不变,我们再看看logitslogitslogits,设每块卡上的批次大小为NNN,则对于分类层的总批次大小为kNkNkN,每块GPU中logitslogitslogits占用的显存为:

我们发现,即使类别数和GPU的数量同时增长之后,logitslogitslogits占用的显存与总的批次大小kNkNkN相关,随着GPU数量的增加,logitslogitslogits占用的显存是持续增加的,设100w类别的分类任务需要使用8块2080Ti,则1000w类别需要80块2080Ti,设特征维度为512,每块GPU的批次大小为64,则在训练1000w类别的任务时,每个GPU中logitslogitslogits占用的显存为www的十倍,在这个例子中,混合并行解决了www占用的显存,却增加了logitslogitslogits占用的显存。

补充:训练技巧之百万级类别的分类模型的拆分训练

4.Partial-FC

在人脸识别中,CosinesoftmaxCosinesoftmaxCosinesoftmax的作用为拉近特征与其相应"正类中心"的距离,对其他的"负类中心"则保持距离。这点其实和最近很火热的自监督表征学习非常类似,Moco通过队列保存更多的历史负样本,SimCLR则使用多机多卡,超大的batchsize来增加负样本的数量,我们发现SimCLR再很大batchsize的时候提升有限了,而再人脸识别中的大规模分类,每个特征的负类中心是所有的类中心,把这些负类中心减少一些是不是也能取到到一样的效果?
答案是肯定的,具体实现方式还是要结合混合并行一起做,我们的做法很简单,“正类必采,负类随机”,再采样类中心的时候,我们要保证正类中心一定是要必须采到的,所以首先会把正类中心都拿出来,其次会随机的采样一些负类中心,补齐到约定的采样率即可。再混合并行的实现中,数据会随机的出现再不同的GPU上,而它的"正类中心"则实现会根据其类别的按照顺序存放在一个固定的GPU上,则会出现样本和"正类中心"不再同一块GPU上的问题。这个解决方案其实也很简单:在我们实现混合并行的时候,不仅同步了每块卡的特征,同时也同步了每块卡标签,每块卡都有所有卡完整的特征和标签,假设总的批次大小为 kNkNkN ,则至多会有kNkNkN个正类中心随机分布再所有的GPU中,我们让每个正类中心所属的GPU将该正类采样出来即可,每块GPU正类采出来后,再随机用负类补齐到约定的采样率,这样是的每块GPU采样的到的类中心都是一样多的,实现负载均衡。后续的过程就就是分类层的模型并行部分了,需要注意的是,只有采样出来的类中心的权重和动量会更新。

5.实验表现

性能方面:

我们在内部的业务和FRVT竞赛上都验证了这个方法,在学术界的测试集IJB-C和Megaface上,使用Glint360K的Full softmax和10%采样会有着相当的结果。

效率方面:

在64块2080Ti,类别数1000w的实验条件下,Partial FC 的速度会是混合并行的3倍,占用的显存也会更低,并且最大支持的类别数也有了一个数量级的飞跃,成功训练起来了一亿id的分类任务。

5. 最后

人脸识别数据集-Glint360K相关推荐

  1. 人脸识别数据集精粹(下)

    人脸识别数据集精粹(下) 人脸检测数据集 所谓人脸检测任务,就是要定位出图像中人脸的大概位置.通常检测完之后根据得到的框再进行特征的提取,包括关键点等信息,然后做一系列后续的分析. (1) Calte ...

  2. 人脸识别数据集精粹(上)

    人脸识别数据集精粹(上) 人脸识别 人脸检测和关键点检测都是比较底层的任务,而人脸识别是更高层的任务,它就是要识别出检测出来的人脸是谁,完成身份比对等任务,也是人脸领域里被研究最多的任务. 1.1 人 ...

  3. 南京大学发布WebCaricature漫画人脸识别数据集

    近日,南京大学推理与学习研究组(R&L Group)发布了一个新的漫画人脸识别数据集 WebCaricature.该数据集包含了 252 个名人的 6042 幅漫画图像以及 5974 幅人脸图 ...

  4. 苹果宣布加入CNCF;华为要求美国运营商支付专利费;微软删除最大的公开人脸识别数据集...

    戳蓝字"CSDN云计算"关注我们哦! 嗨,大家好,重磅君带来的[云重磅]特别栏目,如期而至,每周五第一时间为大家带来重磅新闻.把握技术风向标,了解行业应用与实践,就交给我重磅君吧! ...

  5. 微软删除最大的公开人脸识别数据集,只因员工离职?!

    作者 | 神经小姐姐 责编 | 郭芮 本文经授权转自HyperAI超神经(ID:HyperAI) 前几日,微软静悄悄地删除了一个公开的名人图片数据集.这个本为世界上最大的公开人脸识别数据集,现在已经不 ...

  6. 【数据集NO.3】人脸识别数据集汇总

    文章目录 前言 一.IMDB-WIKI人脸数据集 二.WiderFace人脸检测数据集 三.GENKI 人脸图像数据集 四.哥伦比亚大学公众人物脸部数据库 五.CelebA人脸数据集 六.美国国防部人 ...

  7. 人脸识别数据集整理以及下载

    人脸识别数据集整理 下方是整理的人脸识别数据集列表,有需要的小伙伴下载获取,仅限学习交流,不能用作他处,感谢理解. 下载链接:https://download.csdn.net/download/m0 ...

  8. python构造自定义数据包_构建自定义人脸识别数据集的三种训练方法

    在接下来的几篇文章中,我们将训练计算机视觉+深度学习模型来进行面部识别.在此之前,我们首先需要收集脸部数据集. 如果你已经在使用预先准备好的数据集,比如Labeled Faces in the Wil ...

  9. 格灵深瞳开源全球最大最干净的人脸识别数据集:Glint360K

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/265673438    1.数据集的表现 学术界的测评比如IJB-C和megaface,利用该数据 ...

最新文章

  1. Numpy Axis
  2. JAVA服务治理实践之无侵入的应用服务监控--转
  3. AI之FL:联邦学习(Federated Learning)的简介、入门、应用之详细攻略
  4. 在Linux 中编写并运行C语言
  5. Zookeeper中的ACL
  6. 力控组态软件与mysql_力控组态软件实时数据库的原理
  7. HttpClient 4.5.3 模拟登陆CSDN
  8. 财务管理系统如何帮助企业实现财务自动化管理?
  9. 有关于TCP三次握手和四次挥手的理解
  10. 站长福音:网站实时监控
  11. C语言——三位数排序
  12. 阿里云服务器价格,最新收费标准报价及活动价格表
  13. Android调用系统设置界面
  14. Android源码目录结构,以Android2.1为例
  15. kdj值应用口诀_KDJ应用口诀,一文教你巧妙利用KDJ买卖股票
  16. 前端资深技术专家苏千的“三迁”故事
  17. selenium 淘宝登陆购买,基础实现
  18. 免费APP制作平台哪个好,我能自己制作APP吗?
  19. 多输入数字求和python123
  20. 计算机中xp系统中qq文件,WinXP电脑QQ为什么登不上去?如何解决?

热门文章

  1. c语言怎么打出花边图案,甄嬛舌尖各种版本苏牙咬人 连黄梅戏C语言都来了
  2. 数据库原理 概念结构设计-E-R图及其设计
  3. c语言读dbf文件格式,C语言直接读取FOXBASE的DBF文件
  4. 盐湖卤水吸附提锂工艺
  5. Git 的常规分支使用【dev和master】
  6. 数据库并发问题和事务隔离界别
  7. android 调用系统相机拍照保存,android 调用系统照相机,保存后回到前一个activity...
  8. NFS配置项no_root_squash和root_squash的区别
  9. EasyNVR实现海康、大华NVR硬盘录像机Web无插件播放方案(支持取特定时间段视频流)
  10. Python编程从入门到实践 第十章:文件和异常 练习答案记录