这是爱奇艺多模态视频人物识别挑战赛第五名的代码分享,比赛连接:http://challenge.ai.iqiyi.com/detail?raceId=5afc36639689443e8f815f9e
python3.6
tensorflow
sklearn
本方法完全基于比赛官方提供的人脸特征进行,未使用任何其他数据。
模型由一个两层的神经网络组成,使用整个视频的人脸特征加权平均作为输入,输出的分类考虑了噪声数据。方法的主要创新点在于对噪声数据的利用,具体方法如下:
1、对噪声数据进行扩充,具体方法是将长视频随机截取一部分,以及将短视频拼接为长视频
2、利用DBSCAN算法对噪声数据进行聚类,将得到的聚类簇作为新的人物分类,实验中得到3691个聚类簇
3、由于大部分噪声数据缺少足够多的近邻,因此不能被DBSCAN算法聚类为簇。为了处理这部分噪声数据,我们在分类层增加了额外的4934个类别(与目标人物类别数相同)。因此最终的分类层共有4934+3691+4934个类别, 其中0-4933为目标人物类别,4934-8624为聚类簇人物类别,8625-13588为额外的4934个噪声人物类别。在整个模型的训练过程中,对这些噪声的类别标签进行动态更新:当某一个噪声数据被模型分类为一个目标人物时,我们就将这个噪声的类别线性映射到额外的4934个类别中。举例来说,如果某个噪声视频被分类为l(l<4934),那个这个噪声视频的类别标记会被更新为l+8625,并用于后续的模型训练。
最终结果是通过对整个数据集进行8折划分,用其中7个作为训练集,1个作为验证集,最终训练得到8个模型,对8个模型的结果进行融合得到的。
方法细节可查看答辩ppt与代码。
最终结果的测试成绩为0.8252
其中对噪声数据的利用大概能提升3-4个百分点
多模型融合大概能提升1-2个百分点