AI實戰 動手實現人臉識別程式

2021-10-08 07:45:46 字數 1307 閱讀 6572

人臉識別在現實生活中有非常廣泛的應用,例如iphone x的識別人臉解鎖螢幕、人臉識別考勤機、人臉識別開門禁、刷臉坐高鐵,還有識別人臉虛擬化妝、美顏,甚至支付寶還推出了刷臉支付、建設銀行還實現了刷臉取錢……,可見人臉識別的用處非常廣。

既然人臉識別這麼有用,那我們能否自己來實現乙個人臉識別模型呢?

答案是肯定的。

接下來將在之前我們搭建好的ai基礎環境上(見文章:搭建ai基礎環境),實現人臉識別模型。

0、人臉識別主要流程

要識別一張人臉,一般需要經過以下步驟:(1)通過攝像頭或上傳等方式採集影象;(2)檢測影象裡面有沒有人臉,如果有就把人臉所在的區域圈出來;(3)對人臉影象進行灰度處理、雜訊過濾等預處理;(4)提取人臉的特徵資料出來;(5)將提取的人臉特徵資料與人臉庫進行匹配,輸出識別結果。主要流程如下圖所示:

下面將按步驟逐個介紹實現方式。

1、影象採集

本文採用opencv採集影象。

opencv是處理影象的流行工具,具備多種影象處理的能力,可跨平台執行在linux、windows、mac os等多個平台,使用c++編寫,提供python、c++、ruby等語言的介面。在python環境中,opencv和tensorflow能很好地相互配合,利用opencv可方便快速地採集、處理影象,配合tensorflow能很好地實現影象的建模工作。

(1)安裝opencv

在conda虛擬環境中,opencv的安裝方式如下:

conda install --channel opencv3

(2)採集影象

在opencv中呼叫攝像頭採集影象的方式如下:

# 1、呼叫攝像頭進行拍照

cap = cv2.videocapture(0)

ret, img = cap.read()

cap.release()

如果已經是有現成的,則在opencv中直接讀取就可以:

# 2、根據提供的路徑讀取影象

img=cv2.imread(img_path)

2、人臉檢測

人臉檢測的主要目的是檢測採集的影象中有沒有人臉,並確定出人臉所在的位置和大小。檢測人臉有很多種方式,下面介紹幾種常用的方法:

(1)使用opencv檢測人臉

opencv中自帶了人臉檢測器,基於haar演算法進行人臉檢測。haar演算法的基本思路是這樣的,通過使用一些矩形模板對影象進行掃瞄,例如下圖中的兩個矩形模板,中間一幅在掃瞄到眼睛時發現眼睛區域的顏色比周邊臉頰區域的顏色深,表示符合眼睛的特徵;右邊一幅在掃瞄到鼻樑時發現鼻樑兩側比鼻樑的顏色要深,符合鼻樑的特徵。同樣地,再通過其它的矩形模板進行掃瞄,當發現具備眼睛、鼻樑、嘴巴等特徵且超過一定的閾值時,則判定為是一張人臉。

技能節 AI人臉識別

我們收到技能節專案的通知是在兩周之前,專案要求做個人臉評分系統。ui展示 這個是乙個比較浮誇的ui介面,使用的是boostrapt 專案結構圖 com.detect包中 facedetect 人臉檢測 模組功能 2 獲取人臉檢測的資料資訊 在detect方法中 呼叫authservice類中的get...

小程式實現人臉識別功能

面向划水1 3年前端人員 幫助突破划水瓶頸,提公升思維能力 success function res fail function res reject res complete function res 複製 const getimgidentify function tokenurl,data w...

AI人臉識別的測試重點

之前的文章重點分享了ai的概念和應用,以及ai的架構與核心,結合到專案裡,最常見的 ai應用就是人臉識別,因此這篇文章從人臉識別的架構和核心上,來講講測試的重點。首先是人臉採集。安裝拍照攝像裝置之後,需要在動態的場景與複雜的背景中判斷是否存在人臉,並分離出這種面像。然後採集到人臉的 因此採集過程是非...