當前位置:
首頁 > 新聞 > 基於Python的開源人臉識別庫:離線識別率高達99.38%

基於Python的開源人臉識別庫:離線識別率高達99.38%

選自Github

機器之心編譯

參與:路雪


僅用 Python 和命令行就可以實現人臉識別的庫開源了。該庫使用 dlib 頂尖的深度學習人臉識別技術構建,在戶外臉部檢測資料庫基準(Labeled Faces in the Wild benchmark)上的準確率高達 99.38%。

該項目是要構建一款免費、開源、實時、離線的網路 app,支持組織者使用人臉識別技術或二維碼識別所有受邀人員。

有了世界上最簡單的人臉識別庫,使用 Python 或命令行,即可識別和控制人臉。

該庫使用 dlib 頂尖的深度學習人臉識別技術構建,在戶外臉部檢測資料庫基準(Labeled Faces in the Wild benchmark)上的準確率高達 99.38%。

這也提供了一個簡單的 face_recognition 命令行工具,你可以打開命令行中任意圖像文件夾,進行人臉識別!

項目地址:https://github.com/ageitgey/face_recognition#face-recognition

特徵

找出圖片中的人臉

找出下面圖片中所有的人臉:

基於Python的開源人臉識別庫:離線識別率高達99.38%

import face_recognition

找到並且控制圖像中的臉部特徵

找到並勾勒出每個人的眼睛、鼻子、嘴和下巴。

基於Python的開源人臉識別庫:離線識別率高達99.38%

import face_recognition

找出臉部特徵對很多重要的事情都非常有用。但是你也可以用它來做一些「蠢事」,比如數字化妝(美圖):

基於Python的開源人臉識別庫:離線識別率高達99.38%

識別圖片中的人臉

識別每張圖片中的人物。

基於Python的開源人臉識別庫:離線識別率高達99.38%

import face_recognition

你甚至可以使用該庫和其他的 Python 庫執行實時人臉識別:

基於Python的開源人臉識別庫:離線識別率高達99.38%

此處可查看代碼示例:https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py

安裝

要求:

  • Python 3+ 或 Python 2.7

  • macOS 或 Linux (Windows 未測試)

  • 還可在樹莓派 2+上運行(按照具體指令來安裝運行:https://gist.github.com/ageitgey/1ac8dbe8572f3f533df6269dab35df65)

  • 預配置的 VM 圖像同樣可用。

使用pin3從pypi安裝這一模塊:

pip3 install face_recognition

重要提示:pip 嘗試編譯 dlib 依賴時很可能會遇到一些問題。如果遇到問題,前往該地址(https://gist.github.com/ageitgey/629d75c1baac34dfa5ca2a1928a7aeaf)從來源(而不是 pip)中安裝 dlib,從而修復該錯誤。

手動安裝 dlib 後,再次運行 pip3 install face_recognition,完成安裝。

如果安裝方面還有問題,你還可以試試預配置的 VM(https://medium.com/@ageitgey/try-deep-learning-in-python-now-with-a-fully-pre-configured-vm-1d97d4c3e9b)

用途

命令行界面

安裝 face_recognition 時,你會得到一個名為 face_recognition 的簡單命令行程序,該程序可用於識別照片或裝滿照片的文件夾中的人臉。

首先,你需要提供一個包含圖片的文件夾,且每張圖片中的每個人你都認識。每個人有一個圖像文件,文件名就是圖片中人物的名字:

基於Python的開源人臉識別庫:離線識別率高達99.38%

然後,你需要再建一個文件夾,包含你想要識別的圖像文件:

基於Python的開源人臉識別庫:離線識別率高達99.38%

之後,你僅需要在已知人物文件夾和未知人物文件夾(或單個圖像)中運行 face_recognition 命令,該程序會告訴你每個圖像中的人物是誰:

$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures//unknown_pictures/unknown.jpg,Barack Obama

每張人臉的輸出結果只有一行,由文件名和找到的人物名組成,中間用逗號分隔。

unknown_person 是未與已知人物文件夾中任何照片相匹配的人臉。

如果你只想知道每張照片中的人物姓名,不在意文件名,那麼你可以採用以下做法:

$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d "," -f2

如果你的電腦配有多核 CPU,你就可以同時執行多個人臉識別任務。例如,如果你的系統有 4 個 CPU 核,你可以同時使用這 4 個 CPU 核,那麼同樣時間內處理的圖像數量是原來的四倍。

如果你使用 Python 3.4 或更新的版本,傳入--cpus <number_of_cpu_cores_to_use>參數:

$ face_recognition -cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/

你還可以傳入--cpus -1,來使用系統中所有的 CPU 核。

Python 模塊

使用 face_recognition 模塊,幾行代碼輕鬆控制人臉,so easy!

API 文件地址:https://face-recognition.readthedocs.io

自動定點陣圖像中人物的臉部特徵

import face_recognition

圖像人臉識別

import face_recognition

注意事項

該人臉識別模型基於成年人照片訓練,因此對兒童照片的識別效果不好。該模型默認比較閾值是 0.6,容易混淆兒童的面部。

將該模型配置到雲主機(Heroku、AWS 等)

face_recognition 賴以存在的 dlib 是用 C++語言寫的,因此將該內置該模型的 app 配置到 Heroku 或 AWS 等雲主機提供商就很複雜。在該 repo 中有一個 Dockerfile 示例,展示如何在 Docker 容器中運行內置 face_recognition 模型的 app(詳見該網址:https://www.docker.com/)。參考該示例,您能夠將該模型配置到任何支持 Docker 圖像的服務。

常見問題

問題:使用 face_recognition 或運行樣本時,出現 Illegal instruction (core dumped)。

解決方案:dlib 需要在 SSE4 或 AVX 支持下編譯,但是你的 CPU 太舊,無法支持編譯。你需要根據此處(https://github.com/ageitgey/face_recognition/issues/11#issuecomment-287398611)所示修改代碼,然後對 dilb 進行重新編譯。

問題:運行攝像頭樣本時,出現 RuntimeError: Unsupported image type, must be 8bit gray or RGB image.

解決方案:你的攝像頭可能並未在 OpenCV 上正確設置。點擊此處(https://github.com/ageitgey/face_recognition/issues/21#issuecomment-287779524)了解更多。

問題:運行 pip2 install face_recognition 時出現 MemoryError。

解決方案:face_recognition_models 文件太大,不適合你可用的 pip 緩存內存。試一下 pip2 --no-cache-dir install face_recognition,解決該問題。

問題:AttributeError: "module" object has no attribute "face_recognition_model_v1"

解決方案:你安裝的 dlib 版本過舊,需要 19.4 或者更新的版本。請升級 dlib 版本。

問題:TypeError: imread() got an unexpected keyword argument "mode"

解決方案:你安裝的 scipy 版本過舊,需要 0.17 或者更新的版本。請升級 scipy 版本。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

從深度鏈接到語音助手,奇點機智想要撬動APP時代的搜索生意
螞蟻金服:只做 Tech,支持金融機構做 Fin
CVPR2017李飛飛總結8年ImageNet歷史,宣布挑戰賽最終歸於Kaggle
用於機器閱讀理解的遷移學習:微軟提出通用型SynNet網路
如何使用深度強化學習幫助自動駕駛汽車通過交叉路口?

TAG:機器之心 |

您可能感興趣

定價4500!4.8寸+人臉識別,iPhoneSE2基本確定
999 歐元!OPPO Find X 登場:93.8% 屏佔比+3D 人臉識別
諾基亞 7獲升Android 8.1:終於支持人臉識別
華為Mate20 Pro確定:人臉識別+麒麟980,價格亮了
華為Mate20 Pro曝光:配6.25英寸劉海屏,支持3D人臉識別
小米Note4正式曝光,高通670+128GB,支持人臉識別,主打高配低價
不一樣,nova 3e全面屏+人臉識別 4GB+128GB,僅2199
致敬iPhone X,華為P11將搭載18.7:9異形全面屏,人臉識別+三攝
vivoU1最低售價799;MacBook概念圖:美人臉識別
低配版小米mix2:雙攝+18W快充+人臉識別+128G,起售價低至999
降價僅售679元,前置雙攝+人臉識別+4000mAh
華為Mate20Pro敲定:人臉識別+麒麟980,價格亮了!
驍龍626+HIFI+人臉識別,值1699?
華為Mate 20 Pro人臉識別升級:支持第2面容
漲至3299元!小米7/7 Plus曝光:屏下指紋+人臉識別
iOS 11.3泄漏天機:新iPad將支持人臉識別
vivo Z3性價比殘暴!驍龍710+紅外人臉識別僅1598
實錘!華為Mate 20 Pro性能配置爆表:0.5秒人臉識別解鎖
99%好評!人臉識別+劉海屏vivo Y85僅售1598元
夏普屏+驍龍+6G+64G+人臉識別+Type-c,另類全面屏手機降至1499