十年磨一劍,霜刃未曾試。
簡介:卷積神經網絡CNN學習。
CNN中文視頻學習鏈接:卷積神經網絡工作原理視頻-中文版
CNN英語原文學習鏈接:卷積神經網絡工作原理視頻-英文版
一、定義
二、CNN靈感來源?
對于不同的物體,人類視覺也是通過這樣逐層分級,來進行如下認知的。
人類視覺識別示例
在最底層特征基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特征(輪子、眼睛、軀干等),到最上層,不同的高級特征最終組合成相應的圖像,從而能夠讓人類準確的區(qū)分不同的物體。于是便模仿人類大腦的這個特點,構造多層的神經網絡,較低層的識別初級的圖像特征,若干底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類。
三、卷積神經網絡解決了什么?
概括來說就是保留圖像特征,參數(shù)降維,復雜參數(shù)簡單化。
圖像像素RGB
眾所周知,圖像是由像素構成的,每個像素又是由顏色構成的。現(xiàn)在隨隨便便一張圖片都是 1000×1000 像素以上的, 每個像素都有RGB 3個參數(shù)來表示顏色信息。
假如我們處理一張 1000×1000 像素的圖片,我們就需要處理3百萬個參數(shù)!1000×1000×3=3,000,000
這么大量的數(shù)據(jù)處理起來是非常消耗資源的,卷積神經網絡 – CNN 解決的第一個問題就是「將復雜問題簡化」,把大量參數(shù)降維成少量參數(shù),再做處理。
更重要的是:我們在大部分場景下,降維并不會影響結果。比如1000像素的圖片縮小成200像素,并不影響肉眼認出來圖片中是一只貓還是一只狗,機器也是如此。
圖片數(shù)字化的傳統(tǒng)方式
圖像簡單數(shù)字化無法保留圖像特征,如上圖假如有圓形是1,沒有圓形是0,那么圓形的位置不同就會產生完全不同的數(shù)據(jù)表達。但是從視覺的角度來看,圖像的內容(本質)并沒有發(fā)生變化,只是位置發(fā)生了變化。所以當我們移動圖像中的物體,用傳統(tǒng)的方式的得出來的參數(shù)會差異很大!這是不符合圖像處理的要求的。而 CNN 解決了這個問題,他用類似視覺的方式【模仿人類大腦視覺原理,構造多層的神經網絡,較低層的識別初級的圖像特征,若干底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類】保留了圖像的特征,當圖像做翻轉,旋轉或者變換位置時,它也能有效的識別出來是類似的圖像。
四、卷積神經網絡的架構
典型的 CNN 由卷積層、池化層、全連接層3個部分構成:
典型CNN組成部分
五、數(shù)據(jù)輸入層
去相關與白化效果圖
六、卷積計算層
卷積層有兩個重要的操作,一個是局部關聯(lián),每個神經元看做一個濾波器filter;另一個是窗口滑動,filter對局部數(shù)據(jù)計算。
卷積層的運算過程如下圖,用一個卷積核掃完整張圖片:
卷積層動態(tài)運算圖
卷積層的運算過程,可以當做使用一個過濾器(卷積核)來過濾圖像的各個小區(qū)域,從而得到這些小區(qū)域的特征值,即卷積層通過卷積核的過濾提取出圖片中局部的特征。
卷積層運算圖
卷積層計算過程動圖
七、激勵層
激勵層是把卷積層輸出結果做非線性映射。CNN采用的激勵函數(shù)一般為ReLU(The Rectified Linear Unit/修正線性單元)。
八、池化層
池化層在連續(xù)的卷積層中間,其用于壓縮數(shù)據(jù)和參數(shù)的量,減少過擬合。最重要的作用就是保持特性不變,壓縮圖像,降低數(shù)據(jù)維度。
池化層用的方法有Max pooling 和 average pooling,而實際用的較多的是Max pooling。Max pooling思想:對于每個2 * 2的窗口選出最大的數(shù)作為輸出矩陣的相應元素的值,比如輸入矩陣第一個2 * 2窗口中最大的數(shù)是6,那么輸出矩陣的第一個元素就是6,如此類推,保持特征不變地降低維度。
Max pooling圖
動態(tài)池化圖
我們可以看到動態(tài)池化圖中,原始圖片是20×20的,我們對其進行下采樣,采樣窗口為10×10,最終將其下采樣成為一個2×2大小的特征圖。
九、全連接層
十、CNN實際應用場景
圖像分類/檢索、目標定位檢測、目標分割、人臉識別、骨骼識別等。
CNN人臉識別
CNN中文視頻學習鏈接:卷積神經網絡工作原理視頻-中文版
CNN英語原文學習鏈接:卷積神經網絡工作原理視頻-英文版
十年磨一劍
霜刃未曾試