天天看點

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

我們已經讨論了兩個關于人臉檢測的兩個方法,分别為OpenCV中的級聯分類器以及Dlib庫中的人臉檢測,這次我們來讨論第三種方法,使用Dlib中的卷積神經網絡來進行人臉檢測。

卷積神經網絡的背景

作為機器學習算法中最核心的理論,卷積神經網絡在任何情況下都有着非常突出的表現。

由于神經網絡理論本身較為複雜,在這裡我們隻是簡單的進行讨論一下。

深度學習的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。

1981 年的諾貝爾醫學獎,頒發給了 David Hubel(出生于加拿大的美國神經生物學家) 和TorstenWiesel,以及 Roger Sperry。前兩位的主要貢獻,是“發現了視覺系統的資訊處理”,可視皮層是分級的。

人類的視覺原理如下:從原始信号攝入開始(瞳孔攝入像素 Pixels),接着做初步處理(大腦皮層某些細胞發現邊緣和方向),然後抽象(大腦判定,眼前的物體的形狀,是圓形的),然後進一步抽象(大腦進一步判定該物體是隻氣球)。下面是人腦進行人臉識别的一個示例:

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

對于不同的物體,人類視覺也是通過這樣逐層分級,來進行認知的:

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

我們可以看到,在最底層特征基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特征(輪子、眼睛、軀幹等),到最上層,不同的進階特征最終組合成相應的圖像,進而能夠讓人類準确的區分不同的物體。

那麼我們可以很自然的想到:可以不可以模仿人類大腦的這個特點,構造多層的神經網絡,較低層的識别初級的圖像特征,若幹底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類呢?

答案是肯定的,這也是許多深度學習算法(包括CNN)的靈感來源。

卷積神經網絡-CNN 的基本原理

典型的 CNN 由3個部分構成:

1.卷積層

2.池化層

3.全連接配接層

如果簡單來描述的話:

卷積層負責提取圖像中的局部特征;池化層用來大幅降低參數量級(降維);全連接配接層類似傳統神經網絡的部分,用來輸出想要的結果。

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

詳細的原理就不過多讨論。

卷積層的運算過程如下圖,用一個卷積核掃完整張圖檔:

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

這個過程我們可以了解為我們使用一個過濾器(卷積核)來過濾圖像的各個小區域,進而得到這些小區域的特征值。

在具體應用中,往往有多個卷積核,可以認為,每個卷積核代表了一種圖像模式,如果某個圖像塊與此卷積核卷積出的值大,則認為此圖像塊十分接近于此卷積核。如果我們設計了6個卷積核,可以了解:我們認為這個圖像上有6種底層紋理模式,也就是我們用6中基礎模式就能描繪出一副圖像。以下就是25種不同的卷積核的示例:

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

總結:卷積層的通過卷積核的過濾提取出圖檔中局部的特征,跟上面提到的人類視覺的特征提取類似。

池化層簡單說就是下采樣,他可以大大降低資料的次元。其過程如下:

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

上圖中,我們可以看到,原始圖檔是20×20的,我們對其進行下采樣,采樣視窗為10×10,最終将其下采樣成為一個2×2大小的特征圖。

之是以這麼做的原因,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較小),是以為了降低資料次元,就進行下采樣。

總結:池化層相比卷積層可以更有效的降低資料次元,這麼做不但可以大大減少運算量,還可以有效的避免過拟合。

接下來就是全連接配接層了,這個部分就是最後一步了,經過卷積層和池化層處理過的資料輸入到全連接配接層,得到最終想要的結果。

經過卷積層和池化層降維過的資料,全連接配接層才能”跑得動”,不然資料量太大,計算成本高,效率低下。

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

以上就是CNN的簡單描述,我們之後将用于實戰。

檢視文章彙總頁https://blog.csdn.net/weixin_44237705/article/details/107864965

更多openvino技術資訊可以入群交流~

申請備注:CSDN

【轉載】項目實戰—人臉檢測之卷積神經網絡理論(五)

繼續閱讀