深度學習筆記(27) 經典卷積網路

2021-09-24 14:56:15 字數 3340 閱讀 3801

講了基本構建,比如卷積層、池化層以及全連線層這些元件

事實上,過去幾年計算機視覺研究中的大量研究都集中在如何把這些基本構件組合起來

形成有效的卷積神經網路

最直觀的方式之一就是去看一些案例

就像很多人通過看別人的**來學習程式設計一樣

通過研究別人構建有效元件的案例是個不錯的辦法

實際上在計算機視覺任務中表現良好的神經網路框架往往也適用於其它任務

也就是說,如果有人已經訓練或者計算出擅長識別貓、狗、人的神經網路或者神經網路框架

而新的計算機視覺識別任務是構建乙個自動駕駛汽車

則完全可以借鑑別人的神經網路框架來解決問題

經典的神經網路結構,分別是lenet-5alexnetvggnet

假設有一張32×32×1的

lenet-5可以識別圖中的手寫數字,比如像這樣手寫數字7

lenet-5是針對灰度訓練的

所以的大小只有32×32×1,使用6個5×5的過濾器,步幅為1

由於使用了6個過濾器,步幅為1,padding為0

輸出結果為28×28×6,影象尺寸從32×32縮小到28×28

然後進行平均池化操作,過濾器的寬度為2,步幅為2

影象的尺寸,高度和寬度都縮小了2倍

輸出結果是乙個14×14×6的影象

這張應該不是完全按照比例繪製的

如果嚴格按照比例繪製,新影象的尺寸應該剛好是原影象的一半

接下來是卷積層,用一組16個5×5的過濾器,新的輸出結果有16個通道

lenet-5的**是在2023年撰寫的,當時人們並不使用padding,或者總是使用valid卷積

這就是為什麼每進行一次卷積,影象的高度和寬度都會縮小

所以這個影象從14到14縮小到了10×10

然後又是池化層,高度和寬度再縮小一半

輸出乙個5×5×16的影象

將所有數字相乘,乘積是400

下一層是全連線層,在全連線層中,有400個節點,每個節點有120個神經元

這裡已有乙個全連線層,但有時還會從這400個節點中抽取一部分節點構建另乙個全連線層

就像這樣,有2個全連線層

最後一步就是利用這84個特徵得到最後的輸出,

還可以在這裡再加乙個節點用來** y

^\hat

y^​ 的值

y

^\hat

y^​ 有10個可能的值,對應識別0-9這10個數字

在現在的版本中則使用softmax函式輸出十種分類結果

而在當時,輸出層使用另一種現在很少用的分類器

相比現代版本,這裡得到的神經網路會小一些,只有約6萬個引數

而現在經常看到含有一千萬到一億個引數的神經網路

比這大1000倍的神經網路也不在少數

隨著網路越來越深,影象的高度和寬度在縮小

從最初的32×32縮到28×28,再到14×14、10×10,最後只有5×5

與此同時,隨著網路層次的加深,通道數量一直在增加,從1增加到6個,再到16個

這個神經網路中還有一種模式至今仍然經常用到

就是乙個或多個卷積層後面跟著乙個池化層

然後又是若干個卷積層再接乙個池化層

然後是全連線層

最後是輸出

這種排列方式很常用

過去,人們使用sigmoid函式和tanh函式,而不是relu函式

經典的lenet-5網路在池化後進行了非線性函式處理,而不是softmax函式

用一張227×227×3的作為輸入

第一層使用96個11×11的過濾器,步幅為4

由於步幅是4,因此尺寸縮小到55×55,縮小了4倍左右

然後用乙個3×3的過濾器構建最大池化層,f = 3,步幅s為2

卷積層尺寸縮小為27×27×96

接著再執行乙個5×5的卷積,padding之後

輸出是27×27×276

然後再次進行最大池化,尺寸縮小到13×13

再執行一次same卷積,相同的padding,得到的結果是13×13×384,384個過濾器

再做一次same卷積,最後再進行一次最大池化,尺寸縮小到6×6×256

6×6×256等於9216,將其展開為9216個單元,然後是一些全連線層

最後使用softmax函式輸出識別的結果,看它究竟是1000個可能的物件中的哪乙個

實際上,這種神經網路與lenet有很多相似之處,不過alexnet要大得多

正如前面講到的lenet或lenet-5大約有6萬個引數

而alexnet包含約6000萬個引數

當用於訓練影象和資料集時,alexnet能夠處理非常相似的基本構造模組

這些模組往往包含著大量的隱藏單元或資料,這一點alexnet表現出色

另乙個原因是它使用了relu啟用函式

也叫作vgg-16網路,指這個網路中包含16個卷積層和全連線層,沒有那麼多超引數

首先用3×3,步幅為1的過濾器構建卷積層,padding引數為same卷積中的引數

然後用乙個2×2,步幅為2的過濾器構建最大池化層

因此vgg網路的一大優點是它確實簡化了神經網路結構

這是一種只需要專注於構建卷積層的簡單網路

假設要識別這個影象

在最開始的兩層用64個3×3的過濾器對輸入影象進行卷積,輸出是224×224×64

接著還有一層224×224×64,得到這樣2個厚度為64的卷積層

意味著用64個過濾器進行了兩次卷積

這裡採用的都是大小為3×3,步幅為1的過濾器,並且都是採用same卷積

所以就不再把所有的層都畫出來了,只用一串數字代表這些網路

接下來建立乙個池化層,池化層將輸入影象進行壓縮

從224×224×64縮小112×112×64

然後又是若干個卷積層,使用128個過濾器,以及一些same卷積

然後進行池化,池化後的是56×56×128

接著再用256個相同的過濾器進行三次卷積操作,然後再池化

然後再卷積三次,再池化

如此進行幾輪操作後,將最後得到的7×7×512的特徵圖進行全連線操作

得到4096個單元

然後進行softmax啟用,輸出從1000個物件中識別的結果

這種相對一致的網路結構,缺點是需要巨大的訓練特徵數量,總共包含約1.38億個引數

參考:

深度卷積神經網路VGG 學習筆記

author karen simonyan andrew zisserman years 2014,published as a conference at iclr 2015 vggnet是2014年 imagenet large scalevisual recognition challenge...

深度學習 卷積神經網路

一 卷積神經網路基礎 二 lenet 三 常見的一些卷積神經網路 卷積層的超引數 填充和步幅。步幅 stride 每次卷積核在輸入陣列上滑動的行數與列數。多輸入與輸出通道 將3維陣列除寬高外的一維稱為通道維。1 1卷積層 包含1 1的卷積核的卷積層。1 1卷積核在不改變輸入高寬的情況下調整通道數。如...

深度學習 卷積神經網路

卷積神經網路 convolutional neural networks,cnn 是一類包含卷積計算且具有深度結構的前饋神經網路 feedforward neural networks 是深度學習 deep learning 的代表演算法之一。卷積神經網路具有表徵學習 representation ...