天天看點

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

好吧,夥計們,我回來了。說我拖更不寫文章的可以過來用你的小拳拳狠命地捶我胸口....

那麼今天我們來講關于使用python+opencv+face++來實作人臉驗證及人臉解鎖。代碼量同樣不多,你可以将這些代碼運用在其它一些智能領域,如智能家居,進門的時候判斷你是誰,也可以加入機器學習判斷來的人是客人還是熟人。在講之前我們會先适當的拓撲一下關于人臉識别的知識點。OK廢話少說下面開始正是話題。

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

解鎖原理:

原理呢,其實很簡單,沒有那麼複雜難懂(當然除了官方語言之外)。我們先來通俗的說一下利用Face++實作人臉比對的原理。給大家推薦一個學習交流的地方:719+139+688,現在你打開了攝像頭,然後恰好你按下了抓取。抓取之後,你的臉部圖檔會上傳到遠端伺服器,然後服務端會提取你的面部情況生成一個唯一的指紋(辨別碼),這個指紋在Face++裡面叫做face_token這個我們後面會繼續講到,這個指紋就代表你目前的身份。

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

上傳完經過服務端分析收錄之後,服務端會通過json發送給你一個資料包,這個資料包裡面有你面部全部特征。

當你拿到服務端傳回過來的json之後,将face_token提取出來(這很重要,face_token相當于一把鑰匙)然後你把拿到的face_token放到python的if裡面去判斷如果face_token相符就驗證成功,如果不相符那麼解鎖失敗。

環境拓撲:

作業系統:windows7

Python版本:python2.7

OpenCV版本:2.x

Face++接口

實作方案:

1.上傳面孔(這個上篇文章我們已經實作攝像頭抓取,這篇文章我們不做啰嗦,直接用一張面部圖檔代替)上傳後json會傳回面部指紋(face_token)

2.建立人臉集合,并将步驟1傳回的face_token加入到集合中去

3.通過python的if判斷是否收錄目前面孔

代碼部分:

1.擷取面孔face_token:

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

這裡重點說一下request裡面的内容:

api規定是要post送出,是以這裡用了request.post()

傳輸的内容為請求的URL,圖檔路徑(必填!可以是本地絕對路徑,也可以是網絡圖檔分别為image_file、image_url)data資料也就是payload裡面的參數:

apikey/apisecret必填 沒有的自行申請

return_attributes選填 裡面有傳回的資料 有年齡性别等等

return_landmark選填 是否檢測傳回人臉關鍵點0為不傳回1為檢測83個關鍵點2為檢測106個關鍵點

運作效果:

我們随便找一張照片(對像素有要求的 切記 不然有的可能報錯)

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:
AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

我們可以看到這個傳回的json包裡有很多的值,我們這裡最重要的就是拿到這張臉的face_toen,然後儲存起來,收錄到服務端的時候需要。

注:這裡可能有些朋友在網上随便找的照片可能報錯,這很可能是圖檔像素的問題,盡量找高清的,運作後,人臉部分會被綠框辨別。

2.建立人臉集合,并加入face_token

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

face_tokens裡面填的就是剛才奧巴馬圖檔傳回的face_token,不要填錯哦~

面部集合的名字也要記住,待會查詢的時候也會用到的。

将上一部分擷取到的face_token加入到一個建立的人臉集合中。

下次人臉對比将直接跟服務端收錄的做指紋對比。這裡再簡單的點一下payload裡面的幾個參數:

display_name:人臉集合的名字

outer_id:FaceSet全局自定義辨別

force_merge:

0:不将 face_tokens 加入已存在的 FaceSet 中,直接傳回 FACESET_EXIST 錯誤

1:将 face_tokens 加入已存在的 FaceSet 中

face_tokens:傳入的人臉辨別

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

運作完畢後,會傳回一個faceset_token,這個地方我們要記錄下來,因為我們已經把我們的奧巴馬的facetoken上傳到服務端的我們建立的集合裡了,這個faceset token就是我們的面部集合id 或者說是一個相冊都可以。

3.判斷是否為管理者:

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

我們将奧巴馬的面部值(face token)放入python的if裡面,将要去查詢的面部集合(相冊)設定為我們前面擷取的faceset tokens,然後我們随便照一張照片比對一下。

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

筆記本攝像頭太low,很難識别,湊合看下效果吧,直接識别人臉還行。

AI新時代-大神教你使用python+Opencv完成人臉解鎖(附源碼)解鎖原理: 環境拓撲: 實作方案: 代碼部分:

完成~

當然,按理說到現在應該開始有噴子來噴,用圖檔解鎖不安全了吧,沒關系,如果你想做的更進階,完全可以加上一些搖頭 眨眼等等亂七八糟的驗證,安全性是可以做到的。