前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >谁是世界上最美的人?看神经网络为每人按颜值魅力打分

谁是世界上最美的人?看神经网络为每人按颜值魅力打分

作者头像
机器人网
发布于 2018-07-23 07:31:17
发布于 2018-07-23 07:31:17
55000
代码可运行
举报
文章被收录于专栏:机器人网机器人网
运行总次数:0
代码可运行

「魔镜魔镜告诉我,谁是世界上最美的女人?」这句伴随童年的话也有现实版哦~神经网络可以预测人脸颜值,这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文,并公开了数据集 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 层,来执行回归。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 层,然后使用较小的学习率训练整个网络。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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。结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RMSE: 0.301799791952313 
MAE: 0.2333630505619627 
PC: 0.9012570266136678

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

原始分数分布(正态):

预测分数分布(正态):

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器人网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
资源 | 神经网络告诉我,谁是世界上最「美」的人?
选自TowardsDataScience 作者:Dima Shulga 机器之心编译 参与:路、刘晓坤 「魔镜魔镜告诉我,谁是世界上最美的女人?」这句伴随童年的话也有现实版哦~神经网络可以预测人脸颜值,这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文,并公开了数据集 SCUT-FBP5500。本文作者 Dima Shulga「复现」了该论文,并用自己的照片做了试验。 数月前,华南理工大学发布了关于「颜值预测」的论文和数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间
机器之心
2018/05/08
5660
资源 | 神经网络告诉我,谁是世界上最「美」的人?
看脸时代,“颜值”竟然都有了计算方法!
“魔镜魔镜告诉我,谁是世界上最美的女人?”这句伴随童年的话也有现实版哦~神经网络可以预测人脸颜值,这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文,并公开了数据集 SCUT-FBP5500。本文作者 Dima Shulga「复现」了该论文,并用自己的照片做了试验。
DT数据侠
2018/08/08
9150
看脸时代,“颜值”竟然都有了计算方法!
ResNet告诉我,我是不是世界上最美的人?
大数据文摘作品 编译:大茜、Molly 、钱天培 什么?!颜值“客观化”要进行实质性推进了? 几个月前,华南理工大学发布了一篇关于“颜值评估”的论文及其数据集。 这个数据集包括5500人,每人的长相被从1-5分进行打分。 数据的下载地址如下: https://github.com/HCIILAB/SCUT-FBP5500-Database-Release 让文摘菌来举个栗子,你就知道这个数据是咋回事啦。 数据集中还包括一些明星。这张Julia Roberts的照片平均得分为3.78: 这张以色列著名模特B
大数据文摘
2018/05/23
6200
使用深度学习对你的颜值打分
华南理工大学曾发表了一篇关于“面部美容预测”的论文和数据集。你可以在找到它。数据集包括5500人,他们的吸引力在1至5分之间。
计算机与AI
2020/12/14
2.4K1
使用深度学习对你的颜值打分
使用神经网络为图像生成标题
我们都知道,神经网络可以在执行某些任务时复制人脑的功能。神经网络在计算机视觉和自然语言生成方面的应用已经非常引人注目。
deephub
2020/07/30
1.1K0
使用神经网络为图像生成标题
Deep learning with Python 学习笔记(3)
想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好
范中豪
2019/09/10
6080
Deep learning with Python 学习笔记(3)
Kaggle比赛——Histopathologic Cancer Detection代码开源(Resnet50模型为基础)
       Kaggle比赛 Histopathologic Cancer Detection 代码开源。   模型使用了Resnet50,修改最后几层网络结构重新训练,并且使用了五折交叉验证取平均值来提高精度。其中的一些trick在代码中已经标注。后面考虑修改网络结构,损失函数来进一步提高精度。更多比赛代码可查看我的github 大黄大黄大黄 。 import os import datetime import pandas as pd import matplotlib.pyplot
大黄大黄大黄
2019/02/25
7710
Keras-深度学习-神经网络-人脸识别模型
②加载人脸数据并进行处理,并将其划分为训练集和测试集。每个人的图像按顺序排列,训练集包含每个人前6张图像,测试集包含剩余的图像。每个图像都被转换为像素值列表,并与相应的标签一起存储。
叶茂林
2023/07/30
2430
Keras-深度学习-神经网络-人脸识别模型
教你使用Keras一步步构建深度神经网络:以情感分析任务为例
【导读】Keras是深度学习领域一个非常流行的库,通过它可以使用简单的代码构建强大的神经网络。本文介绍基于Keras构建神经网络的基本过程,包括加载数据、分析数据、构建模型,配置模型等。并通过imdb
WZEARW
2018/04/25
2K0
教你使用Keras一步步构建深度神经网络:以情感分析任务为例
【深入探讨 ResNet:解决深度神经网络训练问题的革命性架构】
随着深度学习的快速发展,卷积神经网络(CNN)已经成为图像识别、目标检测等计算机视觉任务的主力军。然而,随着网络层数的增加,训练深层网络变得愈加困难,主要问题是“梯度消失”和“梯度爆炸”问题。幸运的是,ResNet(Residual Networks)通过引入“残差学习”概念,成功地解决了这些问题,极大地推动了深度学习的发展。
机器学习司猫白
2025/02/13
2250
你的颜值能打多少分?让飞桨来告诉你
想必很多人都对自己的颜值到底怎样充满好奇,也有很多软件为大家提供了颜值打分的趣味功能。其实,颜值打分也可以视为一个图像分类问题,今天就向大家介绍如何利用飞桨搭建一个VGG网络,实现一个简单的颜值打分demo。
用户1386409
2020/02/12
4140
04.卷积神经网络 W2.深度卷积网络:实例探究(作业:Keras教程+ResNets残差网络)
Keras 是更高级的框架,对普通模型来说很友好,但是要实现更复杂的模型需要 TensorFlow 等低级的框架
Michael阿明
2021/02/19
7630
从零开始学keras(八)
  想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好。如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征的空间层次结构可以有效地作为视觉世界的通用模型,因此这些特征可用于各种不同的计算机视觉问题,即使这些新问题涉及的类别和原始任务完全不同。举个例子,你在 ImageNet 上训练了一个网络(其类别主要是动物和日常用品),然后将这个训练好的网络应用于某个不相干的任务,比如在图像中识别家具。这种学到的特征在不同问题之间的可移植性,是深度学习与许多早期浅层学习方法相比的重要优势,它使得深度学习对小数据问题非常有效。
墨明棋妙27
2022/08/24
5660
从零开始学keras(八)
[Kaggle] Digit Recognizer 手写数字识别(神经网络)
相关博文: [Hands On ML] 3. 分类(MNIST手写数字预测) [Kaggle] Digit Recognizer 手写数字识别
Michael阿明
2021/02/19
3890
神奇的Batch Normalization 仅训练BN层会发生什么
最近,我阅读了arXiv平台上的Jonathan Frankle,David J. Schwab和Ari S. Morcos撰写的论文“Training BatchNorm and Only BatchNorm: On the Expressive Power of Random Features in CNNs”。这个主意立刻引起了我的注意。到目前为止,我从未将批标准化(BN)层视为学习过程本身的一部分,仅是为了帮助深度网络实现优化和提高稳定性。经过几次实验,我发现我错了。在下文中,我将展示我复制的论文的结果以及从中学到的东西。
deephub
2020/05/09
9480
神奇的Batch Normalization 仅训练BN层会发生什么
探索迁移学习:通过实例深入理解机器学习的强大方法
迁移学习的基本思想是利用一个领域(源领域)中的知识来改进另一个领域(目标领域)中的学习效果。例如,在图像分类中,我们可以使用在大型数据集(如ImageNet)上预训练的神经网络,并将其应用于较小的、特定任务的数据集上。这种方法可以显著提高模型的性能,尤其是在目标数据集较小的情况下。
2的n次方
2024/10/15
1940
探索迁移学习:通过实例深入理解机器学习的强大方法
图像分类-cifar100 实验研究
为了解决 cifar100 val_acc 过低的问题,本质上是过拟合问题,所以特地去 papers with code 网站上看了下 cifar100 benchmark 目前第一名做到了多少,如下图所示,val_cc = 0.96,有点东西哈,所以目前要做的是研究 SAM (Sharpness-Aware Minimization),主要用于提升模型的泛化性。
XianxinMao
2021/08/25
1.6K0
搭建浅层神经网络"Hello world"
下面我们会用 TensorFlow 搭建一个浅层的神经网络来运行 "hello world!" 模型。 以下内容和模块的运算,均在矩池云平台进行。
矩池云
2020/02/27
6130
搭建浅层神经网络"Hello world"
机器学习(二)深度学习实战-使用Kera预测人物年龄问题描述引入所需要模块加载数据集创建模型编译模型优化optimize1 使用卷积神经网络optimize2 增加神经网络的层数输出结果结果
问题描述 我们的任务是从一个人的面部特征来预测他的年龄(用“Young”“Middle ”“Old”表示),我们训练的数据集大约有19906多张照片及其每张图片对应的年龄(全是阿三的头像。。。),测试集有6636张图片,首先我们加载数据集,然后我们通过深度学习框架Keras建立、编译、训练模型,预测出6636张人物头像对应的年龄 引入所需要模块 import os import random import pandas as pd import numpy as np from PIL import Ima
致Great
2018/04/11
1.1K0
机器学习(二)深度学习实战-使用Kera预测人物年龄问题描述引入所需要模块加载数据集创建模型编译模型优化optimize1 使用卷积神经网络optimize2 增加神经网络的层数输出结果结果
利用Python实现卷积神经网络的可视化
源 | 全球人工智能 文 | 小象 摘要: 本文简单说明了CNN模型可视化的重要性,以及介绍了一些可视化CNN网络模型的方法,希望对读者有所帮助,使其能够在后续深度学习应用中构建更好的模型。 对于深度学习这种端到端模型来说,如何说明和理解其中的训练过程是大多数研究者关注热点之一,这个问题对于那种高风险行业显得尤为重视,比如医疗、军事等。在深度学习中,这个问题被称作“黑匣子(Black Box)”。如果不能解释模型的工作过程,我们怎么能够就轻易相信模型的输出结果呢? 以深度学习模型检测癌症肿瘤为例,该模
昱良
2018/04/04
1.5K0
利用Python实现卷积神经网络的可视化
推荐阅读
相关推荐
资源 | 神经网络告诉我,谁是世界上最「美」的人?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文