如果要用全連接BP神經網絡,我們把輸入的圖片「展平」了,「展平」是什麼意思呢?我們都知道,計算機存儲圖片,實際是存儲了一個W×H×DW\times H\times DW×H×D 的數組(W,H,D分別表示寬,高和維數,彩色圖片包含RGB三維),如下圖所示,「展平」就是,把這個數組變成一列,然後,輸入神經網絡進行訓練:
這種方法,在圖片尺寸較小的時候,還是可以接受的;但是,當圖片尺寸比較大的時候,由於圖像的像素點很多,神經網絡的 層與層之間 的連接數量,會爆炸式增長,大大降低網絡的性能。
把圖片數據展開成一列,破壞了圖片的空間信息,試想,如果把上圖中的貓圖片變成一列,再把這一列數據,以圖片的形式展示給你,你還能看出這表示一隻貓嗎?並且,有相關研究表明,人類大腦,在理解圖片信息的過程中,並不是同時觀察整個圖片,而是更傾向於,觀察部分特徵,然後根據特徵匹配、組合,得出整圖信息。以下圖爲例:
在這張圖片中,你只能看到,貓的鼻子,1隻眼睛,2只耳朵和嘴,雖然沒有尾巴,爪子等其它信息,但是,你依然可以判斷,這裏有一隻貓。所以說,人在理解圖像信息的過程中,更專注於,局部特徵,以及這些特徵之間的組合。
換句話說,在BP全連接神經網絡中,隱含層每一個神經元,都對輸入圖片 每個像素點 做出反應。這種機制包含了太多冗餘連接。爲了減少這些冗餘,只需要每個隱含神經元,對圖片的一小部分區域,做出反應就好了!
卷積神經網絡,正是基於這種想法而實現的。
如果,你學過信號處理,或者有相關專業的數學基礎,可能需要注意一下,這裏的「卷積」,和信號處理裏的卷積,不太一樣,雖然,在數學表達式形式上有一點類似。
在卷積神經網絡中,「卷積」更像是一個,特徵提取算子。什麼是特徵提取算子呢?簡單來說就是,提取圖片紋理、邊緣等特徵信息的濾波器。下面,舉個簡單的例子,解釋一下 邊緣 特徵提取算子是怎麼工作的:
比如有一張貓圖片,人類在理解這張圖片的時候,可能觀察到圓圓的眼睛,可愛的耳朵,於是,判斷這是一隻貓。但是,機器怎麼處理這個問題呢?傳統的計算機視覺方法,通常設計一些算子(特徵提取濾波器,來找到比如眼睛的邊界,耳朵的邊界,等信息,然後綜合這些特徵,得出結論——這是一隻貓。
具體是怎麼做的呢:
如上圖所示,假設,貓的上眼皮部分(框出部分),這部分的數據,展開後如圖中數組所示**(這裏,爲了敘述簡便,忽略了rgb三維通道,把圖像當成一個二維數組[類比灰度圖片]),我們使用一個算子,來檢測橫向邊沿**——這個算子,讓第一行的值減去第三行的值,得出結果。具體計算過程如下,比如,原圖左上角數據,經過這個算子:
然後,算子向右滑動一個像素,得到第二個輸出:533,依次向右滑動,最終得到第一行輸出;
然後,向下滑動一個像素,到達第二行;在第二行,從左向右滑動,得到第二行輸出……
動圖演示過程如下(圖片來自csdn):
[1]https://blog.csdn.net/u014303046/article/details/86021346