Inception-v3–1st Runner Up (Image Classification) in ILSVRC 2015

Moris
Computer Vision Note
4 min readAug 23, 2021

--

在本章節中,回顧了 Inception-v3 [1]。 通過重新思考inception架構,實現了計算效率和更少的參數。 使用較少的參數可以實現複雜度與 VGGNet 相似的 42 層深度學習網絡

AlexNet [2]:6000 萬個參數

VGGNet [3]:參數量多於AlexNe的3 倍

GoogLeNet / Inception-v1 [4]:700 萬個參數

使用42 層,獲得更低的錯誤率,使其成為 ILSVRCImageNet Large Scale Visual Recognition Competition圖像分類第一名。這是一篇 2016 年的 CVPR 論文,被引用了大約 2000 次。

Image Classification Error Rate in ILSVRC 2015

ImageNet 是一個包含超過 1500 萬張帶標籤的高分辨率圖像的數據集,大約有 22,000 個類別。 ILSVRC 使用 ImageNet 的一個子集,其中包含 1000 個類別中的每個類別中的大約 1000 張圖像。 總共有大約 120 萬張訓練圖像、50,000 張驗證圖像和 100,000 張測試圖像。

About The Inception Versions

Inception有 4 個版本。 第一個 GoogLeNet 是 Inception-v1 [3],但是 Inception-v3 [4] 中有很多錯別字導致對 Inception 版本的錯誤描述。 因此,互聯網上有許多評論在 v2 和 v3 之間混淆。 一些評論甚至認為 v2 和 v3 是相同的,只有一些細微的不同設置。

儘管如此,在 Inception-v4 [5] 中,Google 對版本問題有更清晰的描述:

Inception 深度卷積架構在 (Szegedy et al. 2015a) 中作為 GoogLeNet 引入,這裡命名為 Inception-v1。 後來 Inception 架構以各種方式進行了改進,首先是引入了批量標準化(Ioffe and Szegedy 2015)(Inception-v2)。 後來在第三次代(Szegedy et al. 2015b)中添加了額外的分解思想,在本報告中將其稱為 Inception-v3。”

因此,BN-Inception / Inception-v2 [6] 討論的是 batch normalization,而 Inception-v3 [1] 討論的是factorization思想。

What are covered:

  1. Factorizing Convolutions
  2. Auxiliary Classifiers
  3. Efficient Grid Size Reduction
  4. Inception-v3 Architecture
  5. Label Smoothing As Regularization
  6. Ablation Study
  7. Comparison with State-of-the-art Approaches

1. Factorizing Convolutions

分解卷積(factorizing Convolutions)的目的是在不降低網絡效率的情況下減少連接/參數的數量

1.1. Factorization Into Smaller Convolutions

兩個 3×3 卷積替換一個 5×5 卷積如下:

Two 3×3 convolutions replacing one 5×5 convolution

使用1 layer of 5×5 filter,參數個數=5×5=25

使用22 layers of 3×3 filters,參數個數=3×3+3×3=18

參數個數減少28%

VGGNet [3] 中已經提到了類似的技術。

使用這種技術,一個新的 Inception modules(我在這裡稱之為 Inception Module A)變成:

Inception Module A using factorization

1.2. Factorization Into Asymmetric Convolutions

透過一個 3×1 卷積後跟一個 1×3 卷積去替換原本的 3×3 卷積如下:

One 3×1 convolution followed by one 1×3 convolution replaces one 3×3 convolution

通過使用3×3 filter,參數的數量= 3×3=9

通過使用3×1 and 1×3 filters,參數的數量= 3×1+1×3=6,參數數量減少33%

您可能會問,為什麼我們不用兩個2×2過濾器來代替一個3×3過濾器呢? 如果我們使用兩個2×2過濾器,參數的數量= 2×2×2=8參數數量僅減少11%

有了這種技術,一個新的Inception modules(我在這裡稱它為Inception Module B)變成:

Inception Module B using asymmetric factorization

根據作者的描述,還提出了 Inception module C 用於提升high dimensional representations,如下所示:

Inception Module C using asymmetric factorization

因此,作者提出了這 3 種 Inception Modules 透過factorization,整個網絡的參數數量減少,過擬合的可能性較小,因此網絡可以更深

2. Auxiliary Classifier

GoogLeNet / Inception-v1 [4] 中已經建議使用輔助分類器。 Inception-v3 中有一些修改。
在最後的 17×17 層的頂部僅使用 1 個輔助分類器,而不是使用 2 個輔助分類器。 (整體架構將在後面展示。)

Auxiliary Classifier act as a regularization

目的也不一樣。 在 GoogLeNet / Inception-v1 [4] 中,輔助分類器用於擁有更深的網絡。 在 Inception-v3 中,輔助分類器用作regularizer。 所以,實際上,在深度學習中,modules還是很直觀的。

Inception-v2 [6] 中建議的Batch normalization也用於輔助分類器。

3. Efficient Grid Size Reduction

傳統上,例如 AlexNet 和 VGGNet,特徵圖縮小是通過max pooling完成的。 但缺點要馬是max pooling後接 conv 層過於貪婪,要馬 conv 層後接max pooling過於昂貴。 在這裡,提出了一種有效的網格尺寸減小方法,如下所示:

Conventional downsizing (Top Left), Efficient Grid Size Reduction (Bottom Left), Detailed Architecture of Efficient Grid Size Reduction (Right)

在有效的網格縮減下,採用stride 2的conv算法完成了320幅特徵圖。通過max pooling得到320幅特徵圖。這兩組特色地feature map被連接成640個feature map進入下一層的初始模塊。

通過這種有效的網格尺寸縮減,可以實現成本更低、效率更高的網絡。

4. Inception-v3 Architecture

在文章的段落和表格中有一些結構上的拼寫錯誤。我認為這是由於2015年ILSVRC競爭激烈所致。因此,我研究了實現架構的代碼:

Inception-v3 Architecture (Batch Norm and ReLU are used after Conv)

使用了42層的深度,計算成本僅比GoogLeNet [4]高2.5左右,比VGGNet [3]高效得多

下面是我用於參考架構的鏈接:

PyTorch version of Inception-v3:
https://github.com/pytorch/vision/blob/master/torchvision/models/inception.py

Inception-v3 on Google Cloud
https://cloud.google.com/tpu/docs/inception-v3-advanced

5. Label Smoothing As Regularization

作者提出了一個正則化的機制 LSR,在輸出加入噪聲 (noise) 以對模型進行約束,主要是為了緩解 label 不夠 soft 而導致 overfitting 的問題

原本模型的 loss 計算是採用 cross-entropy,其中 K 為類別數、p(x) 為預測概率、q(x) 為真實值的分佈

每個訓練資料 x 的輸出通常會經過 softmax 進行歸一化,因此在每個類別 k 的預測概率 p(k|x) 為

對於 ground truth 則是採用 one-hot-to-vec 將 label 進行編碼,因此真實值的分佈為

而這樣的方式會存在兩個問題:

1. 可能會導致過擬合的現象,因為模型會傾向於訓練集類別數量多的去預測,而不考慮預測分類錯誤的問題,導致模型泛化能力較差

2. 使模型過於自信,因為模型會鼓勵預測最大值與其他預測值的差距拉大,因而將預測值的信心程度放大,但如此一來反而會降低模型的適應能力,並且若是標註樣本有誤,容易對訓練產生負面影響

為了解決這兩個問題,在真實分佈中加入一個關於 label 但獨立於訓練資料 x 的已知分佈,也就是對模型進行了正則化,讓模型不那麼自信

其中 δ 函數是指當預測類別等於真實類別時,δ為1;兩者不相等時,δ為0,也就是指 one-hot-to-vec 的意思

而作者使用均勻分佈 u(k)=1/K 作為已知分佈

因此加入正則化方法 Label Smoothing Regularization (LSR),loss function 變為

6. Ablation Study

Ablation Study (single-model single-crop)

使用single-model single-crop,我們可以看到當提出的技術相互疊加時,top-1 錯誤率得到了改善:

Inception-v1: 29%
Inception-v2: 25.2%

Inception-v3: 23.4%
+ RMSProp: 23.1%
+ Label Smoothing: 22.8%
+ 7×7 Factorization: 21.6%
+ Auxiliary Classifier: 21.2% (With top-5 error rate of 5.6%)

其中7×7 Factorization是將第一個7×7 conv層分解為 三個 3×3 conv 層。

7. Comparison with State-of-the-art Approaches

Single-Model Multi-Crop Results

使用single-model multi-crop,具有 144 個crops的 Inception-v3 獲得 top-5 錯誤率為 4.2%,優於 2015 年發布的 PReLU-Net 和 Inception-v2。

Multi-Model Multi-Crop Results

使用multi-model multi-crop,擁有144個crop,4個模型集成的Inception-v3 ,得到top-5錯誤率3.58%最終在ILSVRC 2015中獲得第一名(image classification),而獲勝者是ResNet [7] 這將在以後審查。 當然,Inception-v4 [5] 也將在稍後進行審查。

--

--

Moris
Computer Vision Note

An AI engineer who loves deep learning technology and is willing to share resources and learn new technologies