天天看點

基于BP神經網絡的人臉識别(C系列語言實作)

目錄

    • 實驗内容描述
    • BP算法主要過程
    • 算法代碼實作

實驗内容描述

  • 實驗中建議采用如下最簡單的三層BP神經網絡,輸入層為
    基于BP神經網絡的人臉識别(C系列語言實作)
    ,有n個神經元節點,輸出層具有m個神經元,網絡輸出為
    基于BP神經網絡的人臉識别(C系列語言實作)
    ,隐含層具有k個神經元,采用BP學習算法訓練神經網絡。
    基于BP神經網絡的人臉識别(C系列語言實作)
  • BP網絡在本質上是一種輸入到輸出的映射,它能夠學習大量的輸入與輸出之間的映射關系,而不需要任何輸入和輸出之間的精确的數學表達式,隻要用已知的模式對BP網絡加以訓練,網絡就具有輸入輸出對之間的映射能力。BP網絡執行的是有教師訓練,其樣本集是由形如(輸入向量,期望輸出向量)的向量對構成的。在開始訓練前,所有的權值和門檻值都應該用一些不同的小随機數進行初始化。

BP算法主要過程

  • 向前傳播階段

    ①從樣本集中取一個樣本(Xp,Yp),将Xp輸入網絡,其中Xp為輸入向量,Yp為期望輸出向量。

    ②計算相應的實際輸出Op。

    在此階段,資訊從輸入層經過逐級的變換,傳送到輸出層。這個過程也是網絡在完成訓練後正常運作時執行的過程。在此過程中,網絡執行的是下列運算:

    基于BP神經網絡的人臉識别(C系列語言實作)
  • 向後傳播階段

    ①計算實際輸出Op與相應的理想輸出Yp的差;

    ②按極小化誤差的方法調整權矩陣。

    這兩個階段的工作一般應受到精度要求的控制,定義

    基于BP神經網絡的人臉識别(C系列語言實作)
    作為網絡關于第p個樣本的誤差測度(誤差函數)。而将網絡關于整個樣本集的誤差測度定義為
    基于BP神經網絡的人臉識别(C系列語言實作)

    如前所述,之是以将此階段稱為向後傳播階段,是對應于輸入信号的正常傳播而言的,也稱之為誤差傳播階段。

    為了更清楚地說明本文所使用的BP網絡的訓練過程,首先假設輸入層、中間層和輸出層的單元數分别是N、L和M。X=(x0,x1,…,xN-1)是加到網絡的輸入矢量,H=(h0,h1,…,hL-1)是中間層輸出矢量,Y=(y0,y1,…,yM-1)是網絡的實際輸出矢量,并且用D=(d0,d1,…,dM-1)來表示訓練組中各模式的目标輸出矢量。輸入單元i到隐單元j的權值是Vij,而隐單元j到輸出單元k的權值是Wjk。另外用θk和Φj來分别表示輸出單元和隐單元的門檻值。

    于是,中間層各單元的輸出為:

    基于BP神經網絡的人臉識别(C系列語言實作)
    而輸出層各單元的輸出是:
    基于BP神經網絡的人臉識别(C系列語言實作)
    其中f(*)是激勵函數,采用S型函數:
    基于BP神經網絡的人臉識别(C系列語言實作)
  • 訓練過程

    (1) 標明訓練集。由相應的訓練政策選擇樣本圖像作為訓練集。

    (2) 初始化各權值Vij,Wjk和門檻值Φj,θk,将其設定為接近于0的随機值,并初始化精度控制參數ε和學習率α。

    (3) 從訓練集中取一個輸入向量X加到網絡,并給定它的目标輸出向量D。

    (4) 利用上式(3)計算出一個中間層輸出H,再用上式(4)計算出網絡的實際輸出Y。

    (5) 将輸出矢量中的元素yk與目标矢量中的元素dk進行比較,計算出M個輸出誤差項:

    基于BP神經網絡的人臉識别(C系列語言實作)
    對中間層的隐單元也計算出L個誤差項:
    基于BP神經網絡的人臉識别(C系列語言實作)
    (6) 依次計算出各權值和門檻值的調整量:
    基于BP神經網絡的人臉識别(C系列語言實作)
    基于BP神經網絡的人臉識别(C系列語言實作)
    (7) 調整權值和門檻值:
    基于BP神經網絡的人臉識别(C系列語言實作)
    (8) 當k每經曆1至M後,判斷名額是否滿足精度要求:E≤ε,其中E是總誤差函數,且
    基于BP神經網絡的人臉識别(C系列語言實作)

    。如果不滿足,就傳回(3),繼續疊代。如果滿足,就進入下一步。

    (9) 訓練結束,将權值和門檻值儲存在檔案中。這時可以認為各個權值已經達到穩定,分類器形成。再一次進行訓練時,直接從檔案導出權值和門檻值進行訓練,不需要進行初始化。

算法代碼實作

  • 描述

    實驗中先進行權值和參數的初始化,然後大約進行100次訓練,儲存參數檔案以供以後直接調用。訓練集合為15個人的11張不同的臉部圖像,根據順序進行了編号,共165張。實驗采用每個人前5張圖進行訓練,然後測試每個人後6張圖的正确率。

  • 過程

    采用BP模型訓練神經網絡100次,學習率0.3,精度分别為0.1/0.01/0.001,得到如下結果:

    <比對率計算公式:Matching rate = match num / 6>

    基于BP神經網絡的人臉識别(C系列語言實作)
    基于BP神經網絡的人臉識别(C系列語言實作)
    基于BP神經網絡的人臉識别(C系列語言實作)
  • 分析

    實驗中分别以不同的精度進行測試,得到比對率如下:

    基于BP神經網絡的人臉識别(C系列語言實作)
  • 源碼

    此處為源代碼檔案

繼續閱讀