卷積神經網路-1
本文來自於網易雲課堂
計算機視覺
多虧了深度學習,計算機視覺得到飛速發展。計算機視覺可以幫助車輛識別行人,訊號燈等並幫助汽車做出響應。計算機還成功應用在人臉識別中,甚至還催生了一種新的藝術形式。
在應用計算機視覺時要面臨一個挑戰就是資料的輸入可能非常大。以前的圖片是64*64*3,這個資料量為12288,而如果你的圖片是1000*1000*3=3百萬個資料量,那麼神經網路的輸入層的維度就有300萬,如果第一層有1000個節點,那麼W[1] = (1000,3m),引數共有30億個,這是一個非常大的數字。在引數如此大的情況下,難以獲取足夠的資料來防止神經網路發生過擬合和競爭需求。而這麼大的神經網路需要的記憶體也讓人無法接受,但是你也不想只處理小圖片,為此你需要進行卷積運算。
邊緣檢測示例
卷積運算是卷積神經網路最基本的組成部分。通過邊緣檢測來演示一下卷積是如何運算的。
對於一個6*6*1的灰度影像,為了檢測影像中的垂直邊緣,你可以構造一個3*3的矩陣,在神經網路的專用術語,它被稱為過濾器(filter)或核(kernal)。卷積(convolution)運算用*表示。
為什麼卷積運算可以用來邊緣檢測呢?在下圖中,卷積結果中的中間白色部分就表示垂直邊緣。當然這裡的維度不太正確,因為檢測到的邊緣太粗了。這是因為這個例子中圖片太小了。如果使用1000*1000的圖片,那麼效果就會好的多。在這個例子中,輸出影像的中間白色部分表示原圖中中間有明顯的垂直邊緣。從中得到的啟發是,因為我們使用的是3*3的矩陣,所以垂直邊緣是3*3的區域,左邊是明亮的畫素,中間不需要考慮,右邊是深色畫素。在左邊圖中,明亮的畫素在左邊(10),灰色畫素在右邊(0),那麼這個就被認為是一個邊界。
更多檢測邊緣內容
對於3*3的矩陣,現在只使用了一種組合,但是實際上有很多種。比如說sobel濾波器,它的優點在於增加了中間一行元素的權重,也就是處在影像中央的畫素點,這使得結果的魯棒性更高一些。但實際上,你可以不使用它們的數字組合而是把他們當做引數讓神經網路自己去學習。得到的濾波器對資料的捕捉能力甚至會超過任何之前手寫的濾波器。
這種將9個數字都當做引數的思想,已經成為計算機視覺中最有效的思想之一。
padding
在卷積神經網路中,一個基本的卷積操作就是padding。在之前,一個6*6的矩陣與3*3的矩陣卷積得到一個4*4的矩陣,這是因為在6*6中只有4*4個可能的位置。這背後的數學解釋是,如果我們有一個n*n的影像,和一個f*f的過濾器,那麼卷積結果就是(n-f+1)(n-f+1)。這樣有2個缺點,第一是每次卷積影像都會縮小。多做幾次可能會縮小到1*1。第二個缺點是角落上的畫素只使用了一次。這意味著丟失了很多資訊。為了解決這些問題,在進行卷積操作之前可以先填充(padding)這幅影像。在這個例子中,你就可以填充一層畫素,那麼6*6就會填充為8*8,得到的輸出就是6*6.習慣上填充0.如果用p代表填充的數量,那麼輸出就是(n+2p-f+1)(n+2p-f+1)。當然你也可以選擇填充2層
置於選擇多少層,通常有2個選擇,分別叫做valid卷積和same卷積。valid卷積意味著不填充。same卷積意味著填充後的輸出層和輸入大小是一致的。那麼p = (f-1)/2,只要f是奇數,那麼只要確定p就能得到一樣的輸出。f很少有偶數的情況,因為這樣的話你只能選擇不對稱填充,另外如果是奇數填充就會有一箇中心點,這個中心點會很方便的指出過濾器的位置。
卷積步長
卷積的步長是另一個基本的卷積操作。如果將卷積步長設定為stride = 2,那麼一個7*7的輸入卷積一個3*3的過濾器就得到了一個3*3的輸出。令padding = p,stride = s,那麼對於n*n的輸入,f*f的過濾器有輸出為
關於互相關和卷積的技術性建議。這不會影響到你構建卷積神經網路的方式但取決於你讀的是數學教材還是訊號處理教材在不同的教材裡符號可能不一致。如果你看的是一本典型的數學教科書,那麼卷積的定義就是元素乘積求和之前還有一個步驟就是你將過濾器水平和垂直翻轉。所以我們之前所做的卷積運算跳過了這個映象操作。從技術上講,我們實際做的是互相關操作而不是卷積。但是在深度學習文獻中,按照慣例,我們將這稱為卷積操作。所以總結說來,按照機器學習的慣例我們通常不翻轉操作,從技術上講這種操作稱為互相關更好。但是大部分文獻都稱為卷積,所以我們也遵從這個約定。事實上,在訊號處理中,卷積的定義包含翻轉,使得(A*B)C=A(B*C),但對於神經網路來說這個性質真的不重要,因此省略了雙重映象操作,就簡化了程式碼,並使神經網路也能正常工作。
下一節介紹立體卷積。
卷積為何有效
過濾器也為 3個通道,那麼如果我們將紅色通道開啟,而其他通道全為0,那麼這個過濾器只對紅色起作用,如果你不關心哪個顏色,那麼你就可以對每個通道都開啟。按照計算機視覺的慣例,當你的輸入有特定的高,寬和通道數時,你的過濾器可以有不同的高寬但必須要有相同的通道數。
如果我們不僅僅想檢測垂直邊緣還想同時檢測水平邊緣或者說如果想同時利用多個過濾器會怎麼樣。只需要把不同過濾器的輸出堆疊起來就可以了。用公式來表示的話就是
相關文章
- 卷積神經網路卷積神經網路
- 吳恩達《卷積神經網路》課程筆記(1)– 卷積神經網路基礎吳恩達卷積神經網路筆記
- 卷積神經網路概述卷積神經網路
- 解密卷積神經網路!解密卷積神經網路
- 5.2.1 卷積神經網路卷積神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 卷積神經網路-AlexNet卷積神經網路
- 卷積神經網路-2卷積神經網路
- 卷積神經網路-3卷積神經網路
- 卷積神經網路—基礎知識(1)卷積神經網路
- 卷積神經網路CNN-學習1卷積神經網路CNN
- 卷積神經網路四種卷積型別卷積神經網路型別
- 全卷積神經網路FCN卷積神經網路
- 深度剖析卷積神經網路卷積神經網路
- 卷積神經網路1-邊緣檢測卷積神經網路
- 卷積神經網路鼻祖LeNet網路分析卷積神經網路
- CNN神經網路之卷積操作CNN神經網路卷積
- 卷積神經網路 part2卷積神經網路
- 14 卷積神經網路(進階)卷積神經網路
- 卷積神經網路(CNN)詳解卷積神經網路CNN
- 何為神經網路卷積層?神經網路卷積
- Tensorflow-卷積神經網路CNN卷積神經網路CNN
- 學習OpenCL與卷積神經網路 Day1卷積神經網路
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 卷積神經網路中的Winograd快速卷積演算法卷積神經網路演算法
- 卷積神經網路:Convolutional Neural Networks(CNN)卷積神經網路CNN
- 卷積神經網路(Convolutional Neural Network,CNN)卷積神經網路CNN
- 直白介紹卷積神經網路(CNN)卷積神經網路CNN
- 卷積神經網路—基本部件(2)卷積神經網路
- 卷積神經網路-啟用函式卷積神經網路函式
- 深度學習三:卷積神經網路深度學習卷積神經網路
- 一文看懂卷積神經網路卷積神經網路
- TensorFlow 卷積神經網路系列案例(1):貓狗識別卷積神經網路
- 1. 從多層感知機到卷積神經網路卷積神經網路
- 經典卷積神經網路LeNet&AlexNet&VGG卷積神經網路
- 卷積神經網路學習筆記——Siamese networks(孿生神經網路)卷積神經網路筆記
- 神經網路之卷積篇:詳解卷積步長(Strided convolutions)神經網路卷積IDE
- (四)卷積神經網路 -- 8 網路中的網路(NiN)卷積神經網路