• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于卷積神經(jīng)網(wǎng)絡(luò)的人臉識別

    2017-04-27 11:35:57王嘉鑫鄒科文陳義明
    電腦知識與技術(shù) 2016年29期
    關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò)人臉識別深度學習

    王嘉鑫 鄒科文 陳義明

    摘要:為了了解為何卷積神經(jīng)網(wǎng)絡(luò)相比于其他神經(jīng)網(wǎng)絡(luò)有更好的特征學習能力,文章對卷積神經(jīng)網(wǎng)絡(luò)的近幾年發(fā)展趨勢以及基本結(jié)構(gòu)進行介紹。進行了對于全連接的前向傳播以及后向傳播的推導,該推導用于闡述神經(jīng)元的權(quán)值更新以及學習率。對卷積神經(jīng)網(wǎng)絡(luò)的調(diào)參以及參數(shù)的解析,闡述了如何對參數(shù)訓練進行調(diào)整來使得小數(shù)據(jù)集有更好的識別率。

    關(guān)鍵詞:深度學習;卷積神經(jīng)網(wǎng)絡(luò);人臉識別;全連接推導;參數(shù)訓練

    中圖分類號:TP18 文獻標識碼:A 文章編號:1009-3044(2016)29-0187-04

    深度學習是2006年機器學習領(lǐng)域的泰斗,加拿大多倫多大學的G.E.Hinton教授最先提出的理論,他和他的學生R.R.Salakhutdinov在science上發(fā)表了一篇論文。這篇論文主要有兩個觀點:1)多隱層的人工神經(jīng)網(wǎng)絡(luò)擁有更為優(yōu)勢的特征學習能力,學習獲得的特征對數(shù)據(jù)本身的描述更為清晰,使得可視化或分類更為有效;2)深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)所產(chǎn)生的在訓練上的難點,可以通過“逐層初始化”(layer-wise pre-training)來有效進行解決,而逐層初始化使用的是無監(jiān)督學習進行實現(xiàn)的。

    2012年6月,《紐約時報》展露了Google Brain項目,該項目是由斯坦福大學機器學習教授Andrew Ng和大規(guī)模計算機系統(tǒng)的世界頂尖專家Jeff Dean共同主導,利用16000個CPU Core的并行計算平臺來訓練“深度神經(jīng)網(wǎng)絡(luò)”的機器學習模型,在圖像識別和語音識別等的領(lǐng)域都獲得了巨大的成功。2013年1月,在百度年會上,百度創(chuàng)始人兼CEO李彥宏宣布成立百度研究院Institute of Deep Learning(IDL),第一個重點研究的方向就是深度學習。2013年4月,《MITTechnology Review(麻省理工學院技術(shù)評論)》雜志將深度學習列為2013年十大突破性技術(shù)(Breakthrough Technology)之首。

    深度神經(jīng)網(wǎng)絡(luò)是一種逐層貪婪無監(jiān)督的學習方法,這是一種思想,需要依賴具體的模型去實現(xiàn)。常見的深度學習模型有受限玻爾茲曼機(Restrieted Bohzmann Machine,RBM)、深度信念網(wǎng)絡(luò)(Deep Belief Networks,DBN)、堆棧式自動編碼器(stackedAuto-encoder,SAE)E31和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Net-works,CNN)。

    1卷積神經(jīng)網(wǎng)絡(luò)

    卷積神經(jīng)網(wǎng)絡(luò)是一種包含卷積層的神經(jīng)網(wǎng)絡(luò),20世紀60年代,Hubel和Wiesel在研究貓的腦皮層中,用于局部敏感和方向選擇的神經(jīng)元時,發(fā)現(xiàn)其特殊的網(wǎng)絡(luò)結(jié)構(gòu)可以有效降低反饋神經(jīng)網(wǎng)絡(luò)的復(fù)雜性。受研究的啟發(fā),模型模仿視皮層的簡單細胞和復(fù)雜細胞交互處理視覺信息的過程,簡單細胞負責響應(yīng)獲得不同方向的邊緣信息,而復(fù)雜細胞則負責累積相近簡單細胞來輸出結(jié)果,這個結(jié)構(gòu)被稱為Hubel-Wiesel結(jié)構(gòu)。CNN包含多個Hubel-Wiesek結(jié)構(gòu)階段,每個階段一般都包含模擬簡單細胞卷積操作和模擬復(fù)雜細胞池化操作。

    CNN主要用來獲取位移、所放以及其他形式旋轉(zhuǎn)不變的二維圖像數(shù)據(jù)的顯著特征,因為圖像的局部感知區(qū)域允許神經(jīng)元或者處理單元訪問到最底部基礎(chǔ)特征。由于CNN特征的檢測層通過訓練數(shù)據(jù)來學習,避開了顯式的特征抽取,而是在隱式地訓練數(shù)據(jù)中學習;由于同一個特征映射面上,神經(jīng)元權(quán)值相同。因此神經(jīng)網(wǎng)絡(luò)進行并行學習,這是卷積神經(jīng)網(wǎng)絡(luò)的一個優(yōu)點。

    卷積神經(jīng)網(wǎng)絡(luò)在語音識別和圖像處理方面有得天獨厚的優(yōu)勢,是由于它的局部感知和權(quán)值共享結(jié)構(gòu)使其更接近現(xiàn)實世界的生物神經(jīng)網(wǎng)絡(luò),權(quán)值共享結(jié)構(gòu)降低了神經(jīng)網(wǎng)絡(luò)的復(fù)雜性,這可以避免進行數(shù)據(jù)重建時,特征提取與分類過程的復(fù)雜度。

    2卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)

    以卷積神經(jīng)網(wǎng)絡(luò)進行的人臉識別為例的CNN結(jié)構(gòu),如圖1,不包括輸入層,該網(wǎng)絡(luò)有7層組成,其中包括3層卷積層、2層采樣層、1層全連接層和1層輸出層。圖1中第一個卷積層有6個特征映射,每個特征映射都是28×28神經(jīng)元陣列,每個神經(jīng)元負責把5×5的區(qū)域使用卷積濾波器提取局部里的特征。

    下面介紹卷積層的局部感知域、權(quán)值共享以及采樣層的池化操作。

    2.1局部感知域

    局部感知域(10cal receptive fields),普通神經(jīng)網(wǎng)絡(luò)會把輸入層和隱含層直接進行全連接的設(shè)計,從整幅圖像來計算相對較小的圖像的特征是可行的,但是,如果是更大的圖像,這將會非常耗時。卷積層是解決這類問題的一種簡便的方法是輸入單元和隱含單元間進行限制,使得每個隱含單元連接輸入單元的一部分。對于輸入圖像,每個隱含單元可以連接輸入圖像的一小部分相鄰區(qū)域。

    2.2權(quán)值共享

    權(quán)值共享(shared weights)是一種節(jié)省訓練開銷的策略。輸入層是32x32的人臉灰度圖像矩陣,輸出是其識別的結(jié)果,CNN復(fù)合了多個“卷積層”和采樣層對輸入的圖像矩陣進項處理,而后在全連接層進行實現(xiàn)與輸出目標矩陣之間的映射。每個卷積層和采樣層都包含著多個特征映射(feature map),每—個特征映射一個“平面”,平面由多個神經(jīng)元構(gòu)成,通過一種卷積的濾波器用來提取輸入的一種特征。如圖2,輸入圖是7×7×3的矩陣,使用的過濾器是3×3×3,卷積的步長為2,每個進行卷積的矩陣是3×3×3,分別平移,通過過濾器后計算獲得3x3x3的輸出圖。

    2.3池化

    池化(pooling)也稱下采樣(down-samples),其目的是為減少特征映射,當在面臨計算量非常大的時候,一個擁有過多特征輸入的分類器不易形成,并且容易過擬合。由于卷積后的特征是一種靜態(tài)屬性,所以可能在兩個不同圖像區(qū)域的特征極可能一樣,因此,描述大圖像的時候可以對不同位置特征使用聚合統(tǒng)計。相對于卷積運算,池化常用的運算一般有:最大池化(Max Pooling)、均值池化(Mean Pooling)、高斯池化和可訓練池化。最常見的池化規(guī)模2x2,步長為2,如圖3所示,輸入的每個2x2進行下采樣。每個MAX操作對四個數(shù)操作后分別獲得一個值,池化操作的結(jié)果是使其深度大小不變。

    3全連接的反向傳播算法推導

    在經(jīng)典的CNN中,一般前幾層都是卷積和下采樣交替,在靠近輸出層時的最后一些層,是全連接的一維網(wǎng)絡(luò)。這時候,將所有二維的特征映射轉(zhuǎn)化為全連接的一維網(wǎng)絡(luò)輸入。在準備將最終二維特征映射輸入到一維網(wǎng)絡(luò)中的時候,最簡便的方法就是把所有輸出的特征映射變成一個長的輸入向量連接起來,便是全連接的作用。在此之前,參考了一些經(jīng)典的反向傳播算法。

    3.1前向傳播

    在下面的推導公式里,前向傳播(Feedforward Pass)采用的是平方誤差代價函數(shù)。討論的是多類問題,一共有c類,Ⅳ個訓練樣本。

    tnk表示的第n個樣本的標簽對應(yīng)的第k維。ynk表示第n個樣本對應(yīng)的第k個輸出。對于多類問題,只有在輸入對應(yīng)類的輸出節(jié)點時,輸出才為正,其他類的位或者結(jié)點為零或者負數(shù),這個問題主要取決于輸出層的激活函數(shù),sigmoid為0,tanh就是-1。

    由于在全部的訓練集誤差表示的是每個訓練樣本誤差的總和,所以先考慮對一個樣本的反向傳播(BackpropagationPass)。因此對于第n個樣本的誤差,可以表示為:

    傳統(tǒng)的全連接層中,需要根據(jù)BP規(guī)則來計算代價函數(shù)E對于網(wǎng)絡(luò)的每個權(quán)值的偏導數(shù)。公式里用I來對應(yīng)當前層,因此當前層的輸出可以表示為:

    輸出激活函數(shù)f(.)可以有許多種,但是一般是sigmoid函數(shù)和雙曲線正切函數(shù)這兩種。sigmoid是將輸出壓縮成[0,1],因此在輸出平均值時通常是趨于0。所以如果將訓練數(shù)據(jù)進行歸一化成零均值與方差為1,那么可以在梯度下降的時候增加收斂性。雙曲線正切函數(shù)對于歸一化數(shù)據(jù)集也是不錯的選擇。

    3.2反向傳播

    反向傳播回來的誤差,可以用來當做每個神經(jīng)元的基的靈敏度(sensitivities),也就是誤差對基bias的變化率,定義如下:

    “o”代表的是每個元素相乘。對于輸出層神經(jīng)元的靈敏度各不一樣:

    最后,對所有神經(jīng)元使用delta(即δ)規(guī)則進行更新。具體說,就是得到給定的神經(jīng)元的輸入,而后用這個神經(jīng)元的dehe進行縮放。用向量形式表示就是對于第L層,誤差對該層組合為矩陣的每個權(quán)值的導數(shù)是該層的輸入(上一層的輸出)與該層的靈敏度(把該層的每個神經(jīng)元的δ組合成向量形式)的叉乘。然后用獲得的偏導數(shù)乘以負學習率得到該層神經(jīng)元的權(quán)值更新:

    相對于bias基,其更新表達式一樣。相對于每一個權(quán)值(W)ij,都會有相對應(yīng)的特定的學習率ηij

    4卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)訓練

    本文卷積神經(jīng)網(wǎng)絡(luò)的訓練是基于Pvthon、矩陣計算numpy、開發(fā)工具theano和圖像庫PIL開發(fā),采用的CNN模型類似LeNet5的模型,使用的數(shù)據(jù)庫是紐約大學一個較小的人臉數(shù)據(jù)庫Olivetti Faces,由40個人,每人10張共400張圖片構(gòu)成,每張圖片灰度級為8位,每個像素其灰度大小在0-255之間。實驗實現(xiàn)人臉識別功能時,模型的誤差降低到了5%以下。

    4.1樣本分類

    在運行CNN算法之前,需要用PIL先把圖片轉(zhuǎn)化成數(shù)組,然后進行圖片的分類。一般我們會將原始數(shù)據(jù)分成三類,訓練數(shù)據(jù)(training_set)、驗證數(shù)據(jù)(validation_set)0、測試數(shù)據(jù)(test-ing_set),樣本數(shù)量分別為320、40和40,它們的label為0-39,對應(yīng)的是40個人。

    4.2基本構(gòu)件的準備

    要組建CNN模型,必須先定義LeNetConvPoolLayer(卷積+子采樣層)、InnerProductLayer(隱含層)、LogisticRegression(輸出層)這三種layer。本文訓練的實現(xiàn)模型使用的是LeNet5,有兩個卷積層,每個卷積層后面跟著一個子采樣層,代碼中將卷積層和子采樣層結(jié)合在一起,在卷積后的輸出直接作為子采樣層的輸入,因此沒有添加偏置b以及通過sigmoid函數(shù)映射,往后還有一個全連接層和采用softmax回歸的輸出層。

    4.3組建模型,設(shè)置優(yōu)化算法

    模型是一個串聯(lián)結(jié)構(gòu),用定義好的Layer去組建,上一層的Layer的輸出后接下一層Layer的輸入。

    模型組建好后,需要使用優(yōu)化算法求解,優(yōu)化算法采用的是批量隨機梯度下降算法(MSGD),需要定義其一些要素,包括:代價函數(shù),參數(shù)更新規(guī)則,訓練、驗證、測試模型。

    優(yōu)化算法的基本要素定義的下一步是訓練模型,訓練過程有訓練步數(shù)(epoch)設(shè)置,每一步會遍歷所有訓練數(shù)據(jù),也就是本次訓練的320個人臉圖片。還需要設(shè)置迭代次數(shù),一次迭代(iter)會遍歷一個批次(binch)里的所有樣本,批次由自己具體設(shè)置。

    4.4參數(shù)設(shè)置

    代碼中可以設(shè)置的參數(shù)包括:

    1)學習速率(1earning_rate):非常重要的一個參數(shù),是運用SGD算法時梯度前面的系數(shù),如果設(shè)得太大可能算法永遠都無法優(yōu)化,太小會讓算法優(yōu)化太慢,并且有可能會掉入局部最優(yōu)。

    2)批次大?。╞atch_size):將數(shù)據(jù)輸入模型是按批次的,然后計算這個批次所有樣本的平均損失,也就是代價函數(shù)是所有樣本的平均。因此批次的大小也會影響到對模型的優(yōu)化程度和速度。

    3)訓練步數(shù)(n_epochs):遍歷訓練集的次數(shù)。

    4)卷積層的卷積核個數(shù)(n_kerns):卷積核的個數(shù)代表特征的個數(shù),卷積核的個數(shù)越多提取的特征就越多,可能最后分類會越準確。但是如果卷積核太多,會增加參數(shù)的規(guī)模和計算復(fù)雜度。

    5)池化大?。╬ool_size):這里采用的是最大池化方法來選取圖像區(qū)域的最大值來作為該區(qū)域池化后的值,比如(2,2)為選取區(qū)域2*2的像素中的最大值。

    由于采用的數(shù)據(jù)集并不大,本次訓練將學習速率調(diào)成0.05,批次大小設(shè)置成40,訓練步數(shù)為200,第一個卷積層的卷積核個數(shù)為5,第二個為10,池化大小為(2,2)。

    4.5實驗結(jié)果

    如圖4所示,最后測試是以整張圖400張人臉作為輸入,得出結(jié)果后跟其對應(yīng)的label進行對比,結(jié)果有5個人物識別錯誤。由于實驗的數(shù)據(jù)集不大,有可能模型過擬合,不過模型內(nèi)的訓練的效果比較好。

    5結(jié)束語

    詳細地介紹了深度學習的歷史由來和近幾年研究成果,卷積神經(jīng)網(wǎng)絡(luò)是為識別二維圖像矩陣而設(shè)計的多層感知機,它相比于其他神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點是可以直接以圖像的二維矩陣直接作為輸入,通過訓練樣本數(shù)據(jù)進行自主學習,隱式獲得圖像抽象的特征表達。它的神經(jīng)元之間連接是非全連接,且統(tǒng)一特征映射神經(jīng)元之間權(quán)值是共享的,降低了模型的復(fù)雜度,更利于學習。池化層的操作增強卷積神經(jīng)網(wǎng)絡(luò)的魯棒性,使其可以接受圖像一定情況下的畸變。全連接的算法推導解釋了如何將長的向量連接起來并傳給輸出層的。最后在做實驗的時候,通過調(diào)參后獲得小數(shù)據(jù)集下一個不錯的測試結(jié)果。

    猜你喜歡
    卷積神經(jīng)網(wǎng)絡(luò)人臉識別深度學習
    人臉識別 等
    作文中學版(2022年1期)2022-04-14 08:00:34
    揭開人臉識別的神秘面紗
    學生天地(2020年31期)2020-06-01 02:32:06
    基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體識別算法
    MOOC與翻轉(zhuǎn)課堂融合的深度學習場域建構(gòu)
    大數(shù)據(jù)技術(shù)在反恐怖主義中的應(yīng)用展望
    深度學習算法應(yīng)用于巖石圖像處理的可行性研究
    軟件導刊(2016年9期)2016-11-07 22:20:49
    基于深度卷積網(wǎng)絡(luò)的人臉年齡分析算法與實現(xiàn)
    軟件工程(2016年8期)2016-10-25 15:47:34
    基于卷積神經(jīng)網(wǎng)絡(luò)的樹葉識別的算法的研究
    基于類獨立核稀疏表示的魯棒人臉識別
    計算機工程(2015年8期)2015-07-03 12:19:07
    基于K-L變換和平均近鄰法的人臉識別
    两当县| 辽宁省| 平舆县| 江川县| 石城县| 罗田县| 本溪| 高平市| 建湖县| 高唐县| 女性| 乌什县| 育儿| 于田县| 嘉定区| 大化| 临颍县| 宜都市| 普陀区| 土默特右旗| 铅山县| 东乡族自治县| 荆州市| 阳高县| 慈溪市| 桐柏县| 洞头县| 教育| 留坝县| 札达县| 绵阳市| 响水县| 贡觉县| 南城县| 伊宁市| 广昌县| 安陆市| 芦山县| 寿阳县| 济南市| 宜丰县|