【Network architecture】Rethinking the Inception Architecture for Computer Vision(inception-v3)論文解析
0. paper link
inception-v3
1. Overview
??這篇文章很多“經驗”性的東西,因此會寫的比較細,把文章裏的一些話摘取出來,多學習一下,希望對以後自己設計網絡有幫助。
2. Four General Design Principles
??這裏文章介紹了四種設計網絡設計原則,這是作者利用各種卷積網絡結構,通過大量的實驗推測的。
- 避免特征表示瓶頸,尤其是在網絡的前面。要避免嚴重壓縮導致(pooling,卷積等操作)的瓶頸。特征表示尺寸應該溫和的減少,從輸入端到輸出端。特征表示的維度只是一個粗淺的信息量表示,它丟掉了一些重要的因素如相關性結構
- 高維的信息(representations)更適合在網絡的局部處理。在卷積網絡中逐步增加非線性激活響應可以解耦合更多的特征(獨立更多特征),那麽網絡就會訓練的更快。
- 空間聚合可以在較低維度嵌入上完成,而不會在表示能力上造成許多或任何損失。例如,在執行更多展開(例如3×3)卷積之前,可以在空間聚合之前減小輸入表示的維度,沒有預期的嚴重不利影響。我們假設,如果在空間聚合上下文中使用輸出,則相鄰單元之間的強相關性會導致維度縮減期間的信息損失少得多。鑒於這些信號應該易於壓縮,因此尺寸減小甚至會促進更快的學習(inception-v1中提出的用1x1卷積先降維再作特征提取就是利用這點。不同維度的信息有相關性,降維可以理解成一種無損或低損壓縮,即使維度降低了,仍然可以利用相關性恢復出原有的信息。)
- 平衡好網絡的深度和寬度。通過平衡網絡每層濾波器的個數和網絡的層數可以是網絡達到最佳性能。增加網絡的寬度和深度都會提升網絡的性能,但是兩者並行增加獲得的性能提升是最大的。
3. Factorizing Convolutions with Large Filter Size
??這裏作者開始 Factorizing Convolutions,GoogLeNet 網絡優異的性能主要源於大量使用降維處理。這種降維處理可以看做通過分解卷積來加快計算速度的手段。在一個計算機視覺網絡中,相鄰激活響應的輸出是高度相關的,所以在聚合前降低這些激活影響數目不會降低局部表示能力。因此可以利用這些省下來的計算跟存儲資源來增加卷積核的尺寸同時保持可以在一臺電腦訓練每一個模型的能力。
3.1 Factorization into smaller convolutions
??大的空間濾波器雖然可以在更前面的層有更大的感受野,獲得更遠的單元激活之間,信號之間的依賴關系,但是在計算量方面很大。
??如果放大5×5卷積的計算圖,我們看到每個輸出看起來像一個小的完全連接的網絡,在其輸入上滑過5×5的塊(見圖1)。由於我們正在構建視覺網絡,所以通過兩層的卷積結構再次利用平移不變性
3.2. Spatial Factorization into Asymmetric Convolutions
??文章提到大於3x3的卷積核可能不是一直有用的,因為他總可以變成幾個3x3的卷積核, 那麽是不是可以把3x3分解成更小的?文章提出了非對稱卷積: nx1 後面 接一個 1xn, 可以減少比2x2更少的計算量,而且隨著n上升,計算成本節省顯著增加。下圖是把3x3的變成3x1 + 1x3.
但是實際上,作者發現采用這種分解在前面的層次上不能很好地工作,但是對於中等網格尺寸(在m×m特征圖上,其中m範圍在12到20之間),其給出了非常好的結果。在這個水平上,通過使用1×7卷積,然後是7×1卷積可以獲得非常好的結果。
4. Utility of Auxiliary Classifiers
??GoogLeNet-v1引入輔助分類器為了防止梯度消失加快收斂用的,作者通過實驗發現輔助分類器在訓練前期沒什麽用,後期會比沒有分類器得高一點。最下面的輔助分類器去掉也沒什麽影響,作者猜測輔助分類器主要用來增強模型正則化,因為輔助分類器加上BN層以及dropout也會增強主分類器性能。
5. Efficient Grid Size Reduction
??為了避免第一條準則中提到的計算瓶頸所造成的的信息損失,一般會通過增加濾波器的數量來保持表達能力,但是計算量會增加,如下圖:
??作者提出了一種並行的結構,使用兩個並行的步長為2的模塊,P 和 C。P是一個池化層,C是一個卷積層,然後將兩個模型的響應組合到一起:
6. Inception-v2
??把7x7卷積替換為3個3x3卷積。包含3個Inception部分。第一部分是35x35x288,使用了2個3x3卷積代替了傳統的5x5;第二部分減小了feature map,增多了filters,為17x17x768,使用了nx1->1xn結構;第三部分增多了filter,使用了卷積池化並行結構。網絡有42層,但是計算量只有GoogLeNet的2.5倍,另外inception-v3是加上了輔助分類器,並且輔助分類器也加入了BN層。具體參數如下圖:
圖5.6.7如下圖
7. Model Regularization via Label Smoothing
??這裏作者寫了一個新的loss,其實也不難理解,但不想敲latex了,copy一下翻譯
8. Training Methodology
TensorFlow 。
batch-size=32,epoch=100。SGD+momentum,momentum=0.9。
RMSProp,decay=0.9,?=0.1。
lr=0.045,每2個epoch,衰減0.94。
梯度最大閾值=2.0。
9. Performance on Lower Resolution Input
??對於低分辨率的圖像,一個比較方法是使用更高分辨率的感受野,如果我們僅僅改變輸入的分辨率而不改模型性能會比較低。
299x299:步長為2,然後接max pooling
151x151:步長為1,然後接max pooling
79x79:步長為1,沒有接max pooling
三者的參數是相同的,但感受野不同,最終的結果表明感受野越大,效果越好,但是差別不大。但是,如果單純的根據輸入分辨率減少網絡的大小,則最終的效果要差很多。
10. Experiment
實驗結果如下:
【Network architecture】Rethinking the Inception Architecture for Computer Vision(inception-v3)論文解析