【IT168 资讯】几个月前,华南大学发表了一篇关于“颜值预测”的论文和数据集。你可以通过这个地址找到(https://arxiv.org/abs/1801.06345)。这个数据集包括5500人,他们的得分有1到5分的吸引力。
以下是一些来自论文的例子:
还有一些著名的人在集合中。我们可以看到朱莉娅罗伯特的照片平均得分为3.78:
看到的这张以色列著名模特Bar Refaeli的照片得分为3.7分:
这些可能看起来像是低分,但实际上3.7分意味着在数据集中,Bar 比约80%的人更有吸引力。
与数据集一起,作者通过训练多个模型试图根据人脸图片来预测人的吸引力。
在这篇文章中,会重现他们的结果,顺带看看吸引力如何。
最初的论文实现了一系列不同的模型,包括具有手工特征的经典ML模型和3种深度学习模型:AlexNet、ResNet18和ResNext50。
这里会尽可能简化工作(因为不想从头开始实施和训练整个资源网络),这里想微调一下现有的模型,以完成这项工作。在keras中,有一个称为应用程序的模块,它是一组不同的预先训练过的模型。其中之一是resnet50,不幸的是,在keras.applications中没有ResNet18或ResNext50,所以不能再现完全相同的工作,但应该足够接近resnet50。
从keras.应用程序导入ResNet50
ResNet是一个深度卷积网络,由微软开发,赢得了2015 ImageNet竞赛,这是一个图像分类任务。
当我们在keras中启动resnet50模型时,我们使用ResNet50架构创建了一个模型,并且我们下载了经过训练的在ImageNet数据集上训练的权重,如同在ImageNet数据集上训练的一样。
论文的作者没有提到他们究竟是如何训练模型的,所以文章会尽力做到最好。
作者想删除最后一层(“softmax”图层)并添加一个没有激活功能的密集图层来执行回归。
你可以看到制作了第一层(resnet模型)不可训练,所以只有2049个可训练的参数,而不是23589761。
作者的计划是训练最终的密集层,然后以较小的学习率训练整个网络。
之后,将第一层改为可训练、编译,并将模型适应另外30个时期。
在这里,train_X是照片,即形状为numpy的阵列(350,350,3),train_Y是被标记的图像的分数。
结果
本文使用2种技术训练模型:5倍交叉验证和60%-40%列车测试分离。他们使用Pearson Correlation(PC),平均绝对误差(MAE)和均方根误差(RMSE)来测量他们的结果。这些是他们使用5倍交叉验证得到的结果:
这些是他们使用60%-40%训练测试分组获得的结果:
这里会做一个80%-20%的训练测试分割,所以它类似于执行其交叉验证部分的1倍。
得到了以下结果:
非常好。另外,也需要查看分数的散点图和直方图:
原始分数分布(标准化):
预测分数分布(标准化):
结果看起来还是不错的。现在让我们来看看这个深度神经网络是如何评价作者的。首先使用下面这张照片:
得到了2.85分,这意味着作者比这个数据集中52%的人更有吸引力。
拍了很多照片之后,最终得到了3.15分,这意味着作者比数据集中64%的人更具吸引力。
最后一点,使用Google Colaboratory构建和调整了这个模型,简而言之,它为您提供了一个免费使用GPU的python笔记本。