目前的人工智慧可以打「顏值」分嗎?
對這個看臉的世界得多厭惡才能敏感到提出此問啊。哈哈
希望能以最多數人的評判標準打出能代表最多數人心目中的分數。
很好奇可以實現嗎?
現在有可以打分的人工智慧,但暫時還沒發現可以打好分的人工智慧。
之前試了試兩款比較流行的顏值打分APP,結果大跌眼鏡。
第一組測試對象是高圓圓和鳳姐。結果嘛,鳳姐以9.4的高分力壓女神高圓圓呢!第二組測試對象是我家沙發。這些APP再次顯示了自己的無能為力。同一個沙發得分基本上均勻的分布在1-10分之間。沒錯,一張沙發的照片有時候都能得到9分以上。這種簡單的顏值APP甚至都不太能進行面孔識別。還要它們來進行標準化打分,實在是為難了。
【看了APP的打分,你還敢信這些人工智慧么...】
話說回來,即使人工來打分,大家也口味各異,御姐蘿莉各有所愛。一款APP又豈能判斷美醜呢?所以用APP測了顏值的大家,高分玩家勿要得意,低分玩家也不用暗自神傷,當成飯後娛樂笑笑便好了。
雖說這些APP性能還不夠強大,但是實際上的確有科學家研究過人臉的美麗程度,並試圖以此為依據開發「顏值演算法」。這裡就簡單介紹一下吧。那就是廣為流傳的「平均臉」效應了。科學家曾做過這樣的實驗,找來志願者看大量的人臉照片,給照片打分。實驗結果表明,人們更喜歡對稱的臉。另外研究表明,將大量人臉取平均得到「標準臉」,臉的指標和這種「標準臉」越接近,越是讓人覺得好看。
韓國仁濟大學整形外科教授李承哲在2010於國際美容整形外科學會(ISAPS)下屬刊物《美容整形外科》中發表一篇論文,發布了使用全球多名最漂亮女藝人的照片合成的五張平均臉。即使是跨人種,我們也依然能發現美貌的一致性。其中中國人的面孔是不是很像某位明星?
大概就是「醜人多作怪,美人一個胚」的感覺吧。而正是這種「美人一個胚」的現象讓顏值演算法有了可行性。至於為什麼APP表現不太好,請吐槽不靠譜的碼農吧。
從進化角度來看,「美人都似一個模子里出來的」也並不讓人意外。進化是經過漫長自然選擇的結果,擁有平均性狀的個體也更容易倖存。
最後再簡單地介紹一下「顏值演算法」。
剛才我們說了,長得對稱又標準,是基因正常、健康狀態良好的體現和保證,從進化的角度來看是很合理的。因此,如果得到了這些人臉的數據,我們可以通過計算人臉的對稱性和與「標準臉」的差距,定性計算「顏值」。
接下來的問題是,怎麼用軟體得到這些測量指標呢?或者說,怎麼讓軟體「認出」人的臉呢?其實,人臉檢測是計算機科學領域一個重要方向,已經有了諸多發展。在人臉檢測演算法中, 按發展順序有基於知識的模板匹配,紋理特徵,顏色特徵,基於統計的PCA特徵臉,支持向量機,AdaBoost方法等等。
想想看我們自己是怎麼識別出人臉的呢?很多時候我們看到一些石頭或雲,也會覺得像人的臉,不論總體上有多麼大差距,那往往是因為恰好有什麼東西構成了眼睛、鼻子和嘴。再想一想我們怎麼堆雪人的?最後是不是往往要弄個眼睛鼻子嘴什麼的才有「人」的感覺?沒錯了!其實眼睛、鼻子和嘴對我們識別人臉有非常重要的作用。我們對人的臉有一些先驗知識,知道眼睛鼻子嘴等等的形狀、特徵,知道它們之間相互位置,和這些先驗知識符合程度高的,我們的大腦就會判斷為是人臉。
這也是計算機人臉檢測的兩大類方法其中之一,基於知識的方法。這類方法檢測人臉的過程和我們的大腦類似,都是根據輪廓、顏色、紋理等等,判斷是否是人臉。例如,我們簡單推理一下就能得到一種思路:先找眼睛鼻子或者嘴巴的輪廓。當然這對計算機還是有點難,但計算機有方法可以找到邊界線,或者橢圓直線等幾何圖形。用這些方法可以找到圖像中的線條和形狀,再從中提取臉的明顯輪廓,比如鼻子眼睛和下巴的輪廓來定位人臉。即先用對圖像進行邊緣提取,再判斷哪些邊緣是臉的輪廓哪些邊緣是眼睛鼻子等等。
但和人腦不同,這樣靈活的分析對計算機來說仍然有點吃力。人的五官各種各樣,很難制定出一套規則教會計算機正確識別;現實生活是3D的,而照片是2D的,這些增加了人臉檢測的難度。所以科學家們找到了另外一類方法來檢測人臉——基於統計的方法。這就屬於近些年非常火熱的機器學習了。
這類「人臉人工智慧」方法放棄了具體分析人的眉眼,而是把人臉看作一個整體,不用區分是五官還是臉頰,「鼻子眉毛一把抓」,整張照片的所有像素點都交給計算機分析。通過大量的人臉圖片,構建出計算機能理解的人臉模式空間,再根據相似度來判斷人臉。這裡的「通過大量的人臉圖片」就是一個人臉識別機進行學習的過程。
1991年MIT科學家發表了基於主成份分析(PCA)的特徵臉方法,通過一個變換矩陣進行投影,將高維圖像信息變到低維子空間,提高了計算效率與準確率。2001年P. Viola和M.J. Jones發表了經典的《Rapid Object Detection using a Boosted Cascade of Simple Features》和《Robust Real-Time Face Detection》提出了基於哈爾特徵積分圖方法 和AdaBoost級聯的著名方法,從此計算機真正做到了可以實時監測人臉。
哈爾特徵是挺有意思的特徵,從這個特徵就我們很容易就能看出人類思維和計算機演算法有多麼大的差別。
哈爾特徵在圖像中取大大小小很多矩形,將矩形分成兩份或三份,用黑白兩種顏色標記,將黑白兩色矩形里的像素值和相減得到差值。然後用這些差值來對圖像的子區域進行分類。通過不同的黑白矩形組合,就能提取邊緣特徵、線性特徵、中心特徵和對角線特徵,共同構成特徵模板。除了平行的矩形框,還可以取45度的矩形框。通過改變特徵模板的大小和位置,可在圖像子窗口中提取出大量的特徵。哈爾特徵值反映了圖像的顏色灰度變化情況,由於通常眼睛、嘴要比臉顏色深,鼻樑兩邊比鼻樑顏色要深,所以一部分面部特徵能由哈爾特徵描述。這種方法更好得利用了五官之間的相互位置信息,所以能得到很好的檢測準確度。
好啦,看不懂也沒關係。這正是因為計算機思維和人類思維存在巨大差異。這樣的方法看上去傻瓜又繁瑣,算那麼多矩形似乎即費時間又漫無目的,我們判斷人臉的時候是不會這麼做的,但計算機就適合這樣簡單繁瑣的工作。
再簡單總結一下演算法過程,理論上可以實現對「顏值」的打分:1)通過計算機演算法在照片中檢測到人臉;2)定位五官,提取人臉的各項數據、指標;3)根據指標計算臉的對稱性、與「標準臉」的差距,計算「顏值」。
希望下一代顏值APP們可以用上更好的演算法。至少要能告訴我們高圓圓比沙發美多了吧。
(修改自我的某篇約稿,請輕吐槽...)
Face++ 最好的免費人臉識別雲服務
通過這裡的開放API提取人臉的landmark,有25點和82點版本
可以用 @冷哲 的方法做著玩,分類用scikit.learn里的svm就可以吧,要找個願意幫忙打幾千張人臉分的 (不提取其他特徵的話25點的有xy一共50個特徵,都算跟中心點相對距離就是48個 )
可以只給喜歡不喜歡,訓練的結果說不定以後還能幫自己挑照片什麼的
也可以試試只喜歡某一性別的看正確率會怎麼樣
最近有空做下估計target太主觀結果不會很好……
-----------------------------------3.25 更新--------------------------------------------------------
隊nv友shen幫找來3000+明星圖片評了分,居然有72左右正確率,於是來填坑了,大家也可以幫看看有什麼問題。
1. 因為上面說到的API返回的landmark是相對於照片大小的值,所以先對照片進行預處理,我用的是opencv里訓練好的人臉分類器 haarcascade_frontalface_alt_tree.xml 提取出基本充滿畫面的頭像。有的照片沒有提取出來,最後用2500張。部分照片如下,用正規證件照會好一些(之前爬學校校園卡照片失敗
2. 評分只給0和1 即喜歡不喜歡 鳴謝 @顧小婧
3. 用faceplusplus的API得到 landmark 取的25點版本(x,y 到鼻中心距離,共48個特徵)
4. PCA降維到6維,能量分別為
5. 用sklearn里的各種分類器分了一遍,train : test = 7 : 3 參數基本用的default
6.結果
本來預計的是這麼主觀的東西做不出什麼結果,但70+的正確率看起來還不錯。女神的喜好也並不是那麼難以捉摸(大霧)
有空多跑些圖調調參數做下模型融合看會不會還有什麼提高……
可以用來依據歷史評分喜好作個性相親推薦?
可以。
其中一種基於監督學習(Supervised Machine Learning)的方法如下:
第一步,選擇一組人臉特徵,比如兩眼間距、眼睛尺寸、鼻子尺寸、膚色、嘴巴尺寸,嘴唇與鼻尖距離等等。
第二步,建立人臉自動識別演算法,給定一張人像時,可以自動計算上述人臉特徵。
第三步,找大量人的照片,然後找一堆人來給這些照片上的人打分。
第四步,選用一種機器學習的演算法,比如SVM、ANN之類。
第五步,將第三步的人像隨機分成兩組,A組多一些,B組少一些。
第六步,用A組圖片經過特徵提取來「訓練」機器學習演算法,也就是調整參數,使得演算法輸出的分值盡量接近人工打分的結果。並用B組圖片進行驗證,看看演算法對不包含在A組中的圖片是否能正確計算出結果。
第七步,「訓練」完成後就可以用來給任意人像打分了。但由於對於計算機來說人像特徵提取是比較有難度的,所以可能需要要求統一大小的正面不笑免冠照。
另外,這種打分程序只反映第三步中那些打分的人的審美標準。可以,來個無監督的學習。
理論前提是,平均臉較為好看,因此以平均臉為標準給臉打分。
所以先要有一個人臉數據集,然後求平均臉。平均的方法不是簡單的算數平均,有一些特殊的演算法。
然後設計相似度指標,簡單的如correlation,也可以來寫更加複雜的,但是本質就是評價這張臉和平均臉的相似程度。
最後打分。原則是越相似的打分越高。特點,無監督,不反應某些人的偏好特徵。
缺點,你的相信平均臉好看。。。我的女朋友就在旁邊吐槽。。媽蛋。
其它答案作者們,你們確定你們說的是AI,而不是ML?呵呵!Hard AI領域內表示沒有這種程序。你們把手擼feature engineering和大量pre processing工作都交給人來做,最後加個分類器也叫AI我也是醉了。
參考答案:答主要失望了。目前能做打分的都是Machine learning或者statistics相關領域的成果,暫時沒有artificial intelligence內的東西。AI研究的是計算機智能,這方面很遺憾沒有多高的智能。目前打分程序依賴大量人工加工和調參過程。雖然可以但是好像沒什麼用…連人都不能給各種SNS上女生的自拍照打分何況人工智慧。。。。
證件照還差不多
FaceRank - Rank Face by CNN Model based on TensorFlow (add keras version). FaceRank-人臉打分基於 TensorFlow (新增 Keras 版本) 的 CNN 模型(可能是最有趣的 TensorFlow 中文入門實戰項目)(QQ群:522785813)。
fendouai/FaceRank
http://www.tensorflownews.com/
最近在調研這個,覺得做的比較好的就是下面這個了 http://howhot.io
不過他們是從國外online date網站上爬的數據,所以審美非常偏歐美。
這種軟體~~大概10年後才能真正的智能起來吧~
現在這些APP說到底不過是Facial Expression Recognition (FER)的改版,只不過正常(neutral)表情變成了美女表情而已.
有些可惡的app都沒有實現FER三部曲的第一步,找到人臉.
可能是因為大多數FER研究者使用處理過的人臉庫,沒有獨立開發FACE DETECTION
於是這些移植的APP都先天殘疾.
對了,這些數據應該是REMOTE計算再返回給手機的,不然就手機那個計算能力值得懷疑.
演算法出來的,我沒使用過這個app,不過猜測一個人不同角度拍攝能得出不同分數。
每個人都有不同的審美,比如這個app iTunes 的 App Store 中的「自拍爆照打分」,基於人的審美而不是計算機的演算法
哎,被當作人工智慧了
有用過Photo Genic這個app么?它能智能人臉識別,並將你的照片掃描分析,然後打一個分數。但有一個前提,照片的頭像不能太大,且不能把皮膚美顏得太白=_=
可以吧 不過需要很大量的training sample。。。嘛總之就是圖像處理這方面的研究,很麻煩很麻煩但是只要sample的庫足夠大,正確率是可以提高到一個滿意的程度的,不過很麻煩很麻煩。。。想要了解具體的話搜索facial detection...
第一次回答,簡單聊兩句吧。首先,我們的大腦對臉部的識別只需要12個特徵值,之後,會通過比對大腦中已有的臉部模型,從而識別人臉。所以,對顏值評分這件事並沒有特別意義,因為,每個人腦中的臉部模型都不同,所以,每個人對於美醜的感受都不太一樣。
不過,從人類整體的角度而言,平均的面部與健康的基因相關,所以,人本能的會喜歡面部更為平均的人。而三庭五眼符合黃金分割比例,所以,五官比例也和顏值相關。這些客觀因素可以提供有效的評分標準,只是不能覆蓋因地域、文化、和群體輿論所帶來的美醜差異。因為智能,所以不能。
拿女友手機一照,顯示45歲,多次調整角度,沒有下過30歲,遂碎之。。
PS.好像有根據髮際線判斷,不過男女標準不同,不說了。。
先說難點,再說解決方式
難點第一集中在參數選擇上,具體選擇何種演算法只不過是時間問題,可是當我們忽略某些尚未被我們意識到測參數時,損失的信息是很難彌補的。所以我相信有比 @冷哲提到的先選參建立人臉識別系統更好的方式。
比如最原始的,把人臉當成一張圖片直接輸入演算法。通過判斷各種像素點範圍,顏色差異來判斷人臉大小,形狀甚至可以判斷皮膚光澤如何。不過猜想如此做在最後一定要進行人工參數篩選,不然對結果有色人種會相對不公平。
在這點上的建議其實有腦洞的成分:我們可以藉助各種PS美圖軟體的數據來實現。前提假設是【P圖前的顏值】永遠小於【P圖後顏值】,並且假設P圖者都是有一定P圖水準,不會P出尖下巴蛇精或者大眼ET的情況。讓機器根據P前P後兩兩對應分析差異,既可以獲得同一個人的數據,又保證了圖片輸入時的格式改變不大,避免了只能輸入證件照的問題。再者,因為P圖大部分是自拍者自己P的,長期的經驗會讓她選擇出更適合自己臉型的結果,間接釐清了顏值和被判斷者的關係,同時因為每個人都在P自己的圖,所以對高顏值的認知會趨近於所有人對高顏值的平均認知,而非僅僅局限於一部分人的認知。同理,我們也可以不再被「平均顏值等於高顏值」這一不靠譜的假設所束縛。
噢這個已經做出來啦 雖然目前只有ios版本的
容魔魔-美麗指數測試 on the App Store on iTunes
這個app的後台是用Machine Learning做的 機器對於數百萬張通常意義上認為是好看(明星,模特) 和難看的臉進行學習之後 可以進行一定程度上的識別並給出打分了
不過肯定也有局限性啦 燈光眼鏡啥的也還會有一定的影響
推薦閱讀:
※怎樣判斷人類一張臉與另一張臉的相似度?
※億健精靈Magic的人臉識別和IphoneX的FaceID有什麼區別?
※如何看待上海交大研發人工智慧:通過臉部識別技術辨別罪犯?
※如何評價微軟高級工程師對FaceID「我不知道蘋果打算如何繞開我這個專利」的發言?