最近幾天了解了一下人臉識別,應用場景可以是圖片標注,商品圖和廣告圖中有沒有模特,有幾個模特,模特的性別,年齡,顏值,表情等數據的挖掘。
基礎的識別用dlib來實現,dlib是一個機器學習的包,主要用C++寫的,但是也有Python版本。其中最流行的一個功能是Facial Landmark Detection, 配備已經訓練好的輪廓預測模型,叫shape_predictor_68_face_landmarks.dat, 從名字就可以看出,它可以檢測出面部的68個關鍵點,包括五官和外輪廓等。
安裝dlib會花比較長時間,因為依賴包有十個左右,裝完了dlib別忘了下載predictor數據文件。
wget
http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
pip install dlib
我在Adrian大神的代碼做了一點修改和封裝,先定位臉部的方框,box_face畫出方框,在此基礎上可選調用tag_face_number來標注臉的標號或者draw_face_landmarks來標注特征點,也可以直接調用count_faces來統計臉的個數,mark_all_faces給所有的臉把所有信息都加上。
拿九張模特圖來試試,半臉的不行,側的太厲害不行,其它都能識別出來。
一張圖多張臉的也毫無壓力
接下來性別和年齡就不好做了,必須通過機器訓練數據,還沒時間摸透,又想盡快拿到這些標注,于是先走捷徑去調face++的API, 注冊個賬號申請key和secret即可,免費賬戶有qps限制,且一張照片內最多支持五人識別。
官方的代碼示例極差,而且還是只支持Python2的, 收先要改寫一下。Attribute中有很多數據可以拿,你想的到的想不到的都有,甚至包括顏值,人種等。顏值還算靠譜,范冰冰90分,鳳姐49分,人種就難說了,歐美模特分分鐘當成Asian.
機器說: 性別女,表情偏悲傷,顏值89分,28歲,亞洲人,基本沒笑
{'image_id': 'wPGIyROqltTdjvRX3zopbg==', 'request_id': '1519574701,3113e37e-b000-4440-af08-871831cf1ba8', 'time_used': 355, 'faces': [{'attributes': {'emotion': {'sadness': 93.448, 'neutral': 4.114, 'disgust': 0.002, 'anger': 0.002, 'surprise': 2.414, 'fear': 0.002, 'happiness': 0.018}, 'beauty': {'female_score': 89.348, 'male_score': 88.925}, 'gender': {'value': 'Female'}, 'age': {'value': 28}, 'headpose': {'yaw_angle': 17.526142, 'pitch_angle': 11.047059, 'roll_angle': 19.623343}, 'smile': {'threshold': 30.1, 'value': 28.532}, 'ethnicity': {'value': 'Asian'}}, 'face_rectangle': {'width': 202, 'top': 103, 'left': 69, 'height': 202}, 'face_token': '7be6a72f497ed16cc7883424584052c5'}]}
機器說: 性別男,表情很快樂,顏值52分,61歲,黑人,大笑
{'image_id': 'YZ5wzeVDiAgCN9yIFX44Gw==', 'request_id': '1519574926,31f6d4d8-bdf6-4863-b29a-cf61ff04ffbe', 'time_used': 323, 'faces': [{'attributes': {'emotion': {'sadness': 0.0, 'neutral': 0.0, 'disgust': 0.0, 'anger': 0.0, 'surprise': 0.0, 'fear': 0.0, 'happiness': 99.999}, 'beauty': {'female_score': 62.678, 'male_score': 51.847}, 'gender': {'value': 'Male'}, 'age': {'value': 61}, 'headpose': {'yaw_angle': 2.6326802, 'pitch_angle': 11.909821, 'roll_angle': -11.707241}, 'smile': {'threshold': 30.1, 'value': 99.081}, 'ethnicity': {'value': 'Black'}}, 'face_rectangle': {'width': 208, 'top': 88, 'left': 120, 'height': 208}, 'face_token': '19067cf0f5358312c109a0e70bab62ae'}]}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
