人臉識別中的 MATLAB 應用:代碼、描述和語法
已發表: 2020-06-23每次您用面部解鎖手機或通過高科技辦公室監控系統時,都會在後台運行複雜的面部識別技術。 那麼什麼是人臉識別,如何使用MATLAB進行人臉識別呢?
面部識別是通過技術識別人臉的過程。 面部識別系統使用計算機視覺和機器學習技術對從圖像和視頻中提取的面部特徵進行建模和分類。 面部識別算法提取和映射面部特徵,並將它們與已知面部的數據庫進行比較以找到最佳匹配。
資源
目錄
人臉識別中的 MATLAB
使用MATLAB代碼可以實現人臉識別。 MATLAB 內置的類和函數可用於檢測人臉、眼睛、鼻子和嘴巴。 計算機視覺系統工具箱的object vision.CascadeObjectDetector System基於Viola-Jones人臉檢測算法識別物體。
MATLAB 對象檢測器的描述
vision.CascadeObjectDetector 使用 Viola-Jones 算法來識別面部、眼睛、嘴巴、鼻子或上身。 自定義分類器可以使用 MATLAB 的 Image Labeler 進行訓練,並與 System object 一起使用。 那麼如何在圖像中檢測面部特徵或上半身呢? 以下是步驟:
- 第一步涉及創建 vision.CascadeObjectDetector 對象並設置其屬性。
- 在這一步中,使用參數調用對象(就好像它表現得像一個函數)。
閱讀: 15 個適合初學者的有趣 MATLAB 項目創意和主題

創建對象檢測器的語法
用於創建對象檢測器的語法如下:
- 檢測器 = vision.CascadeObjectDetector
- 檢測器 = vision.CascadeObjectDetector(mode1)
- 檢測器 = vision.CascadeObjectDetector(Name,Value)
- 檢測器 = vision.CascadeObjectDetector(XMLFILE)
語法說明
- detector = vision.CascadeObjectDetector:此語法用於創建使用 Viola-Jones 算法檢測對象的檢測器。
- detector = vision.CascadeObjectDetector(mode1):此語法用於創建檢測器,該檢測器配置為檢測由輸入向量定義的對象 - mode1。
- detector = vision.CascadeObjectDetector(Name,Value):此語法用於通過使用一個或多個名稱-值對來設置屬性,其中每個屬性名稱都包含在引號中。 例如:detector = vision.CascadeObjectDetector('ClassificationModel','UpperBody')
查看:機器學習項目創意
特性
除非另有說明,否則級聯對象檢測器的功能是不可調整的,這意味著在調用對像後,它們的值不能更改。 對像在被調用時被鎖定,並且它們的解鎖由“釋放”函數完成。
另一方面,可調屬性意味著它的值可以隨時更改。 所以,在我們了解使用 MATLAB代碼進行人臉識別之前,讓我們先看看一些特徵。
- ClassificationModel:定義為字符向量,該屬性負責控制要檢測的對象的類型。 檢測器的默認配置檢測人臉。
- MinSize:最小可識別物體的大小表示為二元素向量[高度寬度]。 除非指定屬性值,否則檢測器會將其設置為用於訓練分類模型的圖像大小。
- MaxSize:最小可識別對象的大小表示為二元素向量[height width] 。 除非指定屬性值,否則檢測器會將其設置為大小 (I)。
- ScaleFactor:它有一個高於 1.0001 的指定值。 此屬性用於在 MinSize 和 MaxSize 之間增量縮放檢測分辨率。
- MergeThreshold:它有一個指定的整數值,等於4。如果目標對象周圍有多個檢測,閾值定義了最終的檢測標準。
- UseROI:指定為false,該屬性可以設置為true,用於檢測輸入圖像中矩形感興趣區域內的物體。
使用對象檢測器的語法
- bbox = 檢測器(I)
- bbox = 檢測器(I,roi)
語法說明
- bbox =detector(I) 返回 bbox,一個M × 4 矩陣,定義包含檢測到的對象的“ M ”個邊界框。
- bbox =detector(I,roi) 用於檢測由 roi 指定的矩形感興趣區域內的對象。
輸入參數
- I — 輸入圖像:指定為真彩色或灰度 (RGB)。
- model - 分類模型:它被指定為一個字符向量並描述要檢測的對像類型。
- XMLFILE — 自定義分類模型:指定為 XML 文件,可以使用 OpenCV 訓練功能或 trainCascadeObjectDetector 函數創建。
- roi - 矩形感興趣區域:一個四元素向量 [ x y width height ] 用於指定此輸入參數。
輸出參數

bbox - 檢測:檢測作為M × 4 元素矩陣返回,其中每一行包含四元素向量 [ x y width height ]。
所有系統對象共有的對象函數
- 步驟:用於運行系統對象算法
- release:用於釋放系統資源
- reset:用於重置系統對象的內部狀態。
人臉識別MATLAB代碼
在本節中,我們將看到一個使用 MATLAB 代碼進行人臉識別的示例。
人臉檢測
資源
資源
step(Detector,I) 將返回包含被檢測對象的 [x,y,Height,Width] 的邊界框值:
資源
鼻子檢測
資源
資源
描述:
- 參數“鼻子”的傳遞表示感興趣的對像是鼻子。
- 默認的鼻子檢測語法是 vision.CascadeObjectDetector('Nose')
- 可以根據輸入圖像修改傳遞給 vision.CascadeObjectDetector 的默認參數值。
- 可以覆蓋“MergeThreshold”值以避免在目標對象周圍進行多次檢測(如上圖所示)。
眼睛檢測
資源
資源

口檢測
資源
資源
另請閱讀: MATLAB 中的 While 循環:您需要知道的一切
包起來
雖然人臉識別技術有利於驗證個人身份,但它確實會引發隱私問題。 由於該技術使用個人的面部指紋,因此通常被認為是對個人隱私、安全和安保的侵犯。 使用MATLAB進行人臉識別可用於安全性至關重要的多種情況。 從機場和辦公室到智能手機,面部識別已成為許多系統和組織不可或缺的組成部分。
如果您有興趣了解有關機器學習的更多信息,請查看 IIIT-B 和 upGrad 的機器學習和人工智能 PG 文憑,該文憑專為工作專業人士設計,提供 450 多個小時的嚴格培訓、30 多個案例研究和作業、IIIT- B 校友身份、5 個以上實用的實踐頂點項目和頂級公司的工作協助。
什麼是人臉識別?
人臉識別可用於防止身份盜用,以及通過姓名識別個人。 然而,鑑於人臉識別技術相對較新,並且還在不斷發展,因此了解人臉識別的基礎知識以有效地使用它非常重要。 人臉識別是指確定人臉圖像是否屬於已知人的過程。 人臉識別問題可以分為兩個任務:1)人臉檢測——在圖像中定位人臉,2)人臉識別——識別人臉。
什麼是matlab?
Matlab 是一種用於數值計算的編程語言。 基本上,它是一種矩陣編程語言。 它在科學和工程計算中被大量使用。 與其他編程語言不同,MATLAB 被設計為一種矩陣語言,適用於矩陣計算。 矩陣用於許多不同的方程,特別是在科學和工程計算中。 Matlab 是一種具有大量功能的高級編程語言。 它用於解決數學問題、分析數據和創建圖表。
Matlab 中的 Viola Jones 是什麼?
Viola Jones 算法用於人臉檢測和麵部表情識別。 Viola Jones 算法基於 Paul Viola 和 Michael Jones 於 2001 年首次引入的定向梯度直方圖 (HOG)。它用於計算機視覺、機器學習和圖像處理。 Viola Jones 算法提供了一個完整的物體檢測系統,可用於行人檢測、物體檢測或人體檢測。 Viola Jones 算法由特徵提取步驟、聚類步驟和對象分類步驟組成。