能否仅仅根据他们的脸部照片来预测两个人是否有血缘关系?
这是本文将尝试通过使用野外家庭:以Kaggle共享格式的亲属识别基准数据集:
https://www.kaggle.com/c/recognizing-faces-in-the-wild/data
将探索有效的深度神经网络和转移学习技术来训练一个神经网络,该神经网络将预测两个人是否与血液相关或者没有给出他们的脸部图片。
数据集:
将使用在kaggle上共享的Families in the Wild数据集。它是同类中最大规模的数据集,其中面部照片按人分组,然后人们按家庭分组。
FIW数据集中的图像组织
除了图像文件夹之外,还有一个文件,列出了一个家庭中两个人血缘相关的所有情况,而不是所有家庭成员的情况。
模型:
为了解决这个问题,将使用一个连体网络,该网络拍摄一对图像并预测1如果照片中的人是相关的,否则为0。
暹罗网络
图像编码器应用于每个输入图像并将它们中的每一个编码为固定长度矢量。两个图像矢量之间的差的平方被馈送到完全连接的层,然后该层预测亲属的二元标签。
输入/输出示例
迁移学习:
将使用两种不同的设置将解决方案基于预训练图像编码器:
在ImageNet上进行预训练:包含1400万个手动标记图像的数据集,用于分类为狗,猫,飞机,草莓......
在VGGFACE2上进行预训练:包含各种不同种族,口音,职业和年龄的330万张面部图像和9000多种身份的数据集。
https://github.com/rcmalli/keras-vggface
预训练技术很有用,因为它们允许将在源任务(这里是图像分类或回归)上学习的表示迁移到目标任务中,在这种情况下是目标任务。
这有助于减少过度拟合并实现更快的收敛速度,尤其是在源任务和目标任务稍微接近的情况下。
结果:
将使用准确度和AUC分数来评估每个模型的结果。
Resnet50 Imagenet test ROC AUC : 0.70
通过kaggle提交评估测试集
Resnet50 VGGFACE2 test ROC AUC : 0.81
通过kaggle提交评估测试集
验证准确性比较
可以看到,即使两个不同设置中的体系结构相同,结果在VGGFace2上预训练的模型上要好得多,因为它的源任务与Imagenet相比更接近亲属预测的目标任务。
结论:
展示了训练一个暹罗网络来预测两个人是否有血缘关系。通过使用迁移学习,能够在AUC ROC中获得0.81的令人鼓舞的结果,特别是考虑到亲属预测的任务对于人类而言相当困难。
有关重现结果的代码请访问:
https://github.com/CVxTz/kinship_prediction