有沒有夫妻相?刷一下臉就知道!
來自專欄 Python中文社區
引言
煉丹的過程中一般是比較空閑的,刷手機的時候看到了這樣的信息。
只喜歡跟自己有「夫妻相」的人,怎麼辦?【健康】為啥會有「夫妻相」?科學的解釋來了然後就想到,可否用Python來幫我們自動檢測「夫妻相」呢?於是花了大概10分鐘鼓搗了一下demo,就把過程記錄一下吧~
「夫妻相」指的是夫妻之間面容相似的現象。有研究認為:兩個人在一起生活得久了,表情動作彼此模仿,會越來越像。其實是因為大多數人都珍愛自己,看到跟自己相像的人格外順眼,從一開頭就是拿自己當範本選擇另一半。「夫妻相」的大抵意思是因為常常接觸,心靈相傾,習慣趨同,相同的作息、腸道菌落交換等相互影響,以致到了面容相像。
儘管上述描述在當今心理學、生物學方面有爭議,但是大多數人還是比較認同「夫妻相」這一說法的。
基於此,本文利用Python+深度學習+計算機視覺,幫你10分鐘打造一個「刷臉測試夫妻相」Demo出來。
相關術語
【非CS專業的童鞋可以略過該部分!】
【非CS專業的童鞋可以略過該部分!】
【非CS專業的童鞋可以略過該部分!】
本文主要涉及 Face Detection, Facial Feature Extraction, Deep Learning, Facial Landmarks Localization 相關的基礎知識。
因並非是做Research,而且我在文中也說了是「10分鐘打造」,對於 深度學習/計算機視覺 不熟悉的童鞋可以直接使用 pre-trained model(例如做人臉檢測就可以直接使用MTCNN,做人臉關鍵點定位就可以使用dlib),FaceNet抽取人臉深度特徵(當然,GPU不夠強的童鞋用傳統圖像特徵提取運算元如SIFT/LBP/HOG也是可以的,畢竟不是做Research,不需要那麼高的精度~)。想了解細節的童鞋請去閱讀MTCNN, FaceNet 的Paper,都是很棒的工作。在此就不詳細討論了。
當然,如果你有興趣去改造新的state-of-the-art演算法,還是去follow人臉識別相關的頂會Paper比較好~
夫妻相度量
- 基於預訓練深度學習模型提取的特徵相似度表達 :
- 基於幾何特徵(Facial Landmarks)相似度表達:
- 其中, 代表人臉a 在第i 維的特徵值。在這裡一共提取了10個特徵維度:臉部信息(寬度+高度)、兩眼之間距離、眉毛信息(寬度+高度)、眼睛信息(寬度+高度)、鼻子到眼睛中心垂直距離、嘴巴信息(寬度+高度)。
- 人臉綜合信息特徵相似度表達:
數據採集
接下來就是採集正負樣本,從而來確定超參數 的過程。其中,對正負樣本的定義如下:
正樣本:為大眾所熟知的、模範夫妻代表(例如梁家輝和江嘉年,周杰倫和昆凌)。
負樣本:為大眾所熟知的、有出現「時常爭吵、家暴、出軌」等現象的夫妻代表(例如......例子太多,就不例如了)。
編寫Python爬蟲採集大量圖片,利用MTCNN框選人臉區域,dlib做68點的facial landmarks localization。
得到的例子如下:
藍色框框代表男性,紅色框框代表女性。(註:性別識別部分來源於正在水的一篇Multi-Task Learning的Paper,暫時先不作介紹,直接拿來用就行了~)
演算法檢測出杰倫和昆凌的夫妻相指數為0.77。
當然,你也可以測一下自己和 男(女)朋友 的夫妻相指數。
不過前提是,首先......
備註:夫妻相匹配演算法是拍腦袋想的,因不是專門做人臉識別方向的research,所以不清楚該領域是否已經有SOA的演算法存在。後期會不斷更新噠~
聲明
「夫妻相檢測」可以看作是一個 Facial Feature Representation Extraction + Metric Learning 問題,因此關鍵就是如何獲取對人臉更加 discriminative 的特徵表達,以及更好的相似度度量。
本文純屬娛樂,若要追求學術上的嚴謹,請閱讀CVPR/ICCV/ECCV/ICLR/NIPS上的Paper。
BTW, 有啥好的idea歡迎留言~
Reference
- King D E. Dlib-ml: A machine learning toolkit[J]. Journal of Machine Learning Research, 2009, 10(Jul): 1755-1758.
- Zhang K, Zhang Z, Li Z, et al. Joint face detection and alignment using multitask cascaded convolutional networks[J]. IEEE Signal Processing Letters, 2016, 23(10): 1499-1503.
- Schroff F, Kalenichenko D, Philbin J. Facenet: A unified embedding for face recognition and clustering[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 815-823.
- Liu Y. Distance Metric Learning: A Comprehensive Survey[J]. Michigan State Universiy, 2006.
- Similarity learning
- 夫妻相(夫妻之間面容相似的現象)_百度百科
推薦閱讀:
TAG:人臉識別 | Python | 深度學習DeepLearning |