最強總結,必會的六大卷積神經網絡架構
1.LeNet
LeNet 是由 Yann LeCun 等人在 1990 年提出的,是最早的卷積神經網絡之一,主要用于手寫數字識別。
LeNet 的架構簡單,但為現代 CNN 的發展奠定了基礎。
架構
- 輸入:32×32 像素的灰度圖像
- 第1層:卷積層,使用 6 個 5×5 的卷積核,輸出尺寸為 28×28。
- 第2層:池化層,采用平均池化,步幅為 2,輸出尺寸為 14×14。
- 第3層:卷積層,使用 16 個 5×5 的卷積核,輸出尺寸為 10×10。
- 第4層:池化層,再次使用平均池化,輸出尺寸為 5×5。
- 第5層:全連接層,將 5×5 的特征圖拉直,輸入到全連接層,輸出 120 個神經元。
- 第6層:全連接層,輸出 84 個神經元。
- 輸出層:10 個神經元,用于分類 10 種手寫數字。
圖片
特點:
- 引入了卷積和池化的概念。
- 使用了 Sigmoid 或 Tanh 作為激活函數。
2.AlexNet
AlexNet 是 2012 年 ILSVRC 競賽中的冠軍,由 Alex Krizhevsky 等人提出,標志著深度學習在計算機視覺領域的巨大突破。
它在 ImageNet 數據集上表現優異,成功應用了 ReLU 激活函數和 Dropout。
架構
- 輸入:224×224×3 的 RGB 圖像
- 第1層:卷積層,96 個 11×11 的卷積核,步幅為 4,輸出尺寸為 55×55×96,接 ReLU 激活。
- 第2層:池化層,最大池化,步幅為 2,輸出尺寸為 27×27×96。
- 第3層:卷積層,256 個 5×5 的卷積核,步幅為 1,輸出尺寸為 27×27×256,接 ReLU 激活。
- 第4層:池化層,最大池化,步幅為 2,輸出尺寸為 13×13×256。
- 第5層:卷積層,384 個 3×3 的卷積核,步幅為 1,輸出尺寸為 13×13×384,接 ReLU 激活。
- 第6層:卷積層,384 個 3×3 的卷積核,輸出尺寸為 13×13×384。
- 第7層:卷積層,256 個 3×3 的卷積核,輸出尺寸為 13×13×256。
- 第8層:池化層,最大池化,輸出尺寸為 6×6×256。
- 第9層:全連接層,4096 個神經元,接 Dropout。
- 第10層:全連接層,4096 個神經元,接 Dropout。
- 輸出層:1000 類的 Softmax 分類。
圖片
特點
- 使用了 ReLU 代替 Sigmoid,解決了梯度消失問題。
- Dropout 防止過擬合。
- 使用了多個 GPU 進行并行訓練。
3.ZFNet
ZFNet 是 AlexNet 的改進版本,由 Matthew Zeiler 和 Rob Fergus 提出,旨在通過更好的超參數調整(如卷積核大小和步幅)來改進 AlexNet 的性能。
架構
- 輸入:224×224×3 的 RGB 圖像
- 第1層:卷積層,96 個 7×7 的卷積核,步幅為 2,輸出尺寸為 55×55×96,接 ReLU 激活。
- 第2層:最大池化層,步幅為 2,輸出尺寸為 27×27×96。
- 第3層:卷積層,256 個 5×5 的卷積核,步幅為 2,輸出尺寸為 27×27×256。
- 第4層:最大池化層,步幅為 2,輸出尺寸為 13×13×256。
- 第5層:卷積層,384 個 3×3 的卷積核,輸出尺寸為 13×13×384。
- 第6層:卷積層,384 個 3×3 的卷積核,輸出尺寸為 13×13×384。
- 第7層:卷積層,256 個 3×3 的卷積核,輸出尺寸為 13×13×256。
- 第8層:最大池化層,輸出尺寸為 6×6×256。
- 后續結構與 AlexNet 類似,經過全連接層和 Softmax 分類。
圖片
特點
- 改進了卷積核大小,提升了感受野。
4.VGGNet
VGGNet 是 2014 年由 Oxford University's Visual Geometry Group 提出的,它因其結構簡單、深度較深而聞名。
VGGNet 使用了較小的卷積核(3×3),并通過堆疊多個卷積層來增加模型深度,而不是使用大的卷積核。
VGGNet 提供了 VGG-16 和 VGG-19 兩個變體,分別包含 16 和 19 個卷積層。
架構
- 輸入:224×224×3 的 RGB 圖像。
- 使用固定的 3×3 卷積核,步幅為 1,padding 為 1,以保持輸入輸出大小相同。
- 每經過幾個卷積層之后,應用 2×2 的最大池化層,步幅為 2,減半圖像尺寸。
- 有兩種主要變體:
- VGG-16:13 個卷積層,3 個全連接層,共 16 層。
- VGG-19:16 個卷積層,3 個全連接層,共 19 層。
- 最終的全連接層為 4096 個神經元,之后是一個 1000 類分類器(用于 ImageNet 數據集)。
圖片
特點
- 全部使用 3×3 的卷積核,堆疊較多層數。
- 參數量較大,計算代價較高。
5.GoogLeNet
GoogLeNet,或稱為 Inception v1,是 Google 在 2014 年提出的網絡結構,它的主要貢獻是引入了 Inception 模塊,它通過結合不同尺度的卷積操作來提高特征提取的多樣性,從而更好地捕捉不同層次的特征。
Inception 模塊
Inception 模塊的核心在于捕捉不同尺度的特征。
通過引入多個并行的卷積操作(1x1、3x3、5x5),以及一個池化操作,網絡可以從不同的卷積層中提取多尺度信息。
這種結構減少了對特定卷積核大小的依賴,增強了網絡的魯棒性。
- 1x1卷積,主要用于減少通道維度,降低計算復雜度。
- 3x3卷積和5x5卷積,用于提取局部特征。
- 最大池化,增加網絡的平移不變性,減少過擬合。
每個Inception模塊會將這些操作的輸出進行拼接,合成為一個新的特征圖,再傳遞給下一層。
圖片
架構細節
- 輸入層,輸入圖像大小為224x224x3。
- 卷積層和池化層,最初的幾層是常規的卷積和池化層。
- Inception模塊,從網絡的中間部分開始,重復使用Inception模塊。
- 全局平均池化,在最后的卷積層后,GoogLeNet 使用全局平均池化替代全連接層,減少了參數數量。
- 輔助分類器,為了應對梯度消失問題,GoogLeNet在中間層引入了兩個輔助分類器(Auxiliary Classifier)。這些分類器在訓練過程中提供額外的監督,保證梯度能夠有效傳播。
圖片
6.ResNet
ResNet 是一種深度卷積神經網絡,它通過引入殘差連接(Residual Connection)解決了隨著網絡深度增加而產生的梯度消失或梯度爆炸問題,從而使網絡能夠更有效地訓練更深層次的網絡。
圖片
原理
ResNet 的核心思想是殘差學習,它的創新點在于引入了“跳躍連接”,即殘差塊(Residual Block)。
傳統的神經網絡中,每一層直接學習一個新的變換 H(x),而 ResNet 提出的思想是讓每一層學習一個“殘差”函數,即 ,因此實際的輸出是 。
圖片
殘差塊
針對不同深度的 ResNet,作者提出了兩種殘差塊。
圖片
- 基本殘差塊
基本殘差塊是最基礎的殘差單元,適用于較淺的網絡結構,如 ResNet-18 和 ResNet-34。
這種殘差塊包含兩個連續的 3x3 卷積層,每一層后面都緊跟著批歸一化和 ReLU 激活函數。 - 瓶頸殘差塊
瓶頸殘差塊是為深層網絡設計的,如 ResNet-50、ResNet-101 和 ResNet-152。
它的目的是在減少計算復雜度的同時,仍保持足夠的表征能力。
瓶頸殘差塊通過先壓縮通道數,然后進行卷積操作,再擴展回原通道數的策略,減少了計算開銷。
第一層,使用 1×1 卷積核,主要目的是減少輸入的維度,這有助于減少后續層的計算負擔。
第二層,標準的 3×3 卷積層,在降維后的特征上進行空間特征提取。
第三層,再次使用 1×1 卷積核,目的是恢復通道數,為將輸出與跳躍連接相加做準備。
跳躍連接,如果輸入與輸出的維度不匹配(通常在跨越殘差塊時會改變維度),快捷連接上也會應用 1×1 卷積來調整維度,確保能夠與主路徑上的輸出相加。