如何科学计算你的“颜值”?终于认清了现实……

GEO视界

德国国家地理中文版©

关注

数月前,华南理工大学发布了关于“颜值预测”的论文和数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间。

如何科学计算你的“颜值”?终于认清了现实……

数据集中还有很多名人。Julia Robert 的这张照片得到了 3.78 的平均分:

如何科学计算你的“颜值”?终于认清了现实……

以色列名模 Bar Refaeli 这张照片得分 3.7:

如何科学计算你的“颜值”?终于认清了现实……

似乎分也不高嘛,但是 3.7 的得分意味着比数据集中大约 80% 的人要好看。

数据集作者利用该数据集训练多个模型,尝试根据人脸照片预测这个人的魅力。

本文我将复现他们的结果,还要看一下我的吸引力怎么样~

原始论文实现了很多不同模型,包括具备人工制作特征的经典 ML 模型和 3 个深度学习模型:AlexNet、ResNet18、ResNext50。

我想尽可能简单地呈现(不想从头实现和训练整个 resnet 网络),于是打算通过精调现有模型来执行该工作。keras 中有一个模块叫做 applications,包含不同预训练模型。其中一个是 resnet50。不幸的是,keras.applications 中没有 ResNet18、ResNext50,因此我无法完全复现该研究,不过使用 resnet50 复现程度应该很接近。

ResNet 是微软开发的深度卷积神经网络,曾赢得 2015 ImageNet 竞赛冠军。

我们在 keras 中初始化 resnet50 模型时,使用 ResNet50 架构创建了一个模型,同时下载了在 ImageNet 数据集上训练好的权重。

论文作者没有提到他们训练模型的具体细节,因此我尽力去做。我想移除最后一层(softmax 层),添加一个没有激活函数的 Dense 层,来执行回归。

resnet = ResNet50(include_top=False, pooling=’avg’)
model = Sequential
model.add(resnet)
model.add(Dense(1))
model.layers[0].trainable = False
print model.summary
# Output:
Layer (type) Output Shape Param # ================================================================= resnet50 (Model) (None, 2048) 23587712 _________________________________________________________________ dense_1 (Dense) (None, 1) 2049 ================================================================= Total params: 23,589,761
Trainable params: 23,536,641
Non-trainable params: 53,120

(图片说明:可左右滑动查看)

你可以看到,我先使第一层(resnet 模型)不可训练,这样我只需要训练 2049 个参数,而不是 23,589,761 个。

我计划训练最后的 Dense 层,然后使用较小的学习率训练整个网络。

model.compile(loss='mean_squared_error', optimizer=Adam)
model.fit(batch_size=32, x=train_X, y=train_Y, epochs=30)

(图片说明:可左右滑动查看)

之后,我改变第一层的状态使之可训练,编译并拟合模型,来进行另外 30 个 epoch。

这里,train_X 是照片,即 numpy 形态数组 (350, 350, 3),train_Y 是标注图像的得分。

结果

该论文使用 2 种技术训练模型:5-fold 交叉验证、60%-40% 的训练集-测试集分割。论文作者使用皮尔逊相关系数(PC)、平均绝对误差(MAE)和均方根差(RMSE)对结果进行衡量。5-fold 交叉验证的结果如下:

如何科学计算你的“颜值”?终于认清了现实……

60%-40% 的训练集-测试集分割结果如下:

如何科学计算你的“颜值”?终于认清了现实……

我将使用 80%-20% 的训练集-测试集分割,类似执行他们的交叉验证的 1-fold。结果如下:

RMSE: 0.301799791952313 
MAE: 0.2333630505619627
PC: 0.9012570266136678

相当不错。此外,查看分数散点图和直方图很方便:

如何科学计算你的“颜值”?终于认清了现实……

原始分数分布(正态):

如何科学计算你的“颜值”?终于认清了现实……

预测分数分布(正态):

如何科学计算你的“颜值”?终于认清了现实……

结果看起来不错。现在我们来看下这个深度神经网络给我打几分吧。我一开始用了这张照片:

如何科学计算你的“颜值”?终于认清了现实……

得分 2.85,我只比该数据集中 52% 的人好看……不得不说有点失望,我原本以为结果比这好,于是我决定再试试。

我拍了很多照片,最终有一张得了 3.15 分,这意味着我比该数据集中 64% 的人更好看~

如何科学计算你的“颜值”?终于认清了现实……

好多了~老实讲我还是想得更高分~

最后说明一下,我使用 Google Colaboratory 构建和调整模型,它提供 Python notebook,可以免费使用 GPU!

论文:SCUT-FBP5500: A Diverse Benchmark Dataset for Multi-Paradigm Facial Beauty Prediction

如何科学计算你的“颜值”?终于认清了现实……

颜值预测(facial beauty prediction,FBP)是使人脸魅力评估达到人类感知程度的重要视觉识别问题。为了解决该问题,不同的数据驱动模型,尤其是当前最优的深度学习技术被引入,基准数据集成为实现 FBP 的必要因素。之前的研究将颜值识别作为一个特定的分类、回归或排序的监督学习问题,表明 FBP 本质上是一个具备多个范式的计算问题。

但是,大部分 FBP 基准数据集是在特定的计算约束下构建的,这限制了在该数据集上训练的模型的性能和灵活性。本论文中,我们认为 FBP 是一个多范式的计算问题,并提出一种新的多元化基准数据集 SCUT-FBP5500,来实现多范式颜值预测。该数据集共有 5500 个人脸正面照片,这些照片具备不同属性(男性/女性,年龄等)和不同标签(面部地标、颜值得分(1~5)、颜值得分分布),允许具备不同 FBP 范式的不同计算模型,如基于外表/身材的亚洲人/高加索人的男性/女性的颜值的分类/回归模型。我们使用不同的特征和预测器组合、不同的深度学习方法评估 SCUT-FBP5500 数据集,结果表明在该数据集上 FBP 有所改进,且具备潜在应用。

请猛戳右边二维码

德国国家地理GEO最早于1976年发行,如今已遍布全球20多个国家,年发行量超过200万册,是欧洲发行量最大的人文地理类杂志。本号是德国国家地理官方授权中文版。为您提供海内网高质量的阅读!

新浪微博: @GEO视界

公众号ID

GEOChina2014

GEO视界

展开阅读全文

页面更新:2024-03-30

标签:神经网络   范式   德国   发行量   国家地理   基准   视界   得分   分数   深度   模型   好看   现实   照片   科学   数据   时尚   论文

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top