经典分类网络结构
學(xué)習(xí)目標(biāo)
- 目標(biāo)
- 知道LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)
- 了解經(jīng)典的分類網(wǎng)絡(luò)結(jié)構(gòu)
- 知道一些常見的卷機(jī)網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化
- 知道NIN中1x1卷積原理以及作用
- 知道Inception的作用
- 了解卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程內(nèi)容
- 應(yīng)用
- 無
下面我們主要以一些常見的網(wǎng)絡(luò)結(jié)構(gòu)去解析,并介紹大部分的網(wǎng)絡(luò)的特點(diǎn)。這里看一下卷積的發(fā)展歷史圖。
?
3.3.1 LeNet-5解析
首先我們從一個(gè)稍微早一些的卷積網(wǎng)絡(luò)結(jié)構(gòu)LeNet-5(這里稍微改了下名字),開始的目的是用來識別數(shù)字的。從前往后介紹完整的結(jié)構(gòu)組成,并計(jì)算相關(guān)輸入和輸出。
3.3.1.1 網(wǎng)絡(luò)結(jié)構(gòu)
?
- 激活層默認(rèn)不畫網(wǎng)絡(luò)圖當(dāng)中,這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)當(dāng)時(shí)使用的是sigmoid和Tanh函數(shù),還沒有出現(xiàn)Relu函數(shù)
- 將卷積、激活、池化視作一層,即使池化沒有參數(shù)
3.3.1.2 參數(shù)形狀總結(jié)
| ? | shape | size | parameters |
|---|---|---|---|
| Input | (32,32,3) | 3072 | 0 |
| Conv1(f=5,s=1) | (28,28,6) | 4704 | 450+6 |
| Pool1 | (14,14,6) | 1176 | 0 |
| Conv2(f=5,s=1) | (10,10,16) | 1600 | 2400+16 |
| Pool2 | (5,5,16) | 400 | 0 |
| FC3 | (120,1) | 120 | 48000+120 |
| FC4 | (84,1) | 84 | 10080+84 |
| Ouput:softmax | (10,1) | 10 | 840+10 |
- 中間的特征大小變化不宜過快
事實(shí)上,在過去很多年,許多機(jī)構(gòu)或者學(xué)者都發(fā)布了各種各樣的網(wǎng)絡(luò),其實(shí)去了解設(shè)計(jì)網(wǎng)絡(luò)最好的辦法就是去研究現(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu)或者論文。大多數(shù)網(wǎng)絡(luò)設(shè)計(jì)出來是為了Image Net的比賽(解決ImageNet中的1000類圖像分類或定位問題),后來大家在各個(gè)業(yè)務(wù)上進(jìn)行使用。
3.3.2 AlexNet
2012年,Alex Krizhevsky、Ilya Sutskever在多倫多大學(xué)Geoff Hinton的實(shí)驗(yàn)室設(shè)計(jì)出了一個(gè)深層的卷積神經(jīng)網(wǎng)絡(luò)AlexNet,奪得了2012年ImageNet LSVRC的冠軍,且準(zhǔn)確率遠(yuǎn)超第二名(top5錯(cuò)誤率為15.3%,第二名為26.2%),引起了很大的轟動。AlexNet可以說是具有歷史意義的一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)。
?
- 總參數(shù)量:60M=6000萬,5層卷積+3層全連接
- 使用了非線性激活函數(shù):ReLU
- 防止過擬合的方法:Dropout,數(shù)據(jù)擴(kuò)充(Data augmentation)
- 批標(biāo)準(zhǔn)化層的使用
3.3.3 卷積網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化
3.3.3.1 常見結(jié)構(gòu)特點(diǎn)
整個(gè)過程:AlexNet—NIN—(VGG—GoogLeNet)—ResNet
- NIN:引入1 * 1卷積
- VGG,斬獲2014年分類第二(第一是GoogLeNet),定位任務(wù)第一。
- 參數(shù)量巨大,140M = 1.4億
- 19layers
- VGG 版本
- VGG16
- VGG19
?
- GoogleNet,2014年比賽冠軍的model,這個(gè)model證明了一件事:用更多的卷積,更深的層次可以得到更好的結(jié)構(gòu)。(當(dāng)然,它并沒有證明淺的層次不能達(dá)到這樣的效果)
- 500萬的參數(shù)量
- 22layers
- 引入了Inception模塊
- Inception V1
- Inception V2
- Inception V3
- Inception V4
?
- 下面我們將針對卷積網(wǎng)絡(luò)架構(gòu)常用的一些結(jié)構(gòu)進(jìn)行詳細(xì)分析,來探究這些結(jié)構(gòu)帶來的好處
3.3.4 Inception 結(jié)構(gòu)
首先我們要說一下在Network in Network中引入的1 x 1卷積結(jié)構(gòu)的相關(guān)作用
3.3.4.1MLP卷積(1 x 1卷積)
?
- 目的:提出了一種新的深度網(wǎng)絡(luò)結(jié)構(gòu),稱為“網(wǎng)絡(luò)中的網(wǎng)絡(luò)”(NIN),增強(qiáng)接受域內(nèi)局部貼片的模型判別能力。
- 做法
- 對于傳統(tǒng)線性卷積核:采用線性濾波器,然后采用非線性激活。
- 提出MLP卷積取代傳統(tǒng)線性卷積核
- 作用或優(yōu)點(diǎn):
- 1、多個(gè)1x1的卷積核級聯(lián)加上配合激活函數(shù),將feature map由多通道的線性組合變?yōu)榉蔷€性組合(信息整合),提高特征抽象能力(Multilayer Perceptron,縮寫MLP,就是一個(gè)多層神經(jīng)網(wǎng)絡(luò))
- 2、1x1的卷積核操作還可以實(shí)現(xiàn)卷積核通道數(shù)的降維和升維,實(shí)現(xiàn)參數(shù)的減小化
3.3.4.2 1 x 1卷積介紹
?
從圖中,看到1 x 1卷積的過程,那么這里先假設(shè)只有3個(gè)1x1Filter,那么最終結(jié)果還是56x56x3。但是每一個(gè)FIlter的三個(gè)參數(shù)的作用
- 看作是對三個(gè)通道進(jìn)行了線性組合。
我們甚至可以把這幾個(gè)FIlter可以看成就是一個(gè)簡單的神經(jīng)元結(jié)構(gòu),每個(gè)神經(jīng)元參數(shù)數(shù)量與前面的通道數(shù)量相等。
- 通常在卷積之后會加入非線性激活函數(shù),在這里之后加入激活函數(shù),就可以理解成一個(gè)簡單的MLP網(wǎng)絡(luò)了。
?
3.3.4.3 通道數(shù)變化
那么對于1x1網(wǎng)絡(luò)對通道數(shù)的變化,其實(shí)并不是最重要的特點(diǎn),因?yàn)楫吘? x 3,5 x 5都可以帶來通道數(shù)的變化,
而1x1卷積的參數(shù)并不多,我們拿下面的例子來看。
?
- 保持通道數(shù)不變
- 提升通道數(shù)
- 減少通道數(shù)
3.3.4.4 Inception層
這個(gè)結(jié)構(gòu)其實(shí)還有名字叫盜夢空間結(jié)構(gòu)。
- 目的:
- 代替人手工去確定到底使用1x1,3x3,5x5還是是否需要max_pooling層,由網(wǎng)絡(luò)自動去尋找適合的結(jié)構(gòu)。并且節(jié)省計(jì)算。
?
- 特點(diǎn)
- 是每一個(gè)卷積/池化最終結(jié)果的長、寬大小一致
- 特殊的池化層,需要增加padding,步長為1來使得輸出大小一致,并且選擇32的通道數(shù)
- 最終結(jié)果28 x 28 x 256
- 使用更少的參數(shù),達(dá)到跟AlexNet或者VGG同樣類似的輸出結(jié)果
3.3.4.5 Inception改進(jìn)
改進(jìn)目的:減少計(jì)算,如5 x 5卷積那的運(yùn)算量
?
?
- 上面的參數(shù):5 x 5 x 32 x 192 =153600
- 下面的參數(shù):192 x 16 + 5 x 5 x 16 x 32 = 3072 + 12800 = 15872
所以上面的結(jié)構(gòu)會需要大量的計(jì)算,我們把這種改進(jìn)的結(jié)構(gòu)稱之為網(wǎng)絡(luò)的"瓶頸",網(wǎng)絡(luò)縮小后擴(kuò)大。
那么這樣改變會影響網(wǎng)絡(luò)的性能和效果嗎?
GoogleNet就是如此,獲得了非常好的效果。所以合理的設(shè)計(jì)網(wǎng)絡(luò)當(dāng)中的Inception結(jié)構(gòu)能夠減少計(jì)算,實(shí)現(xiàn)更好的效果。
3.3.4.6 GoogleNet結(jié)構(gòu)(了解)
其中包含了多個(gè)Inception結(jié)構(gòu)。
?
完整結(jié)構(gòu):
?
3.3.5 卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)特征可視化
我們肯定會有疑問真?zhèn)€深度的卷積網(wǎng)絡(luò)到底在學(xué)習(xí)什么?可以將網(wǎng)絡(luò)學(xué)習(xí)過程中產(chǎn)生的特征圖可視化出來,并且對比原圖來看看每一層都干了什么。
- 可視化案例使用的網(wǎng)絡(luò)
?
- 可視化結(jié)果
?
?
?
?
?
- layer1,layer2學(xué)習(xí)到的特征基本是顏色、邊緣等低層特征
- layer3學(xué)習(xí)到的特征,一些紋理特征,如網(wǎng)格紋理
- layer4學(xué)習(xí)到的特征會稍微復(fù)雜些,比如狗的頭部形狀
- layer5學(xué)習(xí)到的是完整一些的,比如關(guān)鍵性的區(qū)分特征
3.3.6 總結(jié)
- 掌握LeNet-5 結(jié)構(gòu)計(jì)算
- 了解卷積常見網(wǎng)絡(luò)結(jié)構(gòu)
- 掌握1x1卷積結(jié)構(gòu)作用
- 掌握Inception結(jié)構(gòu)作用
總結(jié)
- 上一篇: 卷积神经网络(CNN)原理
- 下一篇: CNN网络实战技巧