Facial Beauty Prediction

人工智能课程概论作业——论文复现 期末汇报存档

1 简介

1-1 论文简介

    SCUT-FBP5500: A Diverse Benchmark Dataset for Multi-Paradigm Facial Beauty Prediction是华南理工大学的人机智能交互实验室在2018年1月发表的论文,以下将Facial Beauty Prediction简称为FBP。FBP是一个值得关注的视觉识别问题,其目的是对人脸的吸引力作出与人类感知一致的预测。在以往的研究中,大多数FBP基准数据集都是在特定的约束下建立的,这会限制模型的性能以及灵活性。该论文提出了一个不同的数据集SCUT-FBP5500,来实现多范式的FBP——基于人脸特征向量的FBP、基于端到端特征学习模型的FBP等。

1-2 项目简介

    该项目是对论文中本人感兴趣的部分内容进行复现,实现目标为可以对任意输入的人脸照片进行颜值评估并输出分数。本项目存放至Github-FacialBeautyPrediction,对整个学习摸索过程以及复现过程进行了存档。

2 数据集

    SCUT-5500由5500张正脸人像照片组成,其中包括2000个亚洲女性、2000个亚洲男性、750个白种女性以及750个白种男性。照片的来源主要是互联网,亚洲人的照片大部分来源于数据堂,白种人的照片大部分来源于10k US Adult Faces Database 。对照片的评分共由60个人完成,每个人都对5500张照片进行了颜值打分,最后得到了330000个分数,分数区间处于[1,5]。

    有意思的是这60个人很有可能都是华南理工大学的学生和教职工,从另一个层面来看,根据这个数据集训练出来的模型很大程度上反应了华南理工大学师生对人脸的喜好。

3 数据分析

3-1 平均得分

    经过60个人的评分最终得到了330000个分数,对每张照片的所有得分取平均求出每张照片的平均得分作为最终得分。

3-2 异常值

    遍历所有人脸得分,若发现有评分与平均分相差2分以上,就将该评分视为异常值,并进行剔除。整个数据集中的异常值占比如以下表格所示。

    从表格中可以看出,异常值相较于总数目来说非常少,所以剔除异常值后造成的影响可忽略不计。

子集白种女性白种男性亚洲女性亚洲男性
打分总数目4500045000120000120000
异常值数目143181356497
异常值占比0.3%0.4%0.3%0.4%

3-3 分数分布

    由于数据集中的异常值占比较小,原始数据和预处理数据的分布基本相似,因此分别使用剔除了异常值的四个子集数据来可视化SCUT-FBP5500数据集的分数分布,如下图所示。

    可以看到有超过一半的照片评分都在2~3分这个路人阶段,1~2分和4~5分的极端情况占比较小。

3-4 人脸特征向量提取

    使用人脸识别库Face Recognition从人脸照片中提取到128维的人脸特征向量如下:

feature_vector =
  [-5.35460114e-02,  1.04834020e-01,  5.82005121e-02, -6.23208508e-02,
   -1.20127812e-01,  1.96827948e-03, -5.26909046e-02, -1.48328632e-01,
   1.40360817e-01, -1.83582366e-01,  2.92252243e-01, -4.40107957e-02,
   ......           ......           ......          ......
   6.61701858e-02,  8.83736014e-02,  1.50460765e-01,  4.80800048e-02,
   2.50568688e-02, -4.27672938e-02, -2.44506165e-01, -5.89822307e-02,
   6.45350441e-02, -4.25964147e-02,  5.43840826e-02, -5.32909557e-02]

4 模型

    本论文共训练了两类模型来进行颜值预测,其中包括浅层预测与深层预测。浅层预测使用了三种浅层机器学习模型——线性回归模型、高斯回归模型、支持向量回归模型。深层预测使用了三种卷积神经网络——AlexNet、ResNet18、ResNext50。

4-1 浅层预测

4-1-1 模型训练

    浅层预测部分主要使用了scikit-learn库中的LinearRegressionGaussianProcessRegressorSVR来训练三个回归模型,使用10折交叉验证来训练、验证模型,将所有的数据集等分成10份,不重复地每次取其中1份做测试集,其他9份做训练集来训练模型。

4-1-2 模型性能分析

    在每次交叉验证时都计算出皮尔逊相关系数(PC)、平均绝对误差(MAE)、均方根误差(RMSE)来衡量模型的性能,经过10次交叉验证后,将10次计算的PC、MAR、RMSE取平均数得到最后的值。

    对数据集的四个子集——亚洲女性(AF)、亚洲男性(AM)、白种女性(CF)、白种男性(CM)通过10折交叉验证后计算了PC、MAE、RMSE的平均值如下表所示。

    对整个数据集通过10折交叉验证后计算了PC、MAE、RMSE的平均值如下表所示。可以看到支持向量回归模型是三种回归模型中表现最好的模型,相关系数最高,误差最小。

4-1-3 实际得分VS预测得分

    对测试集进行测试时,将预测得分记录下来与实际得分进行对比,得到三个回归模型的得分折线对比图如下。橙线为预测得分的折线,蓝线为实际得分的折线,可以看到预测效果还是不错的。

4-2 深层预测

    本项目使用到的caffe深度学习框架需要使用CUDA进行GPU加速,同时CUDA只支持Nvidia图形卡,由于我电脑的图形卡不是N卡,只能使用CPU,所以无法使用GPU进行模型训练,耗费时间过长,故直接使用作者已训练好的模型进行5折交叉验证。

4-2-1 模型性能分析

    与浅层预测略有不同,在深度预测中,使用5折交叉验证对测试集进行验证。图片减去均值后,再进行训练和测试,会提高速度和精度。这里通过caffe自带的用于计算平均值的c++接口对每次交叉验证的测试集计算平均值,并保存为一个均值文件,在之后的测试中可以直接使用这个均值来相减,而不需要对测试图片重新计算。

    将5次交叉验证得到的PC、MAE、RMSE取平均值得到最终的结果,可以看到三个不同结构的卷积神经网络中表现最好的为ResNeXt-50——皮尔逊相关系数最高,误差最小。

PC12345平均值
AlexNet0.870.860.870.870.850.86
ResNet-180.880.880.890.880.900.89
ResNeXt-500.900.910.890.900.910.90
MAE12345平均值
AlexNet0.270.250.270.260.270.27
ResNet-180.240.260.240.250.240.25
ResNeXt-500.230.220.230.210.230.22
RMSE12345平均值
AlexNet0.350.330.360.340.370.35
ResNet-180.320.330.330.310.310.32
ResNeXt-500.300.310.300.280.290.30

5 颜值打分

    至此已经得到了6个训练好的模型,其中包括3个浅层预测模型和3个卷积神经网络模型,从中挑出表现最好的两个模型——支持向量回归模型、ResNeXt-50模型来进行颜值打分。由于数据集仅由亚洲人与白种人组成,故挑选了两个亚洲明星和美国明星的正脸清晰照来作为模型的输入图片。(Typora里数字都能垂直居中,怎么这里就不行了!)

输入图片SVRResNeXt-50最终得分
3.863.923.89
4.044.134.09
3.453.843.65
4.114.274.19
寡姐胜!

6 参考

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Google photo

您正在使用您的 Google 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s