龔晗義,蘇賦文,高漢軍
(1.武漢理工大學(xué) 自動(dòng)化學(xué)院,湖北 武漢 430070;2.華中科技大學(xué) 電氣與電子工程學(xué)院,湖北 武漢 430074;3.中核武漢核電運(yùn)行技術(shù)股份有限公司,湖北 武漢 430223)
人臉識(shí)別因其快捷、自然、非接觸性等優(yōu)點(diǎn),在電子商務(wù)交易、公安、司法和刑偵等領(lǐng)域具有廣闊的應(yīng)用前景和良好的市場(chǎng)價(jià)值。針對(duì)人臉識(shí)別特征提取問題,文獻(xiàn)[1]提出一種PCA(principal component analysis,PCA)和LDA(linear discriminant analysis, LDA)相結(jié)合的方法,并采用最鄰近判別方法進(jìn)行分類識(shí)別。文獻(xiàn)[2]提出將基于圖像標(biāo)準(zhǔn)差和局部均值的圖像處理方法融入到PCA算法中,使其克服光照不均勻?qū)θ四樧R(shí)別的影響。在分類識(shí)別方面,文獻(xiàn)[3]將BP神經(jīng)網(wǎng)絡(luò)用于人臉識(shí)別分類器的設(shè)計(jì)中,但識(shí)別準(zhǔn)確率有待提高。文獻(xiàn)[4]利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),能有效避免神經(jīng)網(wǎng)絡(luò)陷入局部極值,但遺傳算法可能過早收斂。文獻(xiàn)[5]對(duì)BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和權(quán)值兩方面進(jìn)行優(yōu)化,提出了一種新的遺傳網(wǎng)絡(luò)并行算法。
筆者針對(duì)遺傳算法存在過早收斂、易陷入局部最優(yōu)解的問題[6],對(duì)選擇算子進(jìn)行改進(jìn),并采用自適應(yīng)交叉、變異方式,得到一種改進(jìn)的遺傳算法,再利用改進(jìn)后的遺傳算法獲取用于人臉識(shí)別的BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值,進(jìn)一步使用BP算法對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。在Python平臺(tái)下實(shí)現(xiàn)所提出的算法,并基于ORL人臉數(shù)據(jù)庫(kù)進(jìn)行仿真研究。
(1)
(2)
(3)
(4)
(5)
線性判別分析法是通過投影的方式,將原始數(shù)據(jù)投影到低維度的空間中,這樣投影后的數(shù)據(jù)就會(huì)按照類別進(jìn)行區(qū)分[8]。主成分分析法的目標(biāo)不是尋找最優(yōu)判別方向,所以特征提取過程中所用的協(xié)方差矩陣(見式(2))不包含類別信息。但應(yīng)用于人臉識(shí)別分類時(shí),PCA截去的次分量有可能包含把不同類別區(qū)分開的方向。給定訓(xùn)練集Z=[Z1,Z2,…,Zn]是一個(gè)k×n的矩陣,每一列的數(shù)據(jù)表示人臉圖像經(jīng)PCA提取后的特征值,共n張人臉,其類別數(shù)目為C,則類內(nèi)散布矩陣Sw和類間散布矩陣Sb的計(jì)算式分別如式(6)和式(7)所示。根據(jù)Sw和Sb求解最優(yōu)投影矩陣,其定義如式(8)所示。
(6)
(7)
(8)
當(dāng)人臉圖像通過矩陣Wopt進(jìn)行投影后,不同類別的人臉在投影空間分布較為離散,相同類別的人臉分布則比較緊密,同時(shí)對(duì)PCA提取到的特征臉進(jìn)一步進(jìn)行降維處理。通過最優(yōu)投影矩陣Wopt可以將原始樣本數(shù)據(jù)投影到LDA特征子空間中,即:
L=ZWopt
(9)
其中,L是由PCA算法降維后的矩陣Z經(jīng)過LDA特征提取后得到的特征子空間。
BP神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的非線性能力和泛化能力,在人臉識(shí)別分類器的設(shè)計(jì)方面得到廣泛的應(yīng)用。但BP網(wǎng)絡(luò)初始網(wǎng)絡(luò)權(quán)重選取具有隨機(jī)性,其選取結(jié)果直接影響網(wǎng)絡(luò)的訓(xùn)練結(jié)果。若初始權(quán)值和閾值選取不恰當(dāng),則可能會(huì)導(dǎo)致網(wǎng)絡(luò)對(duì)輸入樣本學(xué)習(xí)時(shí)間過長(zhǎng),陷入局部最優(yōu)而無法逼近全局最優(yōu)。遺傳算法是模仿自然界生物進(jìn)化理論發(fā)展而來的一種自適應(yīng)搜索算法,具有很強(qiáng)的全局尋優(yōu)能力。因此,通過遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)輸入層和隱含層連接權(quán)值、隱含層閾值、隱含層與輸出層連接權(quán)值以及輸出層閾值,使初始網(wǎng)絡(luò)權(quán)重逼近全局最優(yōu),再利用BP算法進(jìn)行局部尋優(yōu)。算法的流程圖如圖1所示。
圖1 算法流程圖
圖2 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示。筆者采用3層BP神經(jīng)網(wǎng)絡(luò),包括一個(gè)輸入層、一個(gè)隱含層和一個(gè)輸出層。輸入層的節(jié)點(diǎn)數(shù)是數(shù)據(jù)樣本經(jīng)PCA和LDA特征提取后所得特征向量的維數(shù),輸出層節(jié)點(diǎn)數(shù)為人臉數(shù)據(jù)庫(kù)的類別數(shù),隱含層節(jié)點(diǎn)數(shù)通常先由經(jīng)驗(yàn)公式確定大致范圍,再通過實(shí)驗(yàn)確定具體數(shù)值。
針對(duì)遺傳算法存在早熟、易陷入局部最優(yōu)和收斂速度慢等問題,筆者對(duì)遺傳算法進(jìn)行如下改進(jìn)。
(1)改進(jìn)選擇算子。筆者在最優(yōu)保存策略的基礎(chǔ)上對(duì)選擇算子進(jìn)行改進(jìn),提出一種新的選擇算法,算法步驟如下:①初始化種群,計(jì)算每個(gè)個(gè)體的適應(yīng)度值并按照從小到大的順序進(jìn)行排序。適應(yīng)度函數(shù)為BP網(wǎng)絡(luò)全局誤差函數(shù)的倒數(shù),適應(yīng)度值越大,個(gè)體品質(zhì)越優(yōu)良。②對(duì)已排序的個(gè)體按照0.4、0.3、0.3的比例分成3段,3段種群質(zhì)量從前到后依次變好。每段依照0.6、0.8、1.0的比例進(jìn)行選擇,選擇依據(jù)是優(yōu)者多選,劣者少選。③將選擇出的個(gè)體重新組合成一個(gè)新的種群,新種群的個(gè)體數(shù)目因?yàn)榘幢壤x擇會(huì)有所減少,所以從尾段優(yōu)良個(gè)體中隨機(jī)選擇個(gè)體數(shù)等于原種群損失的數(shù)目,并插入到步驟②所選擇的種群中,從而構(gòu)成一個(gè)新的種群。 通過以上選擇操作不僅可將種群中較優(yōu)良的個(gè)體選擇出來,還保持了種群的多樣性,使其逼近全局最優(yōu)。
(2)改進(jìn)交叉算子。交叉、變異概率的選擇直接影響遺傳算法的效率,交叉概率過大,種群中優(yōu)秀的個(gè)體易遭到破壞;交叉概率過小,種群更新較慢且易陷入局部最優(yōu)。筆者采用自適應(yīng)交叉方式,根據(jù)個(gè)體適應(yīng)度值來確定交叉概率的大小,以提高交叉的質(zhì)量。自適應(yīng)交叉概率的計(jì)算公式如式(10)所示。
(10)
式中:fmax,fmin分別為種群中個(gè)體最大適應(yīng)度值和最小適應(yīng)度值;favg為種群平均適應(yīng)度值;f為個(gè)體的適應(yīng)度值;r為一個(gè)很小的正數(shù),防止分母過小造成計(jì)算出錯(cuò),從而防止交叉概率和變異概率出現(xiàn)無意義的值;A=9.9;Pc1、Pc2、Pc3為自定義的交叉概率,1>Pc1>Pc2>Pc3>0。
(3)改進(jìn)變異算子。變異操作對(duì)于保持種群的多樣性、防止早期成熟起著重要的作用。變異概率太小,種群個(gè)體產(chǎn)生新的基因塊的概率會(huì)大大降低;變異概率太大,又會(huì)使遺傳算法變成隨機(jī)搜索,失去目的性。筆者采用自適應(yīng)變異方式,其計(jì)算公式如式(11)所示。
(11)
其中,Pm1、Pm2、Pm3為自定義的變異概率,1>Pm1>Pm2>Pm3>0。
采用式(10)和式(11)給出的交叉和變異的方式,使交叉概率隨適應(yīng)度函數(shù)的增大而逐漸減小,變異概率隨適應(yīng)度函數(shù)的增大而逐漸增大。使得交叉概率Pc因個(gè)體適應(yīng)度的差異在Pc1、Pc2和Pc3之間進(jìn)行自適應(yīng)調(diào)整,變異概率Pm因個(gè)體適應(yīng)度的差異在Pm1、Pm2和Pm3之間自適應(yīng)調(diào)整,保證了種群個(gè)體隨環(huán)境進(jìn)化時(shí),個(gè)體發(fā)育的自適應(yīng)特性。
基于改進(jìn)遺傳算法和BP神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別方法的實(shí)施步驟為:
(1)將原始人臉圖像分成樣本訓(xùn)練集和樣本測(cè)試集,對(duì)訓(xùn)練集圖片進(jìn)行PCA和LDA特征提取,對(duì)降維處理后的數(shù)據(jù)進(jìn)行歸一化處理。
(2)設(shè)置種群規(guī)模、最大進(jìn)化次數(shù)、染色體長(zhǎng)度等參數(shù)。初始化種群,使用實(shí)數(shù)編碼的方法對(duì)BP網(wǎng)絡(luò)的初始權(quán)值和閾值進(jìn)行編碼。
(3)計(jì)算個(gè)體適應(yīng)度值,按照3.3中的選擇方式,保留優(yōu)秀的個(gè)體并遺傳到下一代。
(4)按照3.3中的交叉方式和交叉概率進(jìn)行交叉操作。交叉時(shí)采用實(shí)數(shù)交叉法,第p個(gè)染色體ap和第q個(gè)染色體aq在第i位的交叉操作方法如式(12)所示。其中,b為[0,1]間的隨機(jī)數(shù)。
(12)
(5)進(jìn)行變異操作,p個(gè)個(gè)體的第i個(gè)基因的變異操作方法如式(13)所示。其中,基因api的上界為amax,下界為amin,f(g)=r2(1-g/Gmax),g為當(dāng)前進(jìn)化次數(shù),Gmax為最大進(jìn)化次數(shù),r為[0,1]之間的一個(gè)隨機(jī)數(shù)。
(13)
(6)更新種群,將種群中的個(gè)體解碼為BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,根據(jù)得到的網(wǎng)絡(luò)權(quán)重計(jì)算每個(gè)個(gè)體的適應(yīng)度值。
(7)判斷最優(yōu)個(gè)體適應(yīng)值是否達(dá)到精度值,或者是否達(dá)到最大進(jìn)化次數(shù),若不滿足返回步驟(3),滿足則進(jìn)入下一步驟。
(8)將最優(yōu)個(gè)體解碼為BP網(wǎng)絡(luò)初始連接權(quán)值、閾值,使用樣本訓(xùn)練集訓(xùn)練神經(jīng)網(wǎng)絡(luò),直到達(dá)到預(yù)設(shè)的期望指標(biāo)。最后將樣本測(cè)試集輸入到訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),計(jì)算人臉識(shí)別的準(zhǔn)確率。
筆者選擇ORL人臉數(shù)據(jù)庫(kù)進(jìn)行人臉識(shí)別實(shí)驗(yàn)。該數(shù)據(jù)庫(kù)共有400幅人臉圖像,包含40個(gè)人,每人有10幅圖像。人臉的面部表情和姿態(tài)均有一定的變化,ORL人臉數(shù)據(jù)庫(kù)部分圖像如圖3所示。
圖3 ORL人臉數(shù)據(jù)庫(kù)部分圖片
為了驗(yàn)證算法的可行性,筆者選取每人前4幅人臉圖像用于訓(xùn)練,后6幅用于測(cè)試。將訓(xùn)練集圖片經(jīng)PCA和LDA進(jìn)行特征提取后,得到訓(xùn)練樣本特征子空間,對(duì)其進(jìn)行歸一化處理后作為BP神經(jīng)網(wǎng)絡(luò)的輸入,進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。再對(duì)測(cè)試集上的人臉圖像做同樣的處理,進(jìn)行分類識(shí)別。原始訓(xùn)練樣本經(jīng)PCA特征提取后,特征向量的維數(shù)為62,再經(jīng)LDA降維處理后,特征向量維數(shù)為29,則BP神經(jīng)網(wǎng)絡(luò)輸入層節(jié)點(diǎn)數(shù)為29,輸出層節(jié)點(diǎn)數(shù)為40,隱含層節(jié)點(diǎn)數(shù)為50,學(xué)習(xí)率為0.4,動(dòng)量因子η=0.15,最大迭代次數(shù)為2 000次,初始權(quán)值為(-0.2,0.2),訓(xùn)練目標(biāo)為0.001。遺傳算法的初始種群規(guī)模為50,最大進(jìn)化次數(shù)為50,交叉概率和變異概率有關(guān)參數(shù)分別為:Pc1=0.9,Pc2=0.8,Pc3=0.6,Pm1=0.1,Pm2=0.05,Pm3=0.01。
筆者分別采用傳統(tǒng)GA+BP和改進(jìn)GA+BP進(jìn)行人臉分類識(shí)別,傳統(tǒng)遺傳算法和改進(jìn)遺傳算法的適應(yīng)度曲線分別如圖4和圖5所示,共進(jìn)行10次實(shí)驗(yàn),最終識(shí)別率如圖6所示。通過對(duì)比圖4和圖5可知,筆者對(duì)遺傳算法的改進(jìn),使得種群前期進(jìn)化速度明顯加快,收斂結(jié)果更優(yōu),使后續(xù)分類識(shí)別效果更優(yōu)。由圖6可以看出,改進(jìn)GA+BP算法的識(shí)別率明顯高于傳統(tǒng)GA+BP算法,遺傳算法的改進(jìn)與引入,大大提高了BP神經(jīng)網(wǎng)絡(luò)的分類能力,使訓(xùn)練得到的權(quán)值和閾值更易逼近全局最優(yōu)。
圖4 傳統(tǒng)GA算法的適應(yīng)度曲線
圖5 改進(jìn)GA算法的適應(yīng)度曲線
圖6 傳統(tǒng)GA+BP和改進(jìn)GA+BP識(shí)別率比較
為了進(jìn)一步驗(yàn)證筆者算法的可靠性和優(yōu)越性,將筆者算法與文獻(xiàn)[9]~文獻(xiàn)[11]中算法進(jìn)行對(duì)比實(shí)驗(yàn)。為了提高筆者算法的抗噪能力,在PCA特征提取前利用二層二維離散小波進(jìn)行圖像的預(yù)處理,選取低頻子圖進(jìn)行后續(xù)實(shí)驗(yàn)。選用ORL人臉庫(kù)每人5幅進(jìn)行訓(xùn)練,另外5幅進(jìn)行測(cè)試,分別進(jìn)行10次實(shí)驗(yàn),取其平均值作為最后實(shí)驗(yàn)結(jié)果,如表1所示。
表1 不同算法的平均識(shí)別率
從表1可以看出,筆者提出的PCA+LDA+BP+改進(jìn)GA方法的識(shí)別率達(dá)到最高,PCA和LDA的引入,可以有效提取人臉的特征信息,同時(shí)利用了人臉的類別信息,減少計(jì)算量;對(duì)遺傳算法的改進(jìn),使得BP網(wǎng)絡(luò)的訓(xùn)練時(shí)間大幅度降低,收斂結(jié)果更優(yōu),因此,筆者算法具有良好的可靠性和一定的優(yōu)越性。
為提高人臉識(shí)別在信息安全上的可靠性和實(shí)用性,筆者提出了一種基于改進(jìn)遺傳算法和BP神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別方法。采用PCA對(duì)人臉圖像進(jìn)行特征提取和降維處理,再利用LDA提取人臉的類別信息,并進(jìn)一步降維。將綜合處理后的數(shù)據(jù)輸入到BP神經(jīng)網(wǎng)絡(luò),并用改進(jìn)的遺傳算法對(duì)神經(jīng)網(wǎng)絡(luò)初始權(quán)重進(jìn)行優(yōu)化。在Python平臺(tái)下對(duì)ORL人臉數(shù)據(jù)庫(kù)進(jìn)行了實(shí)驗(yàn),仿真結(jié)果表明,筆者提出的算法易實(shí)現(xiàn),識(shí)別率高,對(duì)人臉識(shí)別算法及其應(yīng)用研究有一定的參考價(jià)值。
武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版)2018年5期