寫這個項目的原本目的是經過構建一個神經網絡來訓練人臉圖片,最後達到能根據圖片自動判斷美醜的效果。多是由於數據集太小,或者本身參數一直沒有調正確,不管我用人臉關鍵點訓練仍是卷積神經網絡訓練,最後都沒有獲得任何效果。爲了避免讓本身前期寫的代碼變成無用代碼,就參考網上的一些資料寫了一份平均臉生成代碼,感受也還挺有意思的。sql
數據來源是上海市畢業生圖像採集網,2013年本身立刻要畢業的時候網站公開了下載本身畢業照的連接,可是由於下載有漏洞,被不少無聊的人(包括我)跟風下了一波,有一個同窗還用這些圖片作了一個facemash,結果被教務處請去喝了茶(美國的扎克伯克比咱們不知道高哪兒去了)。當時只是本身以爲有意思,把同屆的人的照片下了一份,它們一直靜靜的躺在硬盤裏,直到最近又把它們翻了出來。網絡
由於是證件照,全部的照片尺寸都是640*480,背景是藍布,正臉,素顏,很是適合用來訓練模型或者作平均臉。以前也說了本來目的是訓練模型用,因此也須要給照片裏的每張臉打一個標籤,此處沒有采用當下十分流行的十分制,只是按照本身的審美觀把照片分爲醜、通常和漂亮三個等級(本人審美觀十分普通,五官不協調或者臉型太差的直接認爲醜,看着順眼的認爲通常,五官十分精緻的認爲是漂亮)。運行時以下:學習
此桌面程序(judge.py)還會把調用face++的API接口檢測人臉關鍵點,這些關鍵點也是平均臉製做的關鍵所在,最後全部的標籤和關鍵點數據都存放在face.sqlite中。你們能夠註冊face++帳號嘗試一下,關鍵點檢測效果以下。網站
一種比較簡單的製做方式就是把全部的圖片關鍵點對其以後作均值疊加,詳細的能夠看一下這個博客,這種方法的弊端也很明顯,例如把全部的圖片中眼睛對齊,最終合成的圖片眼睛稍微清楚,可是其餘地方就會模糊的一塌糊塗。這固然不是咱們想要的結果,另一種方法通Delaunay triangulation 把人臉關鍵點對齊,而後再作均值疊加,最終生成的照片會清晰不少,詳細的過程和理論何以參考Average Face : OpenCV ( C++ / Python ) Tutorial3d
平均臉生成的代碼是average.py,最後我把從4100照片裏面挑選出來認爲漂亮的49張照片作了一個平均臉,最後的生成結果以下:sqlite
效果仍是挺不過的,我猜這就是個人夢中情人了吧,不過這也太像劉詩詩了!用face++的類似臉檢查一下,果真就是劉詩詩。blog
PS1:原本想作的沒有作出來,白花了一天時間給四千多張圖片打標籤,想一想仍是挺鬱悶的。接口
PS2:爲何不把全部的人作一個平均臉,由於對我來講沒什麼意義,我就是想單純的想看一下我以爲漂亮的女生是什麼樣子。須要源碼的請聯繫小編。圖片
若是你們在學習Python的路上,或者打算學習Python須要學習資料,能夠加羣571799375,羣裏學習資料免費贈送給你們喔!源碼
本文來自網絡,若有侵權,請聯繫小編刪除!