人工智慧告訴你,你有多好看
前言
機器學習是當今最性感的技術,平常做Research、寫Paper時應當嚴謹;但是在平常的生活中,我一直在想,機器學習可以用來做哪些有意思的事情?
上一篇:Python+機器學習 識別少兒不宜圖片,就是這樣一種場景。本文寫作的初衷也是一樣,即「利用機器學習做一些好玩的事情」。 本篇主要介紹 「機器學習帶你從人群中一眼找到顏值最高的小姐姐」。
聲明:若要追求學術上的嚴謹,請閱讀《Pattern Recognition and Machine Learning》、《The Elements of Statistical Learning》、《Deep Learning》;以及CVPR、ICCV、ECCV、NIPS、ICML、KDD等等頂會上的Paper!!!
正文
設想一下這樣的場景,我們拍攝了一張包含許多人臉的照片,那麼我們如何從這些照片中找到顏值最高的那位呢?就像這樣:
如果你對計算機視覺或機器學習有一定的了解,那麼你肯定知道剛剛描述的場景一共包括人臉檢測 和 回歸分析 這兩個問題了。
即:首先框選出一張照片中的所有人臉;然後返回這些人臉對應的顏值得分。
下面切入正題吧,要訓練機器學習模型,首先需要收集大量標註數據。前段時間我發現 華南理工大學-人機交互智能實驗室 做過 Face Beauty Prediction 之類的工作,並且公布了他們實驗室標註的數據,在此表示感謝!該數據集的顏值得分為1~5分, 1分表示顏值最低,5分表示顏值最高!
註:該數據集僅包含亞洲人,若你將訓練好的模型用來預測歐美或者非洲人的顏值,可能會產生偏差!
因為樣本量總數比較小,去train一個深度模型似乎沒有必要。因此我用了HOG來提取人臉圖像特徵,然後訓練回歸模型。目前嘗試了 Linear Regression、Lasso、Ridge Regression、Elastic Net、Support Vector Regressor 以及 Bayesian Ridge Regression 等回歸模型。根據在測試集上的結果,我發現 Ridge Regressor 表現最佳,Pearson Correlation達到了0.7246!
對於人臉檢測部分,Faster-RCNN, YOLO, SSD 等等這些都是非常成熟的檢測模型了;尤其對於人臉檢測,也有很多論文單獨做了 face detector,在此不贅述了,以後有機會專門再寫 object detection 相關的吧~在這裡為了方便,我直接用的dlib做人臉檢測。
我們保留訓練後的模型二進位文件,在以後的測試中載入該文件,進行預測:
演算法檢測出了每一張臉,並給出了其對應的顏值評分。可以看到,機器學習認為右側第二位美女的顏值是最高的,為 4.11118049 分!
注意!!前方開啟高能預警!!!
注意!!前方開啟高能預警!!!
注意!!前方開啟高能預警!!!
我們在電視或海報上,看到的明星,往往都是 妝後+頂級修圖師 處理過的照騙。而 素顏 才是評判顏值的真正標準。因此編寫網路爬蟲抓取百度圖片的明星證件照,對部分明星素顏照進行顏值打分。結果如下:
可以看到,演算法對劉詩詩的素顏照打出了1.52分。
可以看到,演算法對唐嫣的素顏照打出了1.64分。
可以看到,演算法對楊冪的素顏照打出了1.63分。
看來,三姐妹還是糖糖的顏值略勝一籌啊~
演算法對黃聖依的素顏照打出了2.26分。根據我爬取的所有明星素顏照得分來看,超過2.2的素顏已經是很高了~
范爺以2.7分暫時位列榜首!給冰冰打call!!
演算法給出李小璐的得分為2.51分!
演算法給出趙麗穎的得分為1.98分!
註:目前訓練集樣本不夠多,我用最新的深度學習演算法測試的結果Pearson Correlation達到了0.78。如果你能夠餵給演算法更多的標記樣本,效果肯定是會大幅度提高的!
聲明:本文所有圖片均來自已發表Paper的benchmark,以及互聯網。若有侵權,請告知我予以刪除!
推薦閱讀:
※面孔酷似金喜善,身材似洪金寶的中國最美女胖子,如今蛻變成女神
※范冰冰和娜扎都是鷹鉤鼻,卻成為她們臉上的點睛之筆,絕色美女有辨識度是因為有巧妙的對沖和平衡