人臉辨識演算法是指在偵測到人臉並定位臉部關鍵特徵點之後,主要的人臉區域就可以被裁切出來,經過預處理之後,饋入後端的辨識演算法。辨識演算法要完成人臉特徵的提取,並與庫存的已知人臉進行比對,完成最終的分類。人臉辨識演算法的原理:系統輸入一張或一系列含有未確定身分的人臉影像,以及人臉資料庫中的若干已知身分的人臉圖像或對應的編碼,而其輸出則是一系列相似度得分,顯示待辨識的人臉的身份。
本教學操作環境:windows7系統、Dell G3電腦。
人臉辨識(Facial Recognition),就是透過視訊擷取裝置取得使用者的臉部影像,再利用核心的演算法對其臉部的五官位置、臉型和角度進行計算分析,進而和自身資料庫裡已有的範本進行比對,後來判斷出使用者的真實身分。
人臉辨識演算法是指在偵測到人臉並定位臉部關鍵特徵點之後,主要的人臉區域就可以被裁切出來,經過預處理之後,饋入後端的辨識演算法。辨識演算法要完成人臉特徵的提取,並與庫存的已知人臉進行比對,完成最終的分類。
人臉辨識的演算法有 4 種:基於人臉特徵點的辨識演算法、基於整幅 人臉影像的辨識演算法、基於模板的辨識演算法、利用神經網路進行辨識的演算法。
人臉辨識演算法的原理:
系統輸入一般是一張或一系列含有未確定身分的人臉影像,以及人臉資料庫中的若干已知身份的人臉圖像或相應的編碼,而其輸出則是一系列相似度得分,表明待識別的人臉的身份。
人臉辨識的三個經典演算法
1、Eigenfaces(特徵臉)演算法
Eigenfaces是在人臉辨識的電腦視覺問題中使用的一組特徵向量的名稱,Eigenfaces是基於PCA(主成分分析)的,所以學習Eigenfaces需要我們了解PCA的原理。
基本概念
主成分分析(PCA)是一種矩陣的壓縮演算法,在減少矩陣維度的同時盡可能的保留原矩陣的訊息,簡單來說就是將n×m的矩陣轉換成n×k的矩陣,只保留矩陣中所存在的主要特性,因此可以大幅節省空間和資料量。 PCA的實現需要進行降維,也就是將矩陣變換,從更高的維度降到低的維度,然而PCA的降維離不開協方差矩陣。變異數是描述一維資料樣本本身相對於平均值的偏離程度,是一種用來度量兩個隨機變數關係的統計量,從角度來說,其夾角越小,值越大,方向越相近,也就是越正相關。協方差矩陣測量除了是兩個隨機變數的關係外,也是維度與維度之間的關係,而非樣本與樣本之間的關係。
學習一種新的東西,特別是知識,我們需要了解知識中的想法。我在了解和學習Eigenface演算法時它的思想是圖像識別首先要選擇一個合適的子空間,將所有的圖像集中到這個子空間中,然後在這個子空間中衡量相似性或者進行分類學習,再講子空間變換到另一個空間中,這樣的作用一是同一個類別的圖像離得更近,二是不同的類別的圖像會離得比較遠;這樣經過線性分類分開的圖像在新空間就能容易分開。同時特徵臉技術會尋找人臉影像分佈的基本元素,即人臉影像樣本集協方差矩陣的特徵向量,以此表徵人臉影像。人臉影像的基本元素有很多,例如眼、臉頰、唇等基本元素,這些特徵向量在特徵臉的圖像空間中對應生成的子空間被稱為子臉空間。
產生了子空間之後就要進行空間構造,那麼如何進行空間構造呢?首先要尋找人臉的共通性,其次是要尋找個體與共性的差異,還有就是要明白共性其實是空間,個體就是向量。利用協方差矩陣把目標集中所有人臉影像的特徵值分解,得到對應的特徵向量,這些特徵向量就是「特徵臉」。尋找特徵向量的特性,將其進行線性組合。在以每一個特徵子臉為基的空間,每個人臉就是一個點,這個點的座標就是每一個人臉在每個特徵基下的投影座標。
Eigenfaces演算法過程
# 獲得人臉圖像數據,將每個人臉圖像矩陣按行串成一維,每個人臉就是一個向量;
將M個人臉在對應維度上加起來,然後求平均得到「平均臉」;
將每個影像都減去平均臉向量;
計算協方差矩陣;
# 運用Eigenfaces記性人臉辨識;
#演算法實作過程;
訓練影像
求出平均臉
2、FisherFace演算法
FisherFace是Fisher線性判別在臉部辨識的應用。線性判別分析(LDA)演算法思想最早由英國統計與遺傳學家,現代統計科學的奠基者之一羅納德*費雪(Ronald)提出。 LDA演算法使用統計方法,嘗試找出物體間特徵的一個線性組合,在降維的同時考慮類別資訊。透過此演算法得到的線性組合可以用來作為一個線性分類器或實現降維。
基本想法
線性判別分析的基本想法是:將高維的模式樣本投影到低維最佳向量空間,以達到抽取重要分類資訊和壓縮特徵空間維度的效果,投影後保證模式樣本在新的子空間有最大的類間距離、最小的類內距離,即模式在該空間中有最佳的可分離性。理論和特徵臉裡用到的Eigenfaces有相似之處,都是對原有資料進行整體降維映射到低維度空間的方法,fisherfaces和Eigenfaces都是從資料整體入手而不同於LBP提取局部紋理特徵。
對降維後的樣本使用Fisher線性判別方法,確定一個最優的投影方向,建構一個一維的體徵空間,將多維的人臉影像投影到fisherfaces特徵空間,利用類內樣本資料形成一組特徵向量,這組特徵向量代表了人臉的特徵。 我們知道,演算法是在樣本資料對應到另一個特徵空間後,將類別內距離最小化,且類別間距最大化。 LDA演算法可以用作降維,演算法的原理和PCA演算法很相似,因此LDA演算法也同樣可以用在人臉辨識領域。透過使用PCA演算法來進行人臉辨識的演算法稱為特徵臉法,而使用LDA演算法進行人臉辨識的演算法稱為費雪臉法。LDA和PCA比較:
Fisherfaces演算法和Eigenfaces演算法比較:
Fisherface演算法流程
3、LBPH(Local Binary Patter Histogram)演算法
Local Binary Patterns Histograms即LBP特徵的統計直方圖,LBPH將LBP(局部二值編碼)特徵與影像的空間資訊結合在一起。如果直接使用LBP編碼影像用於人臉辨識。其實和不提取LBP特徵差別不大,因此在實際的LBP應用中,一般採用LBP編碼影像的統計直方圖作為特徵向量進行分類辨識。
原始的LBP算子定義為在33的視窗內,以視窗中心像素為閾值,將相鄰的8個像素的灰階值與其進行比較,若周圍像素值大於或等於中心像素值,則此像素點的位置被標記為1,否則為0。這樣,33鄰域內的8個點經比較可產生8位元二進位數(通常轉換為十進位數即LBP碼,共256種),即得到該視窗中心像素點的LBP值,並用這個值來反映該區域的紋理特徵。
LBPH的維度: 取樣點為8個,如果使用的是原始的LBP或Extended LBP特徵,其LBP特徵值的模式為256種,則一影像的LBP特徵向量維度為:64256 =16384維,而如果使用的UniformPatternLBP特徵,其LBP值的模式為59種,其特徵向量維度為:6459=3776維,可以看出,使用等價模式特徵,其特徵向量的維度大大減少,這意味著使用機器學習方法進行學習的時間將大大減少,而性能並沒有受到很大影響。
基本想法
建立在LBPH基礎上的人臉辨識法基本想法如下:首先以每個像素為中心,判斷與周圍像素灰階值大小關係,進行二進位編碼,從而獲得整個影像的LBP編碼影像;再將LBP影像分為個區域,取得每個區域的LBP編碼直方圖,進而得到整幅影像的LBP編碼直方圖,透過比較不同人臉影像LBP編碼直方圖達到人臉辨識的目的,其優點是不會受到光照、縮放、旋轉和平移的影響。
LBPH演算法「人」如其名,所採用的辨識方法是局部特徵提取的方法,這是與前兩種方法的最大差異。
LBPH 演算法流程
LBP特徵擷取:根據上述的均勻LBP算子處理原始影像;
LBP特徵匹配(計算直方圖):將影像分為若干個的子區域,並在子區域內根據LBP值統計其直方圖,以直方圖作為其判別特徵。
4、演算法的複現程式碼
#1)、EigenFaces演算法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
|
2 )、FisherFaces演算法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
|
3)、LBPH演算法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
|
擴展知識:人臉辨識演算法研究的困難點
#人臉辨識演算法研究已久,在背景簡單的情形下,大部分演算法都能很好的處理。但是,人臉辨識的應用範圍頗廣,僅是簡單影像測試,是遠遠不能滿足現實需求的。所以人臉辨識演算法還是存在很多的困難。
光照
光照問題是機器視覺中的老問題,在人臉辨識中的表現特別明顯,演算法未能達到使用的程度。
姿態
與光照問題類似,姿態問題也是人臉辨識研究中需要解決的技術困難。針對姿態的研究相對比較少,多數的人臉辨識演算法主要是針對正面,或接近正面的人臉影像,當發生俯仰或左右側而比較厲害的情況下,人臉辨識演算法的辨識率也會急劇下降。
遮蔽
對於非配合情況下的人臉影像擷取,遮蔽問題是一個非常嚴重的問題,特別是在監控環境下,往往被監控對象都會帶著眼鏡﹑帽子等飾物,使得被採集出來的人臉影像有可能不完整,從而影響了後面的特徵提取與識別,甚至會導致人臉辨識演算法的失效。
年齡變化
隨著年齡的變化,臉部外觀也在變化,特別是對於青少年,這種變化更加的明顯。對於不同的年齡段,人臉辨識演算法的辨識率也不同。
影像品質
人臉影像的來源可能多種多樣,由於擷取裝置的不同,所得到的人臉影像品質也不同,特別是對於那些低解析度﹑雜訊大﹑品質差的人臉影像如何進行有效的人臉辨識是個需要關注的問題。同樣的,對於高分辨影像,對人臉辨識演算法的影響也需要進一步研究。
樣本缺乏
基於統計學習的人臉辨識演算法是人臉辨識領域中的主流演算法,但是統計學習方法需要大量的訓練。由於人臉影像在高維度空間中的分佈是一個不規則的流行分佈,能得到的樣本只是對人臉影像空間中的一個極小部分的取樣,如何解決小樣本下的統計學習問題有待進一步的研究。
大量資料
傳統人臉辨識演算法如PCA、LDA等在小規模資料中可以很容易進行訓練學習。但是對於大量數據,這些方法其訓練過程難以進行,甚至有可能崩潰。
大規模人臉辨識
隨著人臉資料庫規模的成長,人臉演算法的效能將會呈現下降。
更多相關知識,請造訪常見問題欄位!
以上是人臉辨識演算法是指什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!