1. 程式人生 > >Alexnet 和 VGGnet學習整理筆記

Alexnet 和 VGGnet學習整理筆記

Alex Net

AlexNet是2012年ImageNet競賽冠軍獲得者Hinton和他的學生Alex Krizhevsky設計的。也是在那年之後,更多的更深的神經網路被提出,比如優秀的vgg,GoogleLeNet。其官方提供的資料模型,準確率達到57.1%,top 1-5 達到80.2%. 這項對於傳統的機器學習分類演算法而言,已經相當的出色。

上圖所示是caffe中alexnet的網路結構,上圖採用是兩臺GPU伺服器,所以會看到兩個流程圖。下邊把AlexNet的網路結構示意一下:

評價:

(1) AlexNet使用ReLU代替了Sigmoid,其能更快的訓練,同時解決sigmoid在訓練較深的網路中出現的梯度消失,或者說梯度彌散的問題。啟用函式的主要作用是引入了非線性。

(2) 隨機dropout一些神經元,以避免過擬合。

(3) 在以前的CNN中普遍使用平均池化層average pooling,AlexNet全部使用最大池化層 max pooling,避免了平均池化層的模糊化的效果,並且步長比池化的核的尺寸小,這樣池化層的輸出之間有重疊,提升了特徵的豐富性。

(4) 提出LRN層,區域性響應歸一化,對區域性神經元建立了競爭的機制,使得其中響應較大的值變得更大,並抑制反饋較小的。(強者更強,弱者更弱)

(5) 使用了gpu加速神經網路的訓練。

(6) 使用資料增強的方法緩解過擬合現象。

VGG

VGG深度學習模型主要從Alex-net發來而來,其在Alex-net基礎上,主要修改了兩個方面:

i.在第一個卷基層使用更小的filter尺寸和間隔。

ii.在整個圖片和multi-scale上訓練和測試圖片。

1.VGG網路配置結構

2.VGG結構解釋

(1)VGG全部使用3*3卷積核、2*2池化核,不斷加深網路結構來提升效能。

(2)A到E網路變深,引數量沒有增長很多,引數量主要在3個全連線層。

(3)訓練比較耗時的依然是卷積層,因計算量比較大。

(4)VGG有5段卷積,每段有2~3個卷積層,每段尾部用池化來縮小圖片尺寸。

(5)每段內卷積核數一樣,越靠後的段卷積核數越多:64-128-256-512-512。

3. VGG理解

VGG16輸入224*224*3的圖片,經過的卷積核大小為3x3x3,stride=1,padding=1,pooling為採用2x2的max pooling方式:

1.輸入224x224x3的圖片,經過64個卷積核的兩次卷積後,採用一次pooling。經過第一次卷積後,c1有(3x3x3)個可訓練引數。

2.之後又經過兩次128的卷積核卷積之後,採用一次pooling。

3.再經過三次256的卷積核的卷積之後,採用pooling。

4.重複兩次三個512的卷積核卷積之後再pooling。

5.三次Fc。

AlexNet VGG-Net的區別

AlexNet 是一種典型的 convolutional neural network,它由5層 convolutional layer,2層 fully connected layer,和最後一層 label layer (1000個node, 每個node代表ImageNet中的一個類別) 組成。2012年,deep learning的大牛教授 Geoffrey Hinton (University of Toronto, Google) 的學生Alex Krizhevsky 設計了一個8層的CNN,並把它用於ImageNet的image classification,直接把當時最好演算法的錯誤率差不多減半。這引起了computer vision community 的強烈關注。這篇文章的出現也是 deep learning 開始被 computer vision community 接受的關鍵轉折點。如是後來大家把這個8層的CNN命名為AlexNet。

VGG-Net同樣也是一種CNN,它來自 Andrew Zisserman 教授的組 (Oxford),VGG-Net 在2014年的 ILSVRC localization and classification 兩個問題上分別取得了第一名和第二名,VGG-Net不同於AlexNet的地方是:VGG-Net使用更多的層,通常有16-19層,而AlexNet只有8層。另外一個不同的地方是:VGG-Net的所有 convolutional layer 使用同樣大小的 convolutional filter,大小為 3 x 3。

AlexNet和VGG-Net 中的 feature

Deep learning 實際上是一種 feature engineering 的方法。不論是AlexNet還是VGG-Net,倒數第二層都可以很好的描述image全域性特徵,所以它們通常用來當作 input image 新的 feature,用來做 image classification(最後一層N個node的softmax層,代表了N個類別)。那麼, AlexNet 和 VGG-Net 的 intermediate layer(中間層)呢? 他們是否也可以作為特徵來使用? 答案是肯定的。 這些 intermediate convolutional layer 描述了影像的 local feature (區域性特徵),而最後的幾層(倒數第二、第三層) fully connected layer,描述了影像的 global feature (全域性特徵)。如果一個 deep architecture 只有 convolutional layer, 那麼 input image 可以任意大小,可是一旦在convolutional layer 上面疊加上 fully connected layer,input image大小就需要固定了。今年CVPR有好多文章使用 convolutionally filtered intermediate layer 作為 local feature,典型的代表有 Jitendra Malik (Berkeley) 組的 Hypercolumns for Object Segmentation and Fine-grained Localization,Xiaoou Tang (CUHK) 組的 Action Recognition With Trajectory-Pooled Deep-Convolutional Descriptors。

參考: