一、概述
这次要解决的问题是输入一张照片,输出人物的颜值数据。
学习样本来源于华南理工大学发布的SCUT-FBP5500数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间。其中包括男性、女性、中国人、外国人四个分类。
SCUT-FBP5500_full.csv文件标记了每个图片人物的颜值打分数据。(我把分值一项乘以了20,变成了满分100分,不影响计算结果)
整个程序处理流程和前一篇图片分类的基本一致,唯一的区别,分类用的是多元分类算法,这次采用的是回归算法。
二、源码
下面是全部代码:
三、分析
1、数据处理通道
LoadImages、ResizeImages、ExtractPixels:上篇文章机器学习框架ML.NET学习笔记【6】TensorFlow图片分类都已经介绍过了;
ScoreTensorFlowModel方法把图片像素值转换为图片特征数据,并存储在softmax2_pre_activation列,Label列保存的是颜值数据,通过回归算法形成模型,当输入新的特征数据时就可以得出对应的颜值数据。
算法采用的是:L-BFGS Poisson Regression (拟牛顿法泊松回归)
2、预测结果
在网上找了一些大头照,通过程序进行预测,右侧是预测结果:
预测结果虽然和我认为的不完全一致,但总体上可以接受,大方向没什么问题,存在偏差主要有以下几个因素:
1、学习样本的客观性存疑,其打分数据可能是分配给多人打分后汇总的,每个人标准不一致;
2、被检测图片不是很规范,如尺寸、比例、背景、使用美颜软件等;
3、颜值本身就不具备客观性,不存在标准答案,如果我说林心如比如花漂亮,大家肯定都同意,但我如果说古力娜扎比迪丽热巴漂亮,肯定有人不赞成。
四、资源获取
源码下载地址:https://github.com/seabluescn/Study_ML.NET
工程名称:TensorFlow_FaceValueDetection
资源获取:https://gitee.com/seabluescn/ML_Assets (SCUT-FBP5500)
相关文章:
机器学习框架ML.NET学习笔记【1】基本概念
机器学习框架ML.NET学习笔记【2】入门之二元分类
ML.NET 示例:二元分类之用户评论的情绪分析
ML.NET 示例:基于二元分类和现有PCA变换数据集的信用卡欺诈识别
为什么最新版ML.NET对.NET机器学习社区如此重要?
机器学习框架ML.NET学习笔记【3】文本特征分析
机器学习框架ML.NET学习笔记【4】多元分类之手写数字识别
机器学习框架ML.NET学习笔记【5】多元分类之手写数字识别(续)
机器学习框架ML.NET学习笔记【6】TensorFlow图片分类