Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ResNet告诉我,我是不是世界上最美的人?

ResNet告诉我,我是不是世界上最美的人?

作者头像
大数据文摘
发布于 2018-05-23 03:34:26
发布于 2018-05-23 03:34:26
62300
代码可运行
举报
文章被收录于专栏:大数据文摘大数据文摘
运行总次数:0
代码可运行

大数据文摘作品

编译:大茜、Molly 、钱天培

什么?!颜值“客观化”要进行实质性推进了?

几个月前,华南理工大学发布了一篇关于“颜值评估”的论文及其数据集。

这个数据集包括5500人,每人的长相被从1-5分进行打分。

数据的下载地址如下:

https://github.com/HCIILAB/SCUT-FBP5500-Database-Release

让文摘菌来举个栗子,你就知道这个数据是咋回事啦。

数据集中还包括一些明星。这张Julia Roberts的照片平均得分为3.78:

这张以色列著名模特Bar Refaeli的照片获得了3.7分。

这些分数可能看起来有点低,但3.7分已经代表你的颜值比数据集中约80%的人高了。

在这个数据集上,作者训练了多个模型,试图根据人脸图片评估颜值。

在这篇文章中,我要复现他们的结果,并测一下自己的颜值。

原始论文构造了一系列不同的模型,包括使用人工构造特征的经典ML模型和3种深度学习模型:AlexNet、ResNet18和ResNext50,我希望尽可能简化我的工作(我不想从头开始训练Resnet神经网络模型),我想对现有的模型进行调优。在keras中,有一个称为application的模块,它包含各种不同的预训练过的模型。resnet50就是其中之一。 不幸的是,在keras.applications中没有ResNet18或ResNext50,所以我不能完全复现研究人员之前的研究过程,不过利用resnet50也能足够接近之前的工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from keras.applications import ResNet50

ResNet是一个由微软开发的深度卷积网络,它赢得了2015 年的ImageNet图像分类任务竞赛。

在keras中,当我们初始化resnet50模型时,我们创建了一个ResNet50结构的模型,并且下载了在ImageNet数据集上训练的权重。

论文的作者没并有提到他们究竟是如何训练模型的,不过我会尽力做到最好。

我想删除最后一层(“softmax”层)并添加一个没有激活函数的全连接层来做回归。

代码语言: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个可训练的参数,而不是23589761个参数。

我的计划是训练最后的全连接层,然后以较小的学习率训练整个网络。

代码语言: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轮。

在这里,train_X代表照片,也就是形状为(350,350,3)的numpy矩阵,train_Y是图像被标记的分数。

结论

论文使用2种方法训练模型:5折交叉验证和以6:4的比例将数据集分割为训练集和测试集。他们使用皮尔逊相关系数(PC),平均绝对误差(MAE)和均方根误差(RMSE)来测评估模型的结果。以下是他们使用5折交叉验证得到的结果:

这些是他们使用6:4分割数据集获得的结果:

我以8:2的比例分割数据集,所以它类似于执行1折交叉验证。

我得到的结果如下:

非常好的结果。另外,也可以看看散点图和直方图:

原始分数分布(标准化后的):

预测分数分布(标准化后的):

结果看起来不错。现在在我身上试试这个这个神经网络。我首先使用这张照片:

我的分数是2.85,这意味着我的颜值比数据集中52%的人高。不得不说我有点失望,我以为我的分数会高一些,所以我试图提高我的分数。

我拍了很多照片,最终我得到了3.15分,这意味着我比数据集中64%的人更具吸引力。

这比之前好很多了,不过我必须诚实地说,我希望还能更高:)

最后一点,我使用Google Colaboratory构建和调整了这个模型,简而言之,Google Colaboratory能为你提供一个免费使用GPU的python notebook!

文摘菌文末按:希望这个数据集也可以诊治一下北美吐槽君乱打分的恶劣现象,感恩!

原文链接:

https://towardsdatascience.com/how-attractive-are-you-in-the-eyes-of-deep-neural-network-3d71c0755ccc

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

本文分享自 大数据文摘 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谁是世界上最美的人?看神经网络为每人按颜值魅力打分
「魔镜魔镜告诉我,谁是世界上最美的女人?」这句伴随童年的话也有现实版哦~神经网络可以预测人脸颜值,这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文,并公开了数据集 SCUT-FBP5500。本文作者 Dima Shulga「复现」了该论文,并用自己的照片做了试验。
机器人网
2018/07/23
5530
谁是世界上最美的人?看神经网络为每人按颜值魅力打分
资源 | 神经网络告诉我,谁是世界上最「美」的人?
选自TowardsDataScience 作者:Dima Shulga 机器之心编译 参与:路、刘晓坤 「魔镜魔镜告诉我,谁是世界上最美的女人?」这句伴随童年的话也有现实版哦~神经网络可以预测人脸颜值,这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文,并公开了数据集 SCUT-FBP5500。本文作者 Dima Shulga「复现」了该论文,并用自己的照片做了试验。 数月前,华南理工大学发布了关于「颜值预测」的论文和数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间
机器之心
2018/05/08
5700
资源 | 神经网络告诉我,谁是世界上最「美」的人?
使用深度学习对你的颜值打分
华南理工大学曾发表了一篇关于“面部美容预测”的论文和数据集。你可以在找到它。数据集包括5500人,他们的吸引力在1至5分之间。
计算机与AI
2020/12/14
2.4K1
使用深度学习对你的颜值打分
看脸时代,“颜值”竟然都有了计算方法!
“魔镜魔镜告诉我,谁是世界上最美的女人?”这句伴随童年的话也有现实版哦~神经网络可以预测人脸颜值,这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文,并公开了数据集 SCUT-FBP5500。本文作者 Dima Shulga「复现」了该论文,并用自己的照片做了试验。
DT数据侠
2018/08/08
9190
看脸时代,“颜值”竟然都有了计算方法!
深度学习实战 | 使用Kera预测人物年龄
01 问题描述 我们的任务是从一个人的面部特征来预测他的年龄(用“Young”“Middle ”“Old”表示),我们训练的数据集大约有19906多张照片及其每张图片对应的年龄(全是阿三的头像。。。),测试集有6636张图片,首先我们加载数据集,然后我们通过深度学习框架Keras建立、编译、训练模型,预测出6636张人物头像对应的年龄。 02 引入所需要的模块 import os import random import pandas as pd import numpy as np from PIL im
用户1332428
2018/03/09
1.6K0
深度学习实战 | 使用Kera预测人物年龄
机器学习(二)深度学习实战-使用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 增加神经网络的层数输出结果结果
基于keras的双层LSTM网络和双向LSTM网络
基于keras的双层LSTM网络和双向LSTM网络中,都会用到 LSTM层,主要参数如下:
全栈程序员站长
2022/07/05
1.4K0
基于keras的双层LSTM网络和双向LSTM网络
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
7730
AI识万物:从0搭建和部署手语识别系统 ⛵
据北京听力协会预估数据,我国听障人群数量已过千万。而在全球范围内有4.66亿人患有残疾性听力损失,约占全世界人口的5%。聋哑人士很特殊,他们需要使用手语进行交流,其他与常人无异,我国存在特殊教育水平在各城市中发展力度具有较大差异,国家通用手语推广程度浅,但不懂手语,与听力障碍者交流会非常困难。
ShowMeAI
2022/08/09
1K0
AI识万物:从0搭建和部署手语识别系统 ⛵
手把手教你构建ResNet残差网络
【导读】ResNet在2015年名声大噪,影响了2016年DL在学术界和工业界的发展方向。它对每一层的输入做一个reference,形成残差函数。残差用来设计解决深度网络退化问题,同时也解决了梯度消失
WZEARW
2018/06/05
3.7K0
Deep learning with Python 学习笔记(3)
想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好
范中豪
2019/09/10
6210
Deep learning with Python 学习笔记(3)
resnet18[通俗易懂]
从上面这幅图可以看出,在一定的训练迭代中,适合的浅层网络要比深层网络有更低的训练误差和测试误差
全栈程序员站长
2022/09/01
1.6K0
resnet18[通俗易懂]
教你使用Keras一步步构建深度神经网络:以情感分析任务为例
【导读】Keras是深度学习领域一个非常流行的库,通过它可以使用简单的代码构建强大的神经网络。本文介绍基于Keras构建神经网络的基本过程,包括加载数据、分析数据、构建模型,配置模型等。并通过imdb
WZEARW
2018/04/25
2K0
教你使用Keras一步步构建深度神经网络:以情感分析任务为例
卷积_ResNet
刚才边写这个,别跑程序,偏偏没有选择自动保存,因此没得了,一个字也没有给我留下来,消耗了我所有的耐心。
火星娃统计
2021/11/02
3250
seq2seq模型是什么_seq2seq原理
seq2seq 模型是一种基于【 Encoder-Decoder】(编码器-解码器)框架的神经网络模型,广泛应用于自然语言翻译、人机对话等领域。目前,【seq2seq+attention】(注意力机制)已被学者拓展到各个领域。seq2seq于2014年被提出,注意力机制于2015年被提出,两者于2017年进入疯狂融合和拓展阶段。
全栈程序员站长
2022/11/15
1.9K0
seq2seq模型是什么_seq2seq原理
手把手教你在Python中实现文本分类(附代码、数据集)
文本分类是商业问题中常见的自然语言处理任务,目标是自动将文本文件分到一个或多个已定义好的类别中。文本分类的一些例子如下:
数据派THU
2018/07/30
12.7K2
手把手教你在Python中实现文本分类(附代码、数据集)
使用折外预测(oof)评估模型的泛化性能和构建集成模型
机器学习算法通常使用例如 kFold等的交叉验证技术来提高模型的准确度。在交叉验证过程中,预测是通过拆分出来的不用于模型训练的测试集进行的。这些预测被称为折外预测(out-of-fold predictions)。折外预测在机器学习中发挥着重要作用,可以提高模型的泛化性能。
deephub
2022/03/12
9780
使用折外预测(oof)评估模型的泛化性能和构建集成模型
从零开始学keras(八)
  想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好。如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征的空间层次结构可以有效地作为视觉世界的通用模型,因此这些特征可用于各种不同的计算机视觉问题,即使这些新问题涉及的类别和原始任务完全不同。举个例子,你在 ImageNet 上训练了一个网络(其类别主要是动物和日常用品),然后将这个训练好的网络应用于某个不相干的任务,比如在图像中识别家具。这种学到的特征在不同问题之间的可移植性,是深度学习与许多早期浅层学习方法相比的重要优势,它使得深度学习对小数据问题非常有效。
墨明棋妙27
2022/08/24
5760
从零开始学keras(八)
【深入探讨 ResNet:解决深度神经网络训练问题的革命性架构】
随着深度学习的快速发展,卷积神经网络(CNN)已经成为图像识别、目标检测等计算机视觉任务的主力军。然而,随着网络层数的增加,训练深层网络变得愈加困难,主要问题是“梯度消失”和“梯度爆炸”问题。幸运的是,ResNet(Residual Networks)通过引入“残差学习”概念,成功地解决了这些问题,极大地推动了深度学习的发展。
机器学习司猫白
2025/02/13
2810
【 深入解析VGG网络:理论、调优与ResNet对比】
VGG网络由牛津大学Visual Geometry Group提出(2014),其核心思想是通过小尺寸卷积核的堆叠(3×3)替代大卷积核(如5×5、7×5),在保持相同感受野的同时实现以下优势:
机器学习司猫白
2025/03/11
1810
推荐阅读
相关推荐
谁是世界上最美的人?看神经网络为每人按颜值魅力打分
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验