• 12月23日 星期一

2018年视频人物识别挑战赛冠军是如何养成的?

2018年,爱奇艺与中国模式识别与计算机视觉大会(PRCV2018)共同发起“多模态视频人物识别挑战赛”,在来自包括纽约大学、瑞典隆德大学、新加坡国立大学、百度、小米、微软等全球顶尖高校以及行业领先公司在内的397支参赛队伍中, WitcheR团队脱颖而出,荣获冠军。下面是该团队的经验分享,希望可以为对多模态领域研究感兴趣的朋友们提供参考。

在去年,我们团队决定参加由爱奇艺联合PRCV会议举办的第一届多模态视频人物识别挑战赛,为了这个挑战赛爱奇艺准备了迄今为止最大的人物视频数据集(IQIYI_VID)。参赛比赛的过程中我们团队经历了沉稳-自信-压力-兴奋的心理路程,十分有趣。

挑战赛的信息是从一个技术交流的群里了解到的, 因为挑战赛的方向比较合适目前的研究方向, 就毫不犹豫的注册参加了。我们团队WitcheR(名字来源某著名游戏)包括3个成员:IBUG Jiankang Deng、公司的小伙伴JackYu 和我。我们团队的合作模式比较简单,没有特别明确的分工,在比赛过程中中团队成员会相互交流想法,共同找出当前可能存在的问题与改进点,最终由我统一汇总来实现和验证。

在这次比赛中我们不仅积累了视频特征处理、检索的一些经验,同时也认识了业界的一些伙伴、朋友,并且进行了深入的学习和交流。

一、准备策略

爱奇艺举办的视频人物识别挑战赛是一个针对视频的人物检索竞赛,赛题逻辑比较简单:在视频数据集IQIYI_VID中,计算出该视频包含的人物是谁。整个数据库包含50万条视频,5000名人物(噪音清理后4934), 每条视频的长度是1~30秒。爱奇艺准备的这份数据集很特别,做到了数据的大和干净,其中视频数量和包含的人物数量截至目前都是最高的,并且噪音维持在了一个极低的水平, 对检验模型算法性能有很好的参考意义。

对视频人物检索问题来说,我们可能可以利用的信息有:

(1) 人脸识别模型

(2) 人头识别模型

(3) 行人重识别模型

(4) 图片场景模型

(5) 声纹模型

(6) 人体姿态模型

在我们这次必定的方案中只用到了(1)和(4)。理由是:

1. 人头识别缺少数据集

2. ReID model可以和recognition model同时存在, 但泛化性能不如, 组合后会带来提升还是下降未知

3. 声纹模型不熟悉

4. 人体姿态步伐做人物识别更有些虚无缥缈

5. 人脸识别是最重要的特征, 在能看到脸的视频里面起决定性作用

6. 图片场景模型可以对检不到脸的场景做一些补充

第一波数据公布后我利用空闲时间开始了实验, 用各种策略评估官方第一次提供的训练/验证集合的精度:

1. 帧速, 即每隔多少帧抽一次人脸/图片特征

2. 检测器选择, 更准的检测器是否相比MTCNN带来更高的精度.

3. 人脸特征聚合, 如何用特征来表示一个视频

4. 获得视频特征后如何更好的提升检索性能

5. 用什么人脸识别模型和图片场景模型

二、正式启动:首交成绩第一 但很快被超过

在官方发布了所有数据集和测试集后,因为先期积累了一些经验,我们决定专门腾了一台8卡P40来做这个任务。

我们用了自己研发和训练的一个one stage检测器来同时检测人脸和关键点做对齐,相比MTCNN,在phase1的validation set上能有差不多1个点的mAP提高。不管是在这个比赛中,还是其他的应用里,我们都发现关键点的精度是非常重要的,更精准的关键点能带来更好的识别性能。这个检测器也会很快在insightface上开源。人脸识别的模型训练数据我们用了 MS1M-Arcface(emore)+ Glint-Asia 的组合, 没有采用任何私有数据。 Loss function用我们刚刚被CVPR 2019接收为oral的Arcface:

2018年视频人物识别挑战赛冠军是如何养成的?

网络结构沿用了paper里面提出的ResNet100和IR Block:

2018年视频人物识别挑战赛冠军是如何养成的?

更多细节可以参考我们的文章:

对每段视频我们间隔3帧抽一次特征(~8FPS), 并对所有特征取平均来获得该视频的特征. 在这个过程中我也尝试了一些其他方法:

1. 根据feature norm去掉模糊人脸,有提升

2. 增加flip augmentation,没有提升

3. 增加color jittering augmentation,性能下降

4. 根据人脸5点估计姿态,并进行分组处理,没有提升

在获取每个视频的特征向量后,我们就可以通过简单的向量夹角来衡量视频之间的相似度,并根据测试视频和所有训练视频中最相似的视频来输出预测结果。这时候我提交了第一个结果,test mAP:79.8. 当时只有不到10个人提交,暂列第一, 但很快被超过。

三、调整策略:加速

  • A) MLP

在上面的方法中有一个缺陷,实际上我们并没有用到训练集视频来做训练。我也尝试过把训练集的视频人脸图片抽取出来放到识别的训练集里,但效果并不好。那如何才能用到这些训练集信息? 答案是直接用视频向量做为输入训练一个多层感知机(MLP)。最简单的多层感知机很直观,输入512 embedding,通过2个全连接层,来预测该向量属于某个人物分类的概率,最后加softmax loss来BP。但这里面的设计就又有不同,多少层最好,每层的宽度多少, 用不用BN,是否需要shortcut connection,用不用dropout, batch-size多大等等这些因素都会很大程度影响最终结果。我们最终选取了如下策略:

1. 三层感知机

2. 层宽 channel size = 1024

3. PRelu 代替 Relu

4. 在中间层使用shortcut connection, 因输入输出分辨率一致.

5. 使用BN, 不使用Dropout

6. 用非常大的batch-size训练, 单卡4096

7. Softmax层之前添加一个fix gamma的BN, 并和原始不加fix gamma BN的版本联合预测

这7个技巧是我们的best setting。在使用最简单的MLP配置时,提交的test mAP为82.9。加上这7个技巧以后,mAP=86.4, 足足提高了3.5个点。

  • B). 模型融合

模型融合可以说是打比赛必备的trick, 多个模型一般来说总能提升最终结果的精度. 我们保持同样的数据集和训练方法,并采用不同的random seed训练了4个人脸识别模型。对这些识别模型也做同样的MLP训练来输出最终的预测概率, 并加权得到最终结果. 此时mAP得分来到88.2。

  • C). 场景分类模型

对那些无法检出人脸的视频, 我们从mxnet model zoo里找到imagenet11k+place365预训练的resnet152模型做为基准模型,用抽取的视频图片做微调来预测每张图片属于哪个明星。做完分类处理后, mAP最终定格在88.6。

结果汇总:

2018年视频人物识别挑战赛冠军是如何养成的?

四、最后的决战:压力

在提交截止前的2-3天, 排名第二的队伍得分突然一下提高了很多, 离我们只差不多1个点的距离。而当时我们手上其实已经没什么牌可以打了。领跑了大半个赛季的我们,在最后一个夜晚还是比较担忧最终的成绩会被翻盘。焦虑不安的渡过了一个夜晚,第二天上午看到最终结果才放松下来。最终以总分比较高的优势拿到了这次比赛的第一名。

五、比赛经验:策略如何更容易的验证

纵观整个比赛过程, 付出最大精力的可能是如何使我们的idea更容易的去验证。Idea很容易想, 可能一天会有好几个,在确定了方案之后,怎么能在现有的机器资源的条件下更快速的去验证,是比赛的一个关键。

尤其在数据量很大比赛中, 如果没有一个优质的流程, 不但会引起效率低, 更会忙中出错,简单介绍其中几种方法:

1. 根据视频的hash id切分多卡跑检测, 并序列化中间结果。 对视频按帧检测比较耗时, 所以在检测策略没有发生变化的情况下可以保证复用结果;

2. 对每个识别模型, 保存其对每一个视频的特征抽取结果。在视频特征抽取算法不变的情况下保证可复用, 做为训练MLP的输入;

3. 序列化保存每个训练的MLP模型和预测的概率信息, 做为最终模型融合的输入。

六、后记

在PRCV2018的颁奖现场我也与主办方和通过比赛认识的小伙伴们进行了亲切和友好的交流,结下了深厚友谊。针对如何提高视频、图像人物检索性能达成了一系列共识。2019年的视频人物识别挑战赛已经开始了,这次比赛的数据集有了新的升级,也是业界中最接近实际媒体应用场景的视频人物数据集,在原有的基础上新增了短视频人物ID约5000个,包括一些特效、滤镜、换妆等。数据集iQIYI-VID-2019在复杂场景下10000名明星人物、200小时、20万条影视剧与短视频数据集,对于挑战者来说更具挑战性,我们团队会继续参加,并希望能有更多的志同道合的团队能来一起参与, 把成绩再提高更好的水平,也能为工业界多做贡献。本文里面提交的技巧和代码都有在insightface里面开源,可自行取用参考。

了解更多

2018年视频人物识别挑战赛冠军是如何养成的?

1. Arcface paper被CVPR 2019接受为Oral. 欢迎关注我们据此展开的开源项目insightface@github.

2. 近期会在insightface上开源一个巨好用的人脸检测和配准器.

3. insightface已支持单机多卡并行加速, 8*1080Ti的环境可支持百万ID训练, 速度达800 samples/sec (ResNet50). 多机多卡版本也很简单, 可利用mxnet内置的parameter server自行修改支持, 改动不是太复杂.

开源项目链接:

https://github.com/deepinsight/insightface

2018年视频人物识别挑战赛冠军是如何养成的?

点“阅读原文”,直达本次大赛报名通道

2018年视频人物识别挑战赛冠军是如何养成的?

也许你还想看

2019爱奇艺多模态人物识别挑战赛报名启动!

2018爱奇艺AI竞赛开幕 推进国内外视频AI技术创新发展

2018年视频人物识别挑战赛冠军是如何养成的?

扫一扫下方二维码,更多精彩内容陪伴你!

2018年视频人物识别挑战赛冠军是如何养成的?

爱奇艺技术产品团队

简单想,简单做

上一篇新闻

长电科技——半导体芯片封装和设计龙头企业

下一篇新闻

【行业前沿】人工智能十年发展总结,中国进步神速,专利占全球七成

评论

订阅每日新闻

订阅每日新闻以免错过最新最热门的新加坡新闻。