最近幾天了解了一下人臉識別,應(yīng)用場景可以是圖片標(biāo)注犯戏,商品圖和廣告圖中有沒有模特窥浪,有幾個模特,模特的性別笛丙,年齡,顏值假颇,表情等數(shù)據(jù)的挖掘胚鸯。
基礎(chǔ)的識別用dlib來實(shí)現(xiàn),dlib是一個機(jī)器學(xué)習(xí)的包笨鸡,主要用C++寫的姜钳,但是也有Python版本坦冠。其中最流行的一個功能是Facial Landmark Detection, 配備已經(jīng)訓(xùn)練好的輪廓預(yù)測模型,叫shape_predictor_68_face_landmarks.dat, 從名字就可以看出哥桥,它可以檢測出面部的68個關(guān)鍵點(diǎn)辙浑,包括五官和外輪廓等。
安裝dlib會花比較長時間拟糕,因為依賴包有十個左右判呕,裝完了dlib別忘了下載predictor數(shù)據(jù)文件。
wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
bunzip2 bunzip2 shape_predictor_68_face_landmarks.dat.bz2
pip install dlib
我在Adrian大神的代碼做了一點(diǎn)修改和封裝送滞,先定位臉部的方框侠草,box_face畫出方框,在此基礎(chǔ)上可選調(diào)用tag_face_number來標(biāo)注臉的標(biāo)號或者draw_face_landmarks來標(biāo)注特征點(diǎn)犁嗅,也可以直接調(diào)用count_faces來統(tǒng)計臉的個數(shù)边涕,mark_all_faces給所有的臉把所有信息都加上。
拿九張模特圖來試試褂微,半臉的不行功蜓,側(cè)的太厲害不行,其它都能識別出來宠蚂。
一張圖多張臉的也毫無壓力
接下來性別和年齡就不好做了式撼,必須通過機(jī)器訓(xùn)練數(shù)據(jù),還沒時間摸透肥矢,又想盡快拿到這些標(biāo)注端衰,于是先走捷徑去調(diào)face++的API, 注冊個賬號申請key和secret即可,免費(fèi)賬戶有qps限制甘改,且一張照片內(nèi)最多支持五人識別旅东。官方的代碼示例極差,而且還是只支持Python2的十艾, 收先要改寫一下抵代。Attribute中有很多數(shù)據(jù)可以拿,你想的到的想不到的都有忘嫉,甚至包括顏值荤牍,人種等。顏值還算靠譜庆冕,范冰冰90分康吵,鳳姐49分,人種就難說了访递,歐美模特分分鐘當(dāng)成Asian.
機(jī)器說: 性別女晦嵌,表情偏悲傷,顏值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'}]}
機(jī)器說: 性別男,表情很快樂描滔,顏值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'}]}