用Python鬼畜特朗普照片,了解下?
咪哥雜談

本篇閱讀時間約為 7 分鐘。
1
前言
看到標(biāo)題,別慌,慢慢往下看,好玩的在中間部分!下面正文開始。
這周給大家介紹一個好玩的庫 - face_recognition。
先來看下官方簡介:
face_recognition是一個強(qiáng)大、簡單、易上手的人臉識別開源項(xiàng)目,基于業(yè)內(nèi)領(lǐng)先的C++開源庫 dlib中的深度學(xué)習(xí)模型,用Labeled Faces in the Wild人臉數(shù)據(jù)集進(jìn)行測試,有高達(dá)99.38%的準(zhǔn)確率。但對小孩和亞洲人臉的識別準(zhǔn)確率尚待提升。github
圖像學(xué)領(lǐng)域的東西,我一直保持敬畏之心。未來,圖像學(xué)計算肯定是人類科技的重要突破口。
很慶幸的是,現(xiàn)在即使我們不用懂背后的具體算法實(shí)現(xiàn),也可以使用別人封裝好的功能來完成自己的需求,俗稱?"調(diào)庫小王子"?。
那么,今天就由"本調(diào)庫小王子"來給大家演示下這個庫的好玩之處。

2
環(huán)境準(zhǔn)備
開始之前,先介紹下實(shí)驗(yàn)環(huán)境以及準(zhǔn)備工作。
1. 環(huán)境
系統(tǒng) mac os
Python版本:3.7
開發(fā)工具:Pycharm
2.?安裝庫命令
pip install cmakepip install dlibpip install face_recognition
這里需要注意的是,安裝的先后順序,要按照這個來。同時,需要注意的是,有可能操作系統(tǒng)不同,帶來的安裝報錯也會不同,如果遇到錯誤,自行查找解決即可。
3
開玩!
1. 定位圖片中人臉的位置
首先,先找一張帶有正常人臉的圖片,比如下面這張,劉亦菲姐姐的照片:

然后只需要:

核心代碼2行:
#?加載圖片image?=?face_recognition.load_image_file("1.png")??# 識別人臉位置face_locations = face_recognition.face_locations(image)
具體代碼的功能,詳見注釋,你會得到這樣一張新生成的臉部圖片。

同時,控制臺打印出人臉?biāo)谠瓐D像的像素位置:

2. 提取人臉特征值
特征值是什么?這個詞可能第一眼看上去很陌生對吧,那我們換種方式來問,你說判斷一個人的特征有哪些?
我們可以通過一個人的眼睛,鼻子,嘴,下巴等器官,來分辨你是誰。
而這里的特征值,就是把我們分辨一個人的特征數(shù)據(jù)化了,變成了可以看到的數(shù)字。
這里有張 特朗普 的圖(我是不會告訴你們,我是特意作秀的~):

那來看下代碼,如何將面部的特征值用代碼提取到:

核心代碼:
image = face_recognition.load_image_file("2.png")# 識別圖片中人臉的面部特征face_landmarks_list = face_recognition.face_landmarks(image)for?face_landmarks?in?face_landmarks_list:????......
執(zhí)行之后,你會看到這樣的結(jié)果:

發(fā)現(xiàn)沒有,通過白色線條,將人物的臉部特征描繪了出來。同時看下控制臺輸出:

點(diǎn)開仔細(xì)看,它其實(shí)是由 key-value 組成的鍵值對,key作為特征名稱,而value則是具體數(shù)值。
比如 key 中的 chin 代表下巴, left_eyebrow 代表做眉毛,nose_tip 代表鼻尖,等等等等,具體你可以對照上圖畫出來的白線條來區(qū)分含義。
正因?yàn)橛刑崛√卣髦颠@個功能,那這個庫玩的方式可就多了!比如官方提供的例子,給總統(tǒng)安排上!來自動補(bǔ)個妝!
官方代碼:

補(bǔ)妝之后:


3. 此庫還有個功能,判斷不同照片是否是同一人。
這里用婚前的周董(周杰倫),和婚后的周董來做個實(shí)驗(yàn)。
婚前,頭文字D版周董?(jay-young.png):

婚禮上的周董 (jay-marry.png)?:

周董拍頭文字D時間:2005年。周董舉辦婚禮的時間:2015年。間隔時間:10 年。
但當(dāng)我執(zhí)行完代碼時,不得不佩服。。真是太強(qiáng)了。。來看下代碼和結(jié)果。


這段代碼,重復(fù)執(zhí)行了 3 遍,確實(shí)能識別出來。。
4
結(jié)語
好啦,本期文章到此結(jié)束。
關(guān)于這個庫的用法,相信有創(chuàng)意,有想法的人,一定可以玩出花樣,即使你不了解背后的算法實(shí)現(xiàn)。
如果你想學(xué)習(xí)本篇文章的源碼,圖片和源碼已經(jīng)上傳到 github 了。后臺回復(fù)關(guān)鍵詞 "圖像識別" ,即可獲得源碼地址。
如果覺得特朗普好看的話,別忘了留言區(qū)留個"漂亮"喲,哇哈哈哈!
如果Java在全世界突然被禁用會怎樣?
