看论文前可先看下作者自己在知乎的总结:https://zhuanlan.zhihu.com/p/51806059
这篇论文简称CDP,利用监督方式训练一个度量模型判别图片对判别进而实现人脸聚类,使用聚类的人脸来训练人脸识别模型。
open-set and close-set
类似ImageNet识别这种,明确知道类别范围的分类问题称为close-set问题,但人脸方面基本都属于open-set问题(测试类别不一定在训练集范围内),因此测试过程通常是提取人脸特征进行比对,而非直接通过网络推理得到标签。
人脸聚类
聚类需要特征以及相似度度量标准,特征可以由CNN获取,度量可参考L2距离,余弦相似度来度量。
其中,不同的损失函数会产生不同形态的特征分布,左图这种锥形(cone),右图这种分布在超球面的,对人脸特征做L2归一化即可得超球面分布(参考arcface实现)。对于锥形分布,可采用余弦相似度度量,而超球面分布可采用L2距离来度量。
常规的聚类算法有很多,但使用20万张图提取特征之后来测试一下这些聚类算法,K-Means花了10分钟,HAC花了5.7小时,DBSCAN花了6.9小时, Spectral花了12小时。若使用60万张图片提取的特征来做聚类,K-Means超内存了,HAC花了61小时,DBSCAN花了80小时,Spectral跑到天荒地老之后也甩了一句超内存。当图片数量增加到140万的时候,几乎所有的聚类算法都挂了。
K-Means, Spectral, HAC等传统聚类方法的问题主要在于以下方面:
(a) 聚类算法具有较高的时间复杂度。例如,K-Means是O(NKT),Spectral是O(N^3),HAC是O(N^2)。
(b) 通常认为数据分布服从某些简单的假设。例如,K-Means假设数据类内具有球状的分布,并且每一类具有相同的方差(variance),以及不同的类具有相同的先验概率。然而对于大规模人脸聚类,无标注数据通常来源于开放的场景(in-the-wild),数据内部的结构比较复杂,难以一致地服从这些假设。例如,我们期望数据长这样(如下左图):
(c) 通常使用某种特定的metric。例如上述提及的Cosine Similarity和L2距离。同样,对于复杂的数据结构,衡量两个样本是否属于同一类,单纯靠样本之间的局部相似度是不够的,这个metric需要融合更多信息。
(d) 缺乏较好的离群值(outliers)控制机制。outliers来源于人脸识别模型对难样本的embedding误差,以及观测到的数据不完整。尽管部分聚类算法例如DBSCAN理论上对outliers鲁棒,但从其实际表现来讲这个问题远没有得到解决。
有监督的metric
本文提出的CDP其实就是一个度量学习模型,判别两个样本是不是属于同一个类簇。如下图,CDP首先使用多个人脸识别模型构建成一个委员会(committee), committee中每个成员对基础模型中相连的pairs提供包括关系(是否是neighbor)、相似度、局部结构等信息,然后使用一个多层感知机(MLP)来整合这些信息并作出预测(即这个pair是否是同一个人)。这个过程可以类比成一个投票的过程,committee负责考察一个候选人(pair)的各方面信息,将信息汇总给MLP进行决定。最后将所有的positive pairs组成一个新的graph称为consensus-driven graph。在此graph上使用简单的连通域搜索并动态剪枝即可快速得到聚类。由于MLP需要使用一部分有标签的数据来训练得到,所以CDP是一种基于有监督的metric的聚类方法。
CDP 算法流程
1.构建KNN图
Base model 和 committee model如下所示
由基础模型和委员模型对所有图片抽取特征,并分别依据KNN为每个样本找到k个相邻的样本,构建KNN图,其中以余弦相似度来评估样本间相似度。N个委员模型加一个基础模型一共构成N+1个不同的KNN图。接下来以基础模型得到的相似图片对作为候选图片对,由委员模型从多个方面提取特征,最终由MLP来判别图片对是否同一个人。
2.由committee抽取图片对的特征
对基础模型得到的图片对,委员模型依据自己构建的KNN图分别给出邻接关系、相似度和局部结构信息特征
邻接特征:若图片对在委员模型构建的KNN图上,则他们是相邻的,表现为
相似度特征:针对候选图片对,委员模型计算得到的余弦相似度作为图片对的相似程度
局部结构特征:对每个节点,我们可以通过与节点直接相邻的节点(一阶)与间接相邻的节点(二阶)或者更高阶的邻接节点与当前节点的关系来表征节点的局部结构特征,其中节点与节点之间的关系是直接通过余弦相似度来评估的。如下图所示,针对基础模型中的图片对节点,委员模型可以给出每个节点的局部结构特征,在本文中用直接相连节点和间接相连节点余弦相似度信息的均值和方差作为局部结构信息。红线表示的一阶邻接节点信息,黄色表示的二阶邻接节点信息。
3.mediator判别图片对
mediator判别模型就是一个MLP模型,模型输入由以上三个部分节点对特征组成:
  • 邻接关系,N个委员模型,则长度为N
  • 相似度,N个委员+一个基础模型,则长度为N+1
  • 局部结构分布特征,我们仅计算每个节点与直接相邻节点和间接相邻节点余弦相似度的均值和方差,则节点对可计算出2(N+1)个均值特征和2(N+1)个方差特征,N个委员+1个基础模型。
综上,一个图片对可的6N+5个特征,MLP损失函数为交叉熵,二分类模型。在测试阶段,将较高预测概率(0.96)为1的图片对作为相似图片对,因为大多数正图片对是冗余的,这样的做法牺牲了一定的召回率但取得较高的精准率。
4.伪标签传播
依据MLP判别模型所得到的所有正样本对构成一个一致性驱动的图(consensu-driven-graph),图的边为图片对为正的概率,其中该图未必是全部连通的。作者依据节点连接来进行伪标签构建。为传播伪标签,作者设计了一种简单但高效的方法来识别连接部分。首先,依据当前边的连接情况找到所有连接部分并把它们放到一个队列。然后,针对每一连通部分,若该部分节点数大于预定的值,我们剔除连通图里低分的边,找到连接的子图并将这些子图加入到队列。若队列里的连通子图所含节点数小于阈值,那么将该子图归纳为一个新的伪标签并移出队列。迭代队列,不断地将大的子图拆分,将小的子图打标签,直到队列为空。
总结:将节点数超过阈值的子图做拆分,把小于阈值的子图看成一个新的个体,赋予新的伪标签。
5.标记数据与未标记数据联合训练
作者说,由于不确定标记数据和未标记数据的重叠类别部分,因此分别对标记数据和伪标签数据计算损失,损失函数以两部分数据比例来确定。
实验部分
实验部分非常详实了,简单记录几项
对比方法:
  • HAC:监督CNN特征+HAC,通过验证集选定阈值
  • 投票方式确定节点对是否属于同一个人,如果委员模型生成的KNN图中该节点对相连,则票数+1
CDP方法验证精度甚至超过了全监督,作者解释数据集存在误差,CDP去掉了,因此训练出的模型更好。
CDP的计算时间也几乎与数据规模呈线性增长,百万级别数据,KNN搜索花了4分钟(48核),特征计算+MLP花了2分钟(8卡),伪标签生成花了2分钟,但作者没说所有数据抽特征花了多久。。。
相比于百万规模数据常规聚类算法都无法作用,CDP还算可以了,就是有点麻烦,还要先训练多个特征抽取(委员)模型,其中相关代码作者已经开源道github。

Consensus-Driven Propagation in Massive Unlabeled Data for Face Recognition 人脸聚类相关推荐

  1. 人群密度估计--Leveraging Unlabeled Data for Crowd Counting by Learning to Rank

    Leveraging Unlabeled Data for Crowd Counting by Learning to Rank CVPR2018 https://github.com/xialeil ...

  2. Mining Spatio-Temporal Reachable Regions over Massive Trajectory Data

    Mining Spatio-Temporal Reachable Regions over Massive Trajectory Data 时空可达性查询的目的是在给定的时间段里从一个位置找到空间网络 ...

  3. [半监督学习] Combining Labeled and Unlabeled Data with Co-Training

    论文地址: Combining Labeled and Unlabeled Data with Co-Training 会议: COLT 1998 任务: 分类 A FORMAL FRAMEWORK ...

  4. Convex Formulation for Learning from Positive and Unlabeled Data

    Unbiased PU learning. 该论文在之前PU learning中使用非凸函数作为loss的基础上,对正类样本和未标记样本使用不同的凸函数loss,从而将其转为凸优化问题.结果表明,该l ...

  5. 语音识别(ASR)论文优选:SynthASR: Unlocking Synthetic Data for Speech Recognition

    声明:平时看些文章做些笔记分享出来,文章中难免存在错误的地方,还望大家海涵.平时搜集一些资料,方便查阅学习:http://yqli.tech/page/speech.html.如转载,请标明出处.欢迎 ...

  6. 【论文笔记】ECCV_2016_The Unreasonable Effectiveness of Noisy Data for Fine-Grained Recognition

    文章目录 基础信息 Abstract 1 Introduction 2 Related Work 3 Noisy Fine-Grained Data 3.1 Categories 3.2 Images ...

  7. 论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强

    论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强 摘要 1 介绍 2 相关工作 带增强的聚类方法 具有一致 ...

  8. 《Parallel batch k-means for Big data clustering》 SCI (聚类k-means)

    将数据集拆分为等分区并减少计算的指数增长.目标是保留特征数据集的同时提高聚类速度.为每个分区计算簇的中心,它们被合并并在以后聚集.还考虑了确定最佳批量大小的方法. 本文通过将复杂计算分成多个简单运算( ...

  9. ECCV 2018 完整论文集 -- List 下载链接

    下文列表为ECCV2018官网得到了今年接收论文列表,共779篇: 下文为ECCV2018的全部接收论文汇总 Oral: Convolutional Networks with Adaptive Co ...

最新文章

  1. CVPR 2017 全部及部分论文解读集锦
  2. nginx_gzip压缩提升网站的传输速度
  3. 白话Elasticsearch41-深入聚合数据分析之案例实战__过滤+聚合:统计价格大于2000的电视平均价格
  4. 逝者如斯,且听我胡说八道
  5. CentOS 7 vi编辑命令
  6. 怎么让sublime text3可以运行c/c++
  7. 出场顺序很重要下一句_人生如戏,出场顺序很重要:再见,不负遇见
  8. 实习成长之路——设计原则三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?
  9. 天堂2单机版如何架设mysql_天堂2单机版 L2J-som-rotm 安装全过程及常用工具 一步到位...
  10. 授谷歌绝杀百度的独孤九剑
  11. 计算机基础教程 试题,《计算机基础教程》考试试题及答案
  12. 【JZOJ 杂题选讲】【UER #8】打雪仗
  13. uClinux on Blackfin BF533 STAMP - A DSP Linux Port
  14. 无线射频芯片CC2540F256RHAR 中文资料介绍
  15. Android SELinux开发入门指南之如何增加Native Binder Service权限
  16. 蓝牙技术基础知识总结笔记1 - 蓝牙版本及 4.0 和 BLE 的关系等
  17. oracle验证手机号sql,oracle判断手机号码是否合法
  18. 计算机关机重启命令,怎么使用dos命令重启电脑?用dos命令重启电脑关机的方法...
  19. 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)(热身赛(A/B) + 正式赛(D/E))
  20. DS18B20温度换算

热门文章

  1. 下载了免费的epub电子书,如何用Windows电脑打开?
  2. 图片转素描的工具汇总
  3. goto在golang中的用法
  4. 【芝麻背调百科】上午刚发offer,下午老板竟说不要了!HR怎么办?
  5. 多模式MaaS仅仅适用于大城市吗?
  6. 如何快捷得去除代码中的行号?
  7. 数组越界及其避免方法,C语言数组越界详解
  8. linux教程for语句,Bash 中的 For 循环详解
  9. 暖芯迦推出可编程神经调控平台芯片-元神ENS001
  10. Unity AI 语音识别、语音合成、人机交互(一)