一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)

dicksonjyl560101發表於2019-06-26



2019-06-25 21:31:18
一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)

卷積神經網路 – CNN 最擅長的就是圖片的處理。它受到人類視覺神經系統的啟發。

CNN 有2大特點:

能夠有效的將大資料量的圖片降維成小資料量

能夠有效的保留圖片特徵,符合圖片處理的原則

目前 CNN 已經得到了廣泛的應用,比如:人臉識別、自動駕駛、美圖秀秀、安防等很多領域。

CNN 解決了什麼問題?

在 CNN 出現之前,影像對於人工智慧來說是一個難題,有2個原因:

影像需要處理的資料量太大,導致成本很高,效率很低

影像在數字化的過程中很難保留原有的特徵,導致影像處理的準確率不高

下面就詳細說明一下這2個問題:

需要處理的資料量太大

影像是由畫素構成的,每個畫素又是由顏色構成的。


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


現在隨隨便便一張圖片都是 1000×1000 畫素以上的, 每個畫素都有RGB 3個引數來表示顏色資訊。

假如我們處理一張 1000×1000 畫素的圖片,我們就需要處理3百萬個引數!

1000×1000×3=3,000,000

這麼大量的資料處理起來是非常消耗資源的,而且這只是一張不算太大的圖片!

卷積神經網路 – CNN 解決的第一個問題就是「將複雜問題簡化」,把大量引數降維成少量引數,再做處理。

更重要的是:我們在大部分場景下,降維並不會影響結果。比如1000畫素的圖片縮小成200畫素,並不影響肉眼認出來圖片中是一隻貓還是一隻狗,機器也是如此。

保留影像特徵

圖片數字化的傳統方式我們簡化一下,就類似下圖的過程:


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


影像簡單數字化無法保留影像特徵

假如有圓形是1,沒有圓形是0,那麼圓形的位置不同就會產生完全不同的資料表達。但是從視覺的角度來看, 影像的內容(本質)並沒有發生變化,只是位置發生了變化

所以當我們移動影像中的物體,用傳統的方式的得出來的引數會差異很大!這是不符合影像處理的要求的。

而 CNN 解決了這個問題,他用類似視覺的方式保留了影像的特徵,當影像做翻轉,旋轉或者變換位置時,它也能有效的識別出來是類似的影像。

那麼卷積神經網路是如何實現的呢?在我們瞭解 CNN 原理之前,先來看看人類的視覺原理是什麼?

人類的視覺原理

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

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

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


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


人類視覺原理1

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


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


人類視覺原理2

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

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

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

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

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

卷積層

池化層

全連線層

如果簡單來描述的話:

卷積層負責提取影像中的區域性特徵;池化層用來大幅降低引數量級(降維);全連線層類似傳統神經網路的部分,用來輸出想要的結果。


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


典型的 CNN 由3個部分構成

下面的原理解釋為了通俗易懂,忽略了很多技術細節,如果大家對詳細的原理感興趣,可以看這個影片《卷積神經網路基礎》。

卷積——提取特徵

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


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


卷積層運算過程

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

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


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


25種不同的卷積核

總結:卷積層的透過卷積核的過濾提取出圖片中區域性的特徵,跟上面提到的人類視覺的特徵提取類似。

池化層(下采樣)——資料降維,避免過擬合

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


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


池化層過程

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

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

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

全連線層——輸出結果

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

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


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


全連線層

典型的 CNN 並非只是上面提到的3層結構,而是多層結構,例如 LeNet-5 的結構就如下圖所示:

卷積層 – 池化層- 卷積層 – 池化層 – 卷積層 – 全連線層

在瞭解了 CNN 的基本原理後,我們重點說一下 CNN 的實際應用有哪些。

CNN 有哪些實際應用?

卷積神經網路 – CNN 很擅長處理影像。而影片是影像的疊加,所以同樣擅長處理影片內容。下面給大家列一些比較成熟的應用:

影像分類、檢索

影像分類是比較基礎的應用,他可以節省大量的人工成本,將影像進行有效的分類。對於一些特定領域的圖片,分類的準確率可以達到 95%+,已經算是一個可用性很高的應用了。

典型場景:影像搜尋…


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


CNN應用-影像分類、檢索

目標定位檢測

可以在影像中定位目標,並確定目標的位置及大小。

典型場景:自動駕駛、安防、醫療…


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


CNN應用-目標定位檢測

目標分割

簡單理解就是一個畫素級的分類。

他可以對前景和背景進行畫素級的區分、再高階一點還可以識別出目標並且對目標進行分類。

典型場景:美圖秀秀、影片後期加工、影像生成…


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


CNN應用-目標分割

人臉識別

人臉識別已經是一個非常普及的應用了,在很多領域都有廣泛的應用。

典型場景:安防、金融、生活…


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


CNN應用-人臉識別

骨骼識別

骨骼識別是可以識別身體的關鍵骨骼,以及追蹤骨骼的動作。

典型場景:安防、電影、影像影片生成、遊戲…


一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)


CNN應用-骨骼識別

總結

今天我們介紹了 CNN 的價值、基本原理和應用場景,簡單總結如下:

CNN 的價值:

能夠將大資料量的圖片有效的降維成小資料量(並不影響結果)

能夠保留圖片的特徵,類似人類的視覺原理

CNN 的基本原理:

卷積層 – 主要作用是保留圖片的特徵

池化層 – 主要作用是把資料降維,可以有效的避免過擬合

全連線層 – 根據不同任務輸出我們想要的結果

CNN 的實際應用:

圖片分類、檢索

目標定位檢測

目標分割

人臉識別

骨骼識別


本文首發在 easyAI - 人工智慧知識庫

《一文看懂卷積神經網路-CNN(基本原理+獨特價值+實際應用)》


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2648775/,如需轉載,請註明出處,否則將追究法律責任。

相關文章