自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一種簡單而智能的方法:Python也能進行面部識別

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

本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。

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

感興趣區(qū)域

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

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

Haar庫

本項目中將使用現(xiàn)成的分類器:級聯(lián)的Haar分類器,這種特定的分類器將始終適用于灰度圖像。

一種簡單而智能的方法:Python也能進行面部識別

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

一種簡單而智能的方法:Python也能進行面部識別

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

使用Haar人臉特征分類器

用以下圖像為例:

一種簡單而智能的方法:Python也能進行面部識別

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

  1. import cv2 
  2.               group_of_people_image = cv2.imread('images/image7.jpg') 
  3.        frontal_face_classifier = cv2.CascadeClassifier('classifier/haarcascade_frontalface_default.xml') 
  4.        image_in_gray_scale = cv2.cvtColor(group_of_people_image,cv2.COLOR_BGR2GRAY) 
  5.               faces = frontal_face_classifier.detectMultiScale(image=image_in_gray_scale,scaleFactor=1.3, minNeighbors=6
  6.               for (x_axis, y_axis, weight,height) in faces: 
  7.            cv2.rectangle(group_of_people_image,(x_axis, y_axis), (x_axis + weight, y_axis + height), (255, 0, 0), 2) 

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

一種簡單而智能的方法:Python也能進行面部識別

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

面部特征檢測

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

一種簡單而智能的方法:Python也能進行面部識別

現(xiàn)在,使用算法來識別圖像中的面部特征點:

  1. import cv2 
  2.        import dlib 
  3.        import numpy as np 
  4.               initial_image = cv2.imread('images/image9.jpg') 
  5.        initial_image_in_rgb = cv2.cvtColor(initial_image,cv2.COLOR_BGR2RGB) 
  6.        reference_image = initial_image_in_rgb.copy() 
  7.               classifier_path = dlib.shape_predictor('classifier/shape_predictor_68_face_landmarks.dat') 
  8.        frontal_face_detector = dlib.get_frontal_face_detector() 
  9.               rectangles =frontal_face_detector(initial_image,1) 
  10.               for k, d inenumerate(rectangles): 
  11.            cv2.rectangle(reference_image,(d.left(), d.top()), (d.right(), d.bottom()), (255, 255, 0), 2) 
  12.               landmarks = [] 
  13.               for rectangle in rectangles: 
  14.            landmarks.append(np.matrix([[p.x, p.y] for p inclassifier_path(reference_image,rectangle).parts()])) 
  15.               for landmark in landmarks: 
  16.            for index, point inenumerate(landmark): 
  17.                point_center = (point[0, 0], point[0, 1]) 
  18.                cv2.circle(reference_image,point_center, 3, (255, 255, 0), -1) 
  19.                cv2.putText(reference_image,str(index), point_center, cv2.FONT_HERSHEY_COMPLEX, 3, (255, 255, 255), 2) 

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

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

一種簡單而智能的方法:Python也能進行面部識別

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

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

包含所有內(nèi)容的項目可從以下網(wǎng)址獲得:https://github.com/LimaGuilherme/facial-recognize

 

責任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2010-03-26 13:34:47

CentOS安裝

2021-09-10 09:09:58

ARTIF威脅智能框架安全工具

2021-10-26 16:49:34

系統(tǒng)性能定位

2017-11-23 08:24:31

人工智能網(wǎng)頁設(shè)計

2011-04-06 10:09:56

MySQL數(shù)據(jù)庫安裝

2022-02-25 14:42:09

OpenHarmon環(huán)境搭建鴻蒙

2020-12-09 10:15:34

Pythonweb代碼

2020-12-23 10:10:23

Pythonweb代碼

2022-06-22 09:44:41

Python文件代碼

2022-07-07 10:33:27

Python姿勢代碼

2019-03-04 21:46:59

人工智能面部識別AI

2022-05-12 09:00:00

人工智能面部識別智能監(jiān)控

2011-02-25 13:52:18

Proftpd管理

2018-12-14 14:30:12

安全檢測布式系測試

2011-02-25 13:52:18

Proftpd管理

2011-07-04 17:53:48

快速測試

2018-04-02 09:38:42

數(shù)據(jù)中心識別分析

2021-06-11 00:11:23

GPS數(shù)據(jù)協(xié)議

2021-12-29 08:00:00

勒索軟件安全漏洞

2011-07-04 10:17:38

JDBC
點贊
收藏

51CTO技術(shù)棧公眾號