如何使用Python進行面部識別?

2021-01-08 讀芯術

全文共2841字,預計學習時長8分鐘

圖源:unsplash

本文將介紹圖像處理中的一些重要概念,除了具體解釋每個步驟之外,還將提供一個在Python中使用Cv2和DLib庫輕鬆進行人臉識別的項目。

感興趣區域

在使用圖像進行面部分析時,最重要的概念之一是定義感興趣區域(ROI),我們必須在圖像中定義一個特定的部分,在那裡篩選或執行一些操作。

例如,如果我們需要篩選汽車的車牌,我們的感興趣領域只停留在車牌上,那麼街道、車身和圖片中出現的任何東西都只是輔助部分。在本例中,我們將使用opencv庫,該庫支持對圖像進行分區並幫助我們確定感興趣領域。

Haar庫

本項目中將使用現成的分類器:級聯的Haar分類器,這種特定的分類器將始終適用於灰度圖像。

該算法生成了一個幾何圖形,該幾何圖形將識別與我們所分析的相似點。因此在本例中,它將嘗試尋找人臉圖案,即眼睛、鼻子和嘴巴。這種分析方法最大的問題是產生幻想性視錯覺。

圖源:unsplash

你看到的是人眼還是幾扇窗戶?在希臘詞源學中,幻想性視錯覺是一種人類的特徵。從童年起,我們的大腦就被編程來識別物體、圖像中的人臉。利用我們先前獲得的經驗,我們自己的大腦會根據我們所認識到的「人類」特徵來尋找一種模式,增加新的人臉面孔。

使用Haar人臉特徵分類器

用以下圖像為例:

來看看識別這張圖片中的人臉代碼:

import cv2

group_of_people_image = cv2.imread('images/image7.jpg')

frontal_face_classifier = cv2.CascadeClassifier('classifier/haarcascade_frontalface_default.xml')

image_in_gray_scale = cv2.cvtColor(group_of_people_image,cv2.COLOR_BGR2GRAY)

faces = frontal_face_classifier.detectMultiScale(image=image_in_gray_scale,scaleFactor=1.3, minNeighbors=6)

for (x_axis, y_axis, weight,height) in faces:

cv2.rectangle(group_of_people_image,(x_axis, y_axis), (x_axis + weight, y_axis + height), (255, 0, 0), 2)

該算法將圖像轉換為灰度圖像,如前所述,這是分類器操作的一個基本步驟,然後我們使用dectedMultiScale函數搜索圖像中的人臉,並通過繪製矩形來顯示圖像的位置,當定位人臉時結果如下:

我們能夠準確地分析兩張出現的臉(採用矩形的方式將人臉框起來),有兩個人完全正面地露出他們的臉,人臉完全顯現,所以我們可以清楚地看到他的臉;另一個人只露出了面部的一部分,所以我們沒有得到準確的信息來確認這是一張完整的人臉。

面部特徵檢測

Dlib是一個擁有一些分類器的庫,可以幫助我們檢測人臉的某些部分,例如:眼睛、眉毛、鼻子和洋娃娃的區域。以下圖為例:

現在,使用算法來識別圖像中的面部特徵點:

import cv2

import dlib

import numpy as np

initial_image = cv2.imread('images/image9.jpg')

initial_image_in_rgb = cv2.cvtColor(initial_image,cv2.COLOR_BGR2RGB)

reference_image = initial_image_in_rgb.copy()

classifier_path = dlib.shape_predictor('classifier/shape_predictor_68_face_landmarks.dat')

frontal_face_detector = dlib.get_frontal_face_detector()

rectangles =frontal_face_detector(initial_image,1)

for k, d inenumerate(rectangles):

cv2.rectangle(reference_image,(d.left(), d.top()), (d.right(), d.bottom()), (255, 255, 0), 2)

landmarks = []

for rectangle in rectangles:

landmarks.append(np.matrix([[p.x, p.y] for p inclassifier_path(reference_image,rectangle).parts()]))

for landmark in landmarks:

for index, point inenumerate(landmark):

point_center = (point[0, 0], point[0, 1])

cv2.circle(reference_image,point_center, 3, (255, 255, 0), -1)

cv2.putText(reference_image,str(index), point_center, cv2.FONT_HERSHEY_COMPLEX, 3, (255, 255, 255), 2)

我們使用的是人臉68個特徵分類器,它試圖更精確地理解點面,這給了我們更多的選擇去分析結果,其缺點是速度有點慢。所以必須劃定一個矩形來確定我們的臉可能在哪裡,特徵是我們可以識別的人臉特徵,包括臉、嘴、眼睛、眉毛。

一旦用矩形的方式框出了臉,就可以使用功能部件將這些特徵返回,最後將得到一些可視化的東西去生成一個帶有面部點的圖像。結果是:

這些點對於幫助識別表情很重要,例如我們可以識別出這個男孩睜著眼睛,閉著嘴巴。把這看作是一種情緒的表現,可以說這個男孩很焦慮。當一個人微笑時,它可以幫助理解這種情緒可能表達的是幸福。

上述例子向我們展示了,Python可以識別出我們感興趣的區域,在本文中就是人臉識別。這個項目還可以擴展到使用機器學習來檢測,探究圖像中的人是否感到快樂、悲傷或者憂慮。

包含所有內容的項目可從以下網址獲得:https://github.com/LimaGuilherme/facial-recognize

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • Python超級教程,使用Python進行檢測面部特徵
    今天,我們將學習如何使用圖像來檢測面部並提取諸如眼睛,鼻子,嘴巴等面部特徵。作為捕捉面部的預處理步驟,我們可以做很多令人難以置信的事情,例如捕捉面部用於標記照片中的人物(手動或通過機器學習),創建效果以「增強」我們的圖像(類似於Snapchat等應用中的圖像),對面部進行情感分析等等。
  • 拉斯維加斯警察使用 "不完全匹配 "的面部識別照片進行犯罪追捕
    當部署在警察監控和調查中時,面部識別系統很少有如此簡單的起點。被稱為探頭圖像的搜索材料--更多的時候是從顆粒狀的閉路電視錄像中提取的,而且嫌疑人有戴帽子的傾向,不直接看著攝像頭。正如關於一個流行的警方面部識別系統的新記錄所顯示的那樣,探頭圖像的質量極大地影響了系統返回可能匹配的可能性。但這並不意味著警方無論如何都不會使用糟糕的圖片。
  • 使用Python,Keras和OpenCV進行實時面部活體檢測
    你可以在網際網路上找到的大多數面部識別算法和研究論文都受到照片攻擊。這些方法在檢測和識別來自網絡攝像頭的圖像、視頻和視頻流中的人臉方面非常有效。然而,他們不能區分活人的臉和照片上的臉。這是因為這些算法適用於2D frames。現在讓我們想像一下,我們想要實現一個面部識別開門器。
  • 如何用Python實現類FaceID的人臉識別?
    本文介紹了如何使用 Python 在 Keras 框架上實現 FaceID,對 iPhone X 這一新解鎖機制進行了反向工程和概念驗證。想知道 FaceID 背後人臉識別模塊的原理,想自己動手實現帶人臉深度特徵的網絡,不妨閱讀此文。
  • 面部識別的工作原理是怎樣的
    面部識別系統使用生物識別技術從照片或視頻中映射面部特徵。它將信息與已知面孔的資料庫進行比較以找到匹配項。 面部識別可以幫助驗證個人身份,但同時也會引發隱私問題。 如果隱私對您很重要,則您可能希望對如何使用您的個人信息(即數據)進行控制。 面部識別如何工作 您可能擅長識別面孔。您可能會發現識別家人、朋友或熟人的面孔非常容易。您熟悉它們的面部特徵,他們的眼睛、鼻子、嘴巴,以及它們如何結合在一起。 面部識別系統就是這樣工作的,但是算法規模很大。在您看到人臉的地方,識別技術可以看到數據,可以存儲和訪問該數據。
  • 面部識別的「骯髒小秘密」:數百萬照片未經同意被使用
    面部識別技術可以讓您輕鬆登錄到iPhone,可以通過人群跟蹤犯罪分子,也可以識別商店中的忠實客戶。基於算法的面部識別技術雖不完美但快速迭代。算法會學習如何識別人臉以及數百種獨特的識別方法,為了做到這一點,必須為這些算法提供數十萬個不同的面部圖像。
  • 洛杉磯警察局已禁止使用商業面部識別技術
    據外媒BuzzFeed News報導,在記者報導洛杉磯警察局警員使用一款名為「Clearview AI」的爭議軟體後,該警察局已經禁止警員使用商業面部識別系統。洛杉磯警察局是美國第三大警察部門,其於11月13日頒布了暫停使用第三方面部識別軟體的命令。
  • 新加坡將使用面部識別身份
    據外媒報導,新加坡將成為世界上第一個在其國民身份計劃中使用面部驗證的國家,目前該技術已經在一家銀行進行了試驗,即將在全國範圍內推廣。新加坡當局表示,這是首次使用基於雲的人臉驗證來確保使用國家數字身份計劃的人的身份安全
  • 戴口罩還能進行面部識別?目前只有蘋果做到了!
    編譯/藍科技蘋果最新為iPhone和iPad拋出一項作業系統更新,解決了戴口罩還能進行面部識別的技術壁壘。許多手機都支持面部解鎖功能,但99%的都承認其安全性比不過PIN解鎖或圖案解鎖。僅有一家完全相信自己的系統並放棄了指紋解鎖,那就是iPhone,在X系列開始其FaceID變得強大而高效,可以快速識別並在終端本身上維護數據,無需將其暴露於雲中,且能進行學習。
  • Facebook照片使用面部識別來簡化標記
    近期涉及Facebook照片使用面部識別來簡化標記內容備受矚目,很多讀者對此也很有興趣,現在給大家羅列關於Facebook照片使用面部識別來簡化標記最新消息。為了使每天向其社交網絡上的照片貼上1億個標籤的用戶的生活更加輕鬆,Facebook在12月15日表示,正在添加使用面部識別軟體的標籤建議。新的標記建議可幫助用戶輕鬆標記包含許多同一個人的一批照片。
  • 如何在iPad Pro上設置面部識別及在iPhone上添加第二個
    無論你是第一次使用iPad Pro設置面部識別標識,還是已經用了有一段時間了。今天我們還是來講講如何在新iPad Pro上設置面部識別標識。2018年新發布的 iPad Pro經過了一系列新升級,其中一個方便的新功能是Face ID。
  • python乾貨:如何使用Python對音頻進行特徵提取?
    內容如下:聲音信號介紹使用Python對音頻進行特徵提取使用Keras對歌曲的題材進行分類主要涉及的背景知識有:傅立葉變換採樣定理Python機器學習聲音基礎知識開發工程師,這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。
  • 口罩使得蘋果的面部識別技術無法使用,華為推出全屏指紋識別技術
    蘋果創造了面部識別技術來為iphone提供安全保障,這一創新在於它將安全與我們使用手機的方式緊密結合在一起。不再需要用你的手去觸摸指紋識別器或輸入密碼,你只要注視屏幕就可以解鎖你的手機、自動填寫密碼、完成支付——所有這些都自動完成,無需任何手動操作。現在,在手機安全方面,華為也想做同樣的事情——只是方式不同而已。據Android Authority報導,華為已申請專利,將在下一代智慧型手機中引入全屏指紋識別,華為認為這將比面部識別更加流暢。
  • 使用Python+OpenCV+Dlib實現人臉檢測與人臉特徵關鍵點識別
    今天,我們將學習如何檢測圖像中的人臉並提取面部特徵,如眼睛、鼻子、嘴巴等。我們可以將這些信息作為一個預處理步驟來完成,例如捕捉照片中人物的人臉(手動或通過機器學習),創建效果來「增強」我們的圖像(類似於Snapchat等應用程式中的效果),對人臉進行情感分析等等。
  • python初識百度文字識別
    哈羅,今天問學君看了百度強大的AI開放平臺,忍不住要給大家分享一下關於如何使用python調用百度文字識別API完成圖片文字識別。首先,你需要登錄百度AI開放平臺,然後選擇你感興趣的AI技術和開發語言,下面以文字識別和python語言舉例快速入門安裝OCR Python SDKOCR Python SDK目錄結構├── README.md├── aip //SDK目錄│ ├── __init__.py //導出類│ ├── base.py
  • 使用Python和Tesseract來識別圖形驗證碼
    在這裡,我分享一下自己使用Python和開源的tesseract OCR引擎做驗證碼識別的經驗,並提供相關的原始碼和示例供大家借鑑。Tesseract的OCR引擎最早是HP實驗室開發的,曾經是 OCR業內最準確的三款識別引擎之一。2005年該引擎交給了Google,作為開源項目發布在Google Project上了。Tesseract提供獨立程序和API兩種形式供用戶使用。純白色背景、字符規整無幹擾像素的驗證碼圖片可以直接調用tesseract程序來進行識別。
  • 使用Fast.ai和OpenCV進行視頻面部表情和意識檢測
    使用fast.ai庫訓練面部表情分類模型,從您的網絡攝像頭或視頻文件中讀取面部表情,最後添加面部標記以跟蹤您的眼睛以確定意識!在進行該項目時,面臨的一大挑戰是弄清楚如何使用經過訓練的分類器,使其能夠有效地用於實時視頻和視頻文件。第一步是用卷積神經網絡訓練圖像分類模型。
  • 教你怎樣用python進行語音識別
    例如Cloud Speech API,但是需要你使用google雲平臺的前提。speech recognition對於python這一非常成熟的膠水語言,在網上找一些現成的工具包真的不是一個太難的問題。
  • 面部識別,你知道多少?
    隨著科技的發展,全民素質的提升,面部識別這一技術早已走進千家萬戶。就拿最簡單的例子來說手機的解鎖,網銀支付等等,這讓高科技不再是高高在上的存在,而是每個人都能使用的。那麼今天小編就要帶大家來仔細探討一下這一技術——面部識別。
  • python的這個庫可以對圖片中的文字進行識別
    Tesseract是一個用於文字識別的工具,我們結合Python使用可以很快的實現文字識別接下來我們就可以進行文字識別了。text.txt', lang='chi_sim')print(string)但是這樣自己寫一個txt文件難免有些麻煩,因此我們又可以進行如下修改