在「始終如一 | 虛擬變量與美麗的「虛擬變量陷阱」一文中,我曾經給大家簡單介紹過Hamermesh and Biddle(1994)關於相貌吸引力對工資的影響的那篇論文。在1994年那個年代,想必作者也是被迫使用離散型變量去度量相貌。離散型變量不像連續型變量那樣具有足夠的變異性,因而我們能從中獲取的信息自然也都是「大打折扣」的,並且像「好看」、「比較好看」和「一般」這種詞彙也未免太為主觀。在人工智能和機器學習技術飛速發展的今天,如果我們依然想要研究」相貌對XX的影響「,那麼大可不必再去使用離散型變量度量相貌,我們已經可以做到使用連續型變量去度量相貌了。百度AI開放平台為我們提供了人臉檢測的API接口,可以實現人臉打分的功能。只要你有照片,那麼就可以據此對人臉進行客觀地打分,這極大方便了我們做相貌吸引力的相關研究。最近電視劇《夢華錄》可謂是太火了,6月開播以來就拿下了播放量和網絡熱度的雙冠軍,這是神仙姐姐劉亦菲時隔16年再次出演古裝劇,不少觀眾直呼爺青回,畢竟神仙姐姐是好幾代人的回憶啊!先看看「鄉野村婦」趙盼兒(劉亦菲 飾)小姐姐的顏
「鄉野村婦」也成為了一個新梗

趙盼兒(劉亦菲 飾)
輸出結果
年齡:22人臉評分:63.74性別:female臉型:square看到這個結果,我真想把百度的產品經理和算法工程師拉過來打一頓,這深度學習算法怎麼調的?看來是需要來我財大統數深造一下了!
我猜想是不是拍照角度的問題,於是我還嘗試了很多其他角度的照片。

輸出結果
年齡:23人臉評分:80.1性別:female臉型:heart
輸出結果
年齡:22人臉評分:73.55性別:female臉型:heart
輸出結果
年齡:22人臉評分:74.22性別:female臉型:heart
輸出結果
年齡:23人臉評分:76.83性別:female臉型:heart讓我們再換顧千帆指揮使的照片試試
陳曉的古裝還是那麼帥氣驚艷!

顧千帆(陳曉飾)
輸出結果
年齡:23人臉評分:71.21性別:male臉型:round
輸出結果
年齡:22人臉評分:82.06性別:female臉型:heart
輸出結果
年齡:23人臉評分:88.05性別:female臉型:oval第一步 獲取access_token想要調用百度人臉檢測的API實現人臉打分,我們首先需要註冊成為百度AI開放平台的開發者,然後創建一個應用,獲取API Key和Secret Key,將其複製粘貼到下方代碼指定位置就好,執行下面的代碼就可以生成一個access_token(用戶身份驗證和授權的憑證,發送請求需要)。注意:access_token的有效期為30天,切記需要每30天進行定期更換,或者每次請求都拉取新token。
importrequestsAPI_Key='複製你的APIKey到這裡'Secret_Key='複製你的SecretKey到這裡'host='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}'.format(API_Key,Secret_Key)response=requests.get(host)access_token=response.json()['access_token']print(access_token)說明:開發者功能可免費註冊,個人用戶調用量免費,每秒可調用兩次,輕度使用完全足夠了,如果需更快的調用速度,那麼就需要付費購買,讓我們高呼一聲「百度良心」。更多注意事項大家可以參見百度官方註冊教程http://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3。第二步 圖片轉為Base64編碼百度人臉檢測對圖片格式有要求,要求把圖片轉換為Base64編碼,所以我們可以調用python中base64庫實現圖片轉碼。大家只需要把圖片的本地保存路徑複製到下方代碼指定位置就好。importbase64img_src=r'把圖片保存路徑複製到這裡'withopen(img_src,'rb')asf:base64_data=base64.b64encode(f.read())第三步 人臉檢測與屬性分析在完成獲取access_token和圖片轉碼兩步後,我們就可以發送請求、獲取響應,實現人臉打分功能了。在這裡,請求地址request_url、請求頭headers和請求參數params都只需按照百度人臉檢測API說明文檔(https://ai.baidu.com/ai-doc/FACE/yk37c1u4t)裡面的格式即可,在使用requests.post()方法發送請求後,百度API服務器就會將人臉檢測結果(json格式數據)返回給我們,我們只需要使用response.json()方法將json字符串類型的響應內容轉換為python對象(字典格式),然後提取我們想要的內容的就好。request_url="https://aip.baidubce.com/rest/2.0/face/v3/detect"params={"image":base64_data,"image_type":"BASE64","face_field":"age,beauty,expression,face_shape,gender,glasses,emotion,face_type,spoofing","face_type":"LIVE"}request_url=request_url+"?access_token="+access_tokenheaders={'content-type':'application/json'}response=requests.post(request_url,data=params,headers=headers)face_result=response.json()print("年齡:",face_result['result']['face_list'][0]['age'])print("人臉評分:",face_result['result']['face_list'][0]['beauty'])print("性別:",face_result['result']['face_list'][0]['gender']['type'])print("臉型:",face_result['result']['face_list'][0]['face_shape']['type'])在此,我就只提取了年齡、人臉評分、性別和臉型的信息,除此之外,我們還可以獲取人臉位置、情緒、表情和眼睛狀態等信息。我們最關心的當然就是人臉評分了,這個評分的取值範圍在0-100之間,越大表示越美。有關百度人臉檢測的更多內容請參見百度人臉檢測API說明文檔:https://ai.baidu.com/ai-doc/FACE/yk37c1u4t需要特別說明的是,v3版本的返回參數並沒有人臉打分,使用人臉打分功能可以用v2版本。圖片來源 | 《夢華錄》劇照