MATLAB 人脸识别矩阵(矩阵、相似度)
目錄
使用MATLAB矩陣運(yùn)算進(jìn)行有關(guān)人臉識(shí)別算法方案設(shè)計(jì)
1.運(yùn)算過程:
(1)變量注釋
(2)計(jì)算結(jié)果及過程分析
2.源代碼:
3.附加部分
(1)條件改變
(2)運(yùn)行結(jié)果
(3)改變條件后的源代碼
使用MATLAB矩陣運(yùn)算進(jìn)行有關(guān)人臉識(shí)別算法方案設(shè)計(jì)
(人臉識(shí)別是一個(gè)復(fù)雜問題,涉及到多種技術(shù)和算法,機(jī)器學(xué)習(xí)算法是當(dāng)前人臉識(shí)別的關(guān)鍵算法。本示例用簡化方式,通過矩陣計(jì)算人臉比對(duì)過程,目的是練習(xí)圖像處理命令和矩陣計(jì)算方式)。建模:在人臉識(shí)別中,把人臉劃分為10個(gè)區(qū)域:臉部輪廓、眼睛、眉毛、鼻子、嘴巴、下巴、左臉、右臉、左耳、右耳(可以假設(shè)區(qū)域,通過圖像矩陣定位判斷)。每一個(gè)區(qū)域有22個(gè)特征,每一個(gè)特征數(shù)字化后的取值范圍是1-100之間。按照下面過程給出方案設(shè)計(jì),具體數(shù)據(jù)自己可以合理假設(shè)。
(1)通過采集給出人臉特征基準(zhǔn)矩陣,給出具體的基準(zhǔn)矩陣Ax(每一個(gè)人都
有一個(gè)基準(zhǔn)矩陣,給出至少10人的基準(zhǔn)矩陣)。提示:矩陣Ax中,每一行表
示一個(gè)人臉區(qū)域特征向量(10個(gè)區(qū)域),每一列表示一個(gè)區(qū)域特征(22個(gè)特
征),特征值范圍1-100(可以隨機(jī)生成)。(A1,A2,…,A10,…)
?
(2)隨機(jī)采集到某一個(gè)人的人臉圖像,提取該人的人臉特征(可以通過假設(shè)
給出),給出一個(gè)具體的需要判斷的示例矩陣B,要求判斷B與Ax中哪一個(gè)人
的人臉特征相似?
?
(3)關(guān)鍵計(jì)算1:計(jì)算和判斷人臉特征的相似度,規(guī)則是:左耳、右耳的特 征的特征值誤差范圍是20%,左臉、右臉的誤差范圍是10%,其他特征的誤差 范圍是3%;如果特征值在誤差范圍內(nèi)都認(rèn)為是相似的。提示:運(yùn)用矩陣減法 運(yùn)算、矩陣邏輯比較運(yùn)算,相似時(shí)為真true用1表示,不相似時(shí)為假false用0表
示。
?
(4)關(guān)鍵計(jì)算2:計(jì)算和判斷人臉區(qū)域的相似度,規(guī)則是每一個(gè)區(qū)域的22個(gè) 特征中,80%以上特征相似就認(rèn)為區(qū)域相似。提示:運(yùn)用向量計(jì)算、sum命令 。
?
(5)關(guān)鍵技術(shù)3:計(jì)算和判斷人臉相似度,規(guī)則是10個(gè)區(qū)域中,90%以上相似 ,就認(rèn)為相似。提示:運(yùn)用向量計(jì)算、sum命令。
1.運(yùn)算過程:
(1)變量注釋
A:通過隨機(jī)數(shù)模擬生成人臉基準(zhǔn)矩陣(通過100次迭代模擬100張人臉)
B:用作判斷標(biāo)準(zhǔn)的預(yù)設(shè)矩陣(通過隨機(jī)數(shù)生成)
C:A、B矩陣各元素的誤差(|A-B|./A)
line:存儲(chǔ)第j個(gè)區(qū)域的特征向量判斷結(jié)果的數(shù)組
a:存儲(chǔ)所有區(qū)域判斷結(jié)果的數(shù)組(若有區(qū)域滿足相似條件,則向數(shù)組中添加一個(gè)“1”元素)
flag:哨兵變量
i,j:迭代變量
工作區(qū)截圖:
(2)計(jì)算結(jié)果及過程分析
計(jì)算結(jié)果如下圖,顯示識(shí)別失敗。這個(gè)結(jié)果是合理的,因?yàn)閺母怕噬蟻砜?#xff0c;從隨機(jī)生成的矩陣中找出一個(gè)與示例滿足相似條件矩陣本來就是小概率事件。但可以通過查看變量來分析相似情況。
?
line截圖如下:
可以看到只有兩個(gè)特征符合相似條件。
并且a=[]為空數(shù)組,說明沒有符合相似條件的區(qū)域。所以100張隨機(jī)生成的人臉中沒有與預(yù)設(shè)人臉相似的。識(shí)別失敗。
計(jì)算結(jié)果全圖如下:
2.源代碼:
B=randi(100,10,22);flag=0; for i=1:100a=[];A=randi(100,10,22);C=abs(A-B)./A;for j=1:6line=C(j,:)<=0.03;if sum(line,2)>=22*0.8a=[a,1];endendfor j=7:8line=C(j,:)<=0.1;if sum(line,2)>=22*0.8a=[a,1];endendfor j=9:10line=C(j,:)<=0.2;if sum(line,2)>=22*0.8a=[a,1];endendif sum(a,2)>=9fprintf("第%d個(gè)矩陣識(shí)別成功\n",i);flag=1;end end if flag==0fprintf("識(shí)別失敗\n"); end至此,作業(yè)所要求的內(nèi)容已經(jīng)結(jié)束。
3.附加部分
在本作業(yè)外,為了驗(yàn)證本程序的正確性,我們決定改變預(yù)設(shè)條件,充分執(zhí)行該程序。
(1)條件改變
現(xiàn)改變?nèi)缦聴l件:
將左耳、右耳的特征的特征值誤差范圍由20%調(diào)到100%;
左臉、右臉的誤差范圍由10%調(diào)到100%;
其他特征的誤差范圍由3%調(diào)到100%;
并將隨機(jī)生成的人臉特征矩陣數(shù)量由100調(diào)到10000個(gè);
(2)運(yùn)行結(jié)果
可以看到在新的判斷標(biāo)準(zhǔn)下,最終有5個(gè)矩陣滿足相似條件。
數(shù)組line截圖如下:
可以看到在最后一次迭代的臉部區(qū)域有15個(gè)特征符合判斷條件。
數(shù)組a截圖如下:
在數(shù)組a中有4個(gè)“8”元素,所以在最后一次迭代中有8個(gè)區(qū)域符合條件。該矩陣(第10000個(gè)矩陣)識(shí)別不成功,從運(yùn)算結(jié)果可以看到只有第119個(gè)、第1871個(gè)、第6152個(gè)、第7194個(gè)、第7328個(gè)識(shí)別成功。所以程序運(yùn)行結(jié)果是符合預(yù)設(shè)要求的。
(3)改變條件后的源代碼
B=randi(100,10,22);flag=0; for i=1:10000a=[];A=randi(100,10,22);C=abs(A-B)./A;for j=1:6line=C(j,:)<=1;if sum(line,2)>=22*0.8a=[a,1];endendfor j=7:8line=C(j,:)<=1;if sum(line,2)>=22*0.8a=[a,1];endendfor j=9:10line=C(j,:)<=1;if sum(line,2)>=22*0.8a=[a,1];endendif sum(a,2)>=9fprintf("第%d個(gè)矩陣識(shí)別成功\n",i);flag=1;end end if flag==0fprintf("識(shí)別失敗\n"); end總結(jié)
以上是生活随笔為你收集整理的MATLAB 人脸识别矩阵(矩阵、相似度)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机领域车牌识别,城市智慧停车的智能眼
- 下一篇: 基于深度学习的车型识别APP