深度學習項目——基於卷積神經網絡(CNN)的人臉在線識別系統


基於卷積神經網絡(CNN)的人臉在線識別系統

  本設計研究人臉識別技術,基於卷積神經網絡構建了一套人臉在線檢測識別系統,系統將由以下幾個部分構成:

制作人臉數據集、CNN神經網絡模型訓練、人臉檢測、人臉識別。經過實驗,確定該系統可對本人的人臉進行快速並准確的檢測與識別。

關鍵詞: 神經網絡; 圖像處理; 人臉檢測;人臉識別;TensorFlow;模型訓練

一、設計目標 

1.掌握人臉識別原理;

2.掌握卷積神經網絡算法原理

3.掌握卷積神經網絡模型訓練過程;

4.掌握常用圖像處理技術;

設計內容與要求

1.完成基於卷積神經網絡的人臉在線識別系統算法設計;

2.完成基於卷積神經網絡的人臉在線識別系統模型訓練;

3.檢測並且識別出人臉;

二、制作人臉數據集

2.1、制作我的人臉數據集

  人臉檢測出人臉位置,返回坐標、尺寸把臉用數組切片的方法截取下來,把截取的小圖片保存下來作為數據集。

本系統獲取本人的人臉數據集10000張,使用的是dlib來識別人臉,雖然速度比OpenCV識別慢,但是識別效果更好。

其中,人臉大小:64*64

2.2、主要步驟

1加載 dlib機器學習的開源庫

2圖像預處理 cvtColor(灰度化)。

3使用dlib自帶的frontal_face_detector進行特征提取

4使用特征提取器進行人臉檢測

5人臉保存。

2.3、制作結果

     

 

2.5  、制作其他人臉數據集

  本系統使用人臉數據集下載:http://vis-www.cs.umass.edu/lfw/lfw.tgz

先將下載的圖片集放在img_source目錄下,用dlib來批量識別圖片中的人臉部分,

並保存到指定目錄faces_other。人臉大小為64*64

2.6、主要步驟

1)讀入人臉數據集源文件

2加載 dlib機器學習的開源庫。

3)用dlib來批量識別圖片中的人臉部分

4人臉保存。

 2.7、制作結果

 

 

 三、 神經網絡模型訓練

3.1、卷積神經網絡內部分析

第一、二層(卷積層1、池化層1),輸入圖片64*64*3,輸出圖片32*32*32

第三、四層(卷積層2、池化層2),輸入圖片32*32*32,輸出圖片16*16*64

第五、六層(卷積層3、池化層3),輸入圖片16*16*64,輸出圖片8*8*64

第七層(全連接層),輸入圖片8*8*64reshape1*4096,輸出1*512

第八層(輸出層),輸入1*512,輸出1*2

輸出神經網絡輸出的1*2,與標簽y_ [0,1][1,0]對比得出損失,損失函數為交叉熵,優化器采用Adan優化器,計算模型准確率。

代碼實現:

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=out, labels=y_))

optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)

accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(out, 1), tf.argmax(y_, 1)), tf.float32))

3.2、輸入層

   人臉檢測出人臉位置,返回坐標、尺寸把臉用數組切片的方法截取下來,把截取的小圖片送入神經網絡進行訓練,輸入的圖片64*64*3

 3.3、卷積層  

  本網路共三層卷積層,卷積核大小為(33),卷積步長為[1,1,1,1],即一步,padding=SAME”。卷積層提取特征,

增加通道數,圖片大小不變。

3.4、池化層 

  本文提出的池化層采用最大值采樣,采樣大小為2*2,即把輸入的特征圖分割成不重疊的2*2大小的矩形,對每個矩形取最大值,

所以輸出特征圖的長和寬均是輸入特征圖的一半。

3.5、全連接層 

  為了增強網絡的非線性能力,同時限制網絡規模的大小,網絡在特征提取層提取特征后,接入一個全連接層,該層的每一個神經元

與前一層的所有神經元互相連接,將圖片的卷積輸出壓扁成一個一維向量,輸出1*512

3.6、輸出層 

本系統共分兩類,一類我的人臉(yes),另一類其他人臉(no),從全連接層輸入1*512,輸出層輸出1*2。為求loss做准備。

3.7、主要步驟 

1)讀入制作好的人臉數據集,將圖片數據與標簽轉化成數組。 

2)划分測試集:訓練集=20:1,做歸一化處理。 

3)傳入卷積神經網絡 

4)訓練

3.8、訓練結果

   

    

四、利用模型進行人臉識別

4.1 、主要步驟

1)打開攝像頭獲取圖片進行灰度化。

2)人臉檢測。

3)導入訓練好的神經網絡模型

4)人臉識別

4.2、識別結果

  

   

  五、總結

  本次設計主要研究了基於卷積神經網絡的人臉在線識別系統。設計了基於機器視覺的人臉圖像采集系統,

自己制作了訓練需要的人臉數據集。設計並實現了基於卷積神經網絡的人臉識別系統,完成了基於卷積神經網絡的

人臉在線識別系統算法設計、神經網絡模型訓練,實現了對人臉的在線檢測與識別。檢測出本人人臉,則在人臉上

顯示”yes, my face”,若不是我的人臉,則在人臉上顯示”no, other face ”。

 

 六 、代碼

見個人GitHubhttps://github.com/hhhvvvddd/CNN_faces_recognition

 

淺談則止,深入理解AI大道理

掃描下方“AI大道理”,選擇“關注”公眾號

 

歡迎加入!

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM