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

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

  • 论文地址:https://arxiv.org/abs/1801.06345

  • 数据集地址:https://github.com/HCIILAB/SCUT-FBP5500-Database-Release

数据集中还有很多名人。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 复现程度应该很接近。

from keras.applications import 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 = Falseprint 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


论文链接:https://arxiv.org/abs/1801.06345

编译:机器之心

参与:路、刘晓坤

神经网络告诉我,谁是世界上最「美」的人?相关推荐

  1. 魔镜魔镜告诉我谁是世界上最美的人 语音唤醒,百度语音识别。从装系统开始

    魔镜魔镜告诉我谁是世界上最美的人 语音唤醒,百度语音识别.从装系统开始 准备原料 安装树莓系统 准备: 硬件: 软件: 步骤 很高兴,您来到我的小屋,本人diy爱好者,小白,刚刚开始玩树莓派,希望前辈 ...

  2. 世界之最VS谁是世界上最无聊的人

    世界之最VS谁是世界上最无聊的人 <script type="text/javascript"> cpro_client='85023472_cpr';cpro_cbd ...

  3. 史上最「奇葩」的十大编程语言,最后一个有毒……

    关注「实验楼」,每天分享一个项目教程 当你看到这些编程语言时,你的反应应该是「这人一定很闲」.「同是九年义务教育,他为什么这么优秀」.「这人有毒吧」-- 正文共:2220 字 预计阅读时间:7 分钟 ...

  4. 微信相册显示服务器偷懒,微信上这样「偷懒」,比使唤男朋友还省心!

    蓝编辑是自称是个懒人,但是他做事总是又快又准,见血封喉.后来他再说自己是个懒人的时候,我都在心里嘀咕:那么棒,骗谁呢! 事实上,他不是懒,是不愿意浪费时间. 新工具到手,他一定会总结一套最偷懒的操作, ...

  5. 这个世界上你认识那么多的人,那么多人和你有关,你再怎么改变也不能让每个人都喜欢你,所以还不如做一个自己想做的人。

    这个世界上你认识那么多的人,那么多人和你有关,你再怎么改变也不能让每个人都喜欢你,所以还不如做一个自己想做的人.

  6. 你的微信,到底「连接」多少人?

    作为一个技术人,用微信这么多年,也加了不少的好友和技术群.大半个月前,大概是5月初的时候,萌生了这个想法. 前后磕磕绊绊,经过了来美帝出差前期差点饿死.项目紧急期等艰难阶段以及各种自学.温习和设计,还 ...

  7. 谁是世界上最好的编程语言?--编程语言70年浅谈

    1.编程语言发展史纵览 严谨起见,本文提到的编程语言指的是「第三代高级编程语言」. 首先,我们从时间维度入手聊聊编程语言.一图胜千言,我们从目前主流的编程语言中,挑选出流行的.具有历史影响力的语言.把 ...

  8. 最好用浏览器_魔镜魔镜,请你告诉我谁是Mac上最好用的浏览器?--全网最好用的12个功能让你玩转Safari...

    Safari是苹果自带原生浏览器,无论是iPad.iOS.Mac都将Safari集成在系统中,按道理讲它应该是苹果产品里最好用的浏览器,但是很多小伙伴却觉得Safari不好用,转身投入了其他浏览器的怀 ...

  9. fiilt1左耳连不上_「体验」FIIL T1 X 真无线运动耳机:闪连秒同步,让左耳和右耳开始约会...

    「体验」FIIL T1 X 真无线运动耳机:闪连秒同步,让左耳和右耳开始约会 2019-09-18 17:20:00 2点赞 2收藏 3评论 第一次接触FIIL还是2015年底的事了,见过明星开饭店, ...

最新文章

  1. 【分析函数】Oracle分析函数之LAG和LEAD
  2. 获取当前文件所在路径
  3. java aop execution_Spring AOP -- execution表达式
  4. 梯度下降python编程实现_【机器学习】线性回归——单变量梯度下降的实现(Python版)...
  5. 女人离婚后不要孩子,你怎么看?
  6. 深入大数据安全分析(1):为什么需要大数据安全分析?
  7. 防止Mac电脑屏幕进入休眠状态,该怎么设置?
  8. Python的学习笔记案例4--52周存钱挑战4.0
  9. 什么是广域网和局域网?
  10. 《CCNet: Criss-Cross Attention for Semantic Segmentation》--阅读笔记-ICCV2019
  11. 小米手环8和苹果S8哪款好 小米手环8和苹果S8区别
  12. 使用文本排版大师(TxtEdit/TEditer)在记事本文件中绘制表格。
  13. Office-PPT如何使多张图片自动等距排列
  14. win10卸载vivado
  15. 蓝牙模块HC05遇到的一些常见的问题
  16. “多视角交叉认知----《发现的乐趣》,TED演讲-数学是理解万物之源,徐冰《创造力从哪里来》”主题作文
  17. Nginx负载均衡配置策略
  18. mysql查询表中价格区间_MySQL统计价格区间内的商品数量sql语句
  19. pytorch环境配置 一键官网配置+离线配置(anaconda+duda+cudnn+pytorch)
  20. Python数据分析学习路线个人总结

热门文章

  1. ASP.NET Core快速入门(第4章:ASP.NET Core HTTP介绍)--学习笔记
  2. asp.net core集成CAP(分布式事务总线)
  3. EFCore2.0@Xamarin.Forms
  4. .NET Exceptionless 日志收集框架本地环境搭建
  5. 永大服务器进去显示字母,永大电梯服务器使用说明
  6. hp laser103 属性没有配置项_(常见解决方法)UEditor报错“后端配置项没有正常加载,上传插件不能正常使用”...
  7. [转]ES6、ES7、ES8、ES9、ES10新特性一览 (个人整理,学习笔记)
  8. 【ArcGIS微课1000例】0003:按属性选择(Select by Attributes)
  9. WCF服务寄宿IIS时.SVC文件无法浏览的解决办法
  10. Android之解决webview加载第三方网页点击弹不出下拉框(html页面里面的select标签)