看脸时代,“颜值”竟然都有了计算方法!

“魔镜魔镜告诉我,谁是世界上最美的女人?”这句伴随童年的话也有现实版哦~神经网络可以预测人脸颜值,这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文,并公开了数据集 SCUT-FBP5500。本文作者 Dima Shulga「复现」了该论文,并用自己的照片做了试验。

本文转自公众号机器之心(ID:almosthuman2014)

数月前,华南理工大学发布了关于“颜值预测”的论文和数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间。(关注DT数据侠,后台回复“颜值预测”即可获取论文地址与数据集地址)

数据集中还有很多名人。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 有所改进,且具备潜在应用。

注:点击“阅读原文”即可查看原文内容。内容仅为作者观点,不代表DT财经立场。

作者 | Dima Shulga

编译 | 路、刘晓坤

题图 | 站酷海洛

▍数据侠门派

本文数据侠Dima Shulga,HiredScore数据科学家,毕业于以色列开放大学。

原文发布于微信公众号 - DT数据侠(DTdatahero)

原文发表时间:2018-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

谷歌放大招!数据增强实现自动化

1932
来自专栏新智元

效果惊艳!FAIR提出人体姿势估计新模型,升级版Mask-RCNN

来源:densepose.org 【新智元导读】FAIR和INRIA的合作研究提出一个在Mask-RCNN基础上改进的密集人体姿态评估模型DensePose-R...

42613
来自专栏杨熹的专栏

特征工程怎么做

在工业应用中,feature 比算法重要,数据比 feature 重要,有很多 kaggle 参赛者分享经验时也是说 feature engineering 很...

3463
来自专栏ATYUN订阅号

【学术】以精确性来提高对机器学习的信任

传统的机器学习工作流程主要集中在模型训练和优化上,最好的模型通常是通过像精确或错误这样的性能度量来选择的,我们倾向于假定一个模型如果超过了这些性能标准的某些阈值...

2927
来自专栏AI科技评论

学界 | 腾讯AI Lab 20篇论文入选NIPS2018,含2篇Spotlight

被誉为神经计算和机器学习领域两大顶级会议之一的NIPS于近日揭晓收录论文名单,此次为第32届会议,将于 12 月 3 日至 8 日在加拿大蒙特利尔举办。

1002
来自专栏机器之心

ICLR 2018论文评审结果出炉:一文概览论文 TOP 5

3655
来自专栏腾讯高校合作

NIPS2018 | 腾讯AI Lab入选20篇论文,含2篇Spotlight

被誉为神经计算和机器学习领域两大顶级会议之一的NIPS于近日揭晓收录论文名单,此次为第32届会议, 12 月 3 日至 8 日在加拿大蒙特利尔举办。 腾讯AI...

661
来自专栏人人都是极客

1.训练模型之准备工作

经常关注我公众号的读者应该还记得之前写了5课关于嵌入式人工智能的文章,可以点击这里查看(文章末尾有前4节课时的推荐),前5节课时都在讲一个主题,即如何识别物体。...

3649
来自专栏决胜机器学习

机器学习(七) ——logistic回归

机器学习(七)——logistic回归 (原创内容,转载请注明来源,谢谢) 一、概述 1、基本概念 logistic回归(logisticre...

3396
来自专栏Pytorch实践

Pytorch实现skip-gram模型训练word2vec

对于词语的表示,最开始采用one-hot编码,用于判断文本中是否具有该词语;后来发展使用Bag-of-Words,使用词频信息对词语进行表示;再后来使用TF-I...

4206

扫码关注云+社区

领取腾讯云代金券