天天看點

機器學習架構ML.NET學習筆記【7】人物圖檔顔值判斷

一個通過ML.NET實作人臉顔值檢測的程式。

一、概述

 這次要解決的問題是輸入一張照片,輸出人物的顔值資料。

學習樣本來源于華南理工大學釋出的SCUT-FBP5500資料集,資料集包括 5500 人,每人按顔值魅力打分,分值在 1 到 5 分之間。其中包括男性、女性、中國人、外國人四個分類。

機器學習架構ML.NET學習筆記【7】人物圖檔顔值判斷

SCUT-FBP5500_full.csv檔案标記了每個圖檔人物的顔值打分資料。(我把分值一項乘以了20,變成了滿分100分,不影響計算結果)

整個程式處理流程和前一篇圖檔分類的基本一緻,唯一的差別,分類用的是多元分類算法,這次采用的是回歸算法。

二、源碼

 下面是全部代碼:

機器學習架構ML.NET學習筆記【7】人物圖檔顔值判斷
機器學習架構ML.NET學習筆記【7】人物圖檔顔值判斷

View Code

三、分析

1、資料處理通道

 LoadImages、ResizeImages、ExtractPixels:上篇文章都已經介紹過了;

ScoreTensorFlowModel方法把圖檔像素值轉換為圖檔特征資料,并存儲在softmax2_pre_activation列,Label列儲存的是顔值資料,通過回歸算法形成模型,當輸入新的特征資料時就可以得出對應的顔值資料。

算法采用的是:L-BFGS Poisson Regression (拟牛頓法泊松回歸)

2、預測結果

 在網上找了一些大頭照,通過程式進行預測,右側是預測結果:

機器學習架構ML.NET學習筆記【7】人物圖檔顔值判斷

預測結果雖然和我認為的不完全一緻,但總體上可以接受,大方向沒什麼問題,存在偏差主要有以下幾個因素:

1、學習樣本的客觀性存疑,其打分資料可能是配置設定給多人打分後彙總的,每個人标準不一緻;

2、被檢測圖檔不是很規範,如尺寸、比例、背景、使用美顔軟體等;

3、顔值本身就不具備客觀性,不存在标準答案,如果我說林心如比如花漂亮,大家肯定都同意,但我如果說古力娜紮比迪麗熱巴漂亮,肯定有人不贊成。

四、資源擷取 

源碼下載下傳位址:https://github.com/seabluescn/Study_ML.NET

工程名稱:TensorFlow_FaceValueDetection

資源擷取:https://gitee.com/seabluescn/ML_Assets (SCUT-FBP5500)

點選檢視機器學習架構ML.NET學習筆記系列文章目錄

簽名區:

如果您覺得這篇部落格對您有幫助或啟發,請點選右側【推薦】支援,謝謝!

繼續閱讀