冠军分享:多人种人脸识别

天才儿童队伍由三名队员组成,成员由在读研究生和博士生组成,主要的研究方向是图像特征提取,目标识别与检测。团队有着丰富的项目经验和比赛经验。

文本是他们本次参赛的分享,比赛代码已经开源。

这次比赛图像领域的一些大佬并没有参加,给了我们一次咸鱼翻身的机会。

一般这种图像赛最少2张卡,4张卡以上最佳,实验室或者公司应该有这种硬件条件,这也是相对于表格结构数据比赛的门槛(顺便吐槽下,奖金较少还要扣掉租服务器,但是去郑州玩得很开心,主办方非常用心在此表示感谢)。

拿到特等奖完全是意料之外的事情,八分运气在里面。要知道优秀的队伍很多,比我们强的也不少。技术之外的秘籍这种事情你认为有就有,认为没有就没有,只要相信自己的本心努力就好。

by 天才儿童

01 方案摘要

随着人脸识别技术不断成熟,市场需求将加速释放,应用场景不断被挖掘。从社保领取到校园门禁,从远程授权到安检闸机检查,人脸识别正在不断打开市场。人脸识别应用在加速普及,行业也呈现出新的发展趋势。

本文应用深度学习技术对人脸数据集进行建模,进行了数据与模型方面的探索,搭建了一套面向实际场景的人脸识别方案。我们首先提出了适合人脸图像的数据增强方法,构建了有监督与无监督结合的人脸识别模型,并搭建了一种推理模型,以此对人脸图片进行相似度判断。

团队本次复赛A榜得分0.6582,B榜得分0.6583,均为线上第一。

02 比赛背景&数据集

CCF BDCI 多人种人脸识别冠军分享_数据集

我们可以看到训练集中白种人数量远超过其他人种,而测试集中各人种数量均衡。

CCF BDCI 多人种人脸识别冠军分享_损失函数_02

从数据集统计可以看到数据集具有多样性。

CCF BDCI 多人种人脸识别冠军分享_损失函数_03

第4种是我们发现的主办方创造数据集的方法,如果有时间的话,可以根据这个思路继续做图像增强,训练一个使用主办方方法增强的模型,效果应该会更好。

图像增强的方法非常多,大概包括这些方法:水平翻转、旋转、平移、缩放、直方图、平滑、滤波、色度抖动、锐度抖动。而且这些方法相互组合效果也不一样。除了线上提交以外,可以先建立几种指标线下判断。

CCF BDCI 多人种人脸识别冠军分享_数据集_04

现有的人脸识别测试过程,通常是提取人脸的特征向量,再通过向量距离比如余弦相似度进行对比,而非直接通过网络推理得到标签。特征提取作为人脸识别最关键的步骤,已经有了很多成熟的网络模型。接下来我们主要从神经网络的损失函数,骨干网络2个角度进行分析。

03 有监督模型

在ResNet2015年被提出后,越来越多优秀的网络基于ResNet进行优化更新也取得卓越成就,而在网络结构与进一步升级优化有困难的情况下,研究者逐步将目光转向损失函数上。2018年提出的arcface的主要创新点就是优化损失函数。在传统的Softmax基础上提出了Center Losas,最终arcface损失函数包含Softmax loss 和 Center Loss。

模型使用arcface效果最好,人脸识别方面就是arcface一枝独秀了,其他模型在比赛中效果有差距但可以用于模型融合。

CCF BDCI 多人种人脸识别冠军分享_损失函数_05

损失函数采用Focal Loss最佳。

CCF BDCI 多人种人脸识别冠军分享_损失函数_06

模型的骨干网络使用Resnet系列,当然还融合了其他的网络包括IResnet,Resnext,Densenet。

CCF BDCI 多人种人脸识别冠军分享_人脸识别_07

CCF BDCI 多人种人脸识别冠军分享_人脸识别_08

CCF BDCI 多人种人脸识别冠军分享_数据集_09

04 无监督模型

然后我们还使用了无监督的模型进行后处理。
ECCV2018的论文《基于模型共识的大规模无标注数据标签传播》。其假设已经有了少量的标注图像,对于大量的未标注图像,生成其样本标签对,可以称其为半监督算法。

CCF BDCI 多人种人脸识别冠军分享_损失函数_10

我们对其进行了改进,最终效果是一种无监督的人脸聚类模型。人脸聚类的方法不少,第二名也使用了类似聚类的方法。我们选择这个模型的主要原因是因为快,当然第二名的方法也许精度更高。

人种后验概率修正,利用人种的信息对预测概率进行修正。

CCF BDCI 多人种人脸识别冠军分享_人脸识别_11

当获得了聚类ID后:
(1)对同一类ID判断为同一个人,
(2)不同类ID判断为不同人,
(3)对于没有划分的人,取原概率。

05 模型融合

这里再介绍一些模型:
这个模型分数并不高,但融合效果较好。

CCF BDCI 多人种人脸识别冠军分享_数据集_12

这个是我们搭建的模型,实际方案没有采用,这里提供给大家思路。

CCF BDCI 多人种人脸识别冠军分享_损失函数_13

融合方案如下:

CCF BDCI 多人种人脸识别冠军分享_损失函数_14

图中是15种模型,低分模型的权重已经是1%左右了,提升只是万分位的,如果不刷分只需要效果最好的5种模型就可以了。

得到最终方案:

CCF BDCI 多人种人脸识别冠军分享_损失函数_15

(1)提出了一种人脸图像优化算法,建立了优化指标,可以较为准确地选出有效的图像增强方法。

(2)对最新的人脸识别模型进行了分析与归纳,并进行了实验优化。

(3)无监督模型在保证精度的情况下,线下的理论复杂度与增量迭代,使得其可以用于大规模数据集中。并且可以有更多的业务拓展,比如人脸标注、数据清洗和多账号检测等。

(4)方案可移植性好,可复用性强。

比赛链接:

​https://www.datafountain.cn/competitions/348​

冠军代码:

​https://github.com/themostnewone/2019ccf​

下面的代码给出了所有图像增强方法与分数最高的3种12个有监督模型。

代码参考指北的小暇米的框架,在此表示感谢。

​https://discussion.datafountain.cn/questions/1904/answers/22795​

CCF BDCI 多人种人脸识别冠军分享_数据集_16

备注:公众号菜单包含了整理了一本AI小抄非常适合在通勤路上用学习

CCF BDCI 多人种人脸识别冠军分享_损失函数_17