一文讀懂:GoogleNet的Inception從v1到v4的演變

2021-02-13 機器學習煉丹術
0 概述

GoogleNet和VGG是ImageNet挑戰賽中的第一名和第二名。共同特點就是兩個網絡的層次都更深了。但是:

VGG繼承了LeNet和AlexNet的一些框架結構而GoogleNet則做了更大膽的嘗試,雖然深度有22層,但是參數卻是Alexnet的1/12.而VGG都是Alexnet的三倍,由此可見,在內存和計算資源有限的時候,GoogleNet是好的結構,而且這個的性能更加優越,碾壓VGG。

對於GoogleNet結構的描述,之前寫了一篇文章:

什麼是GoogleNet?什麼是Inception?GoogleNet結構詳解(2014年)

【對了,是GoogLeNet,可不是GoogleNet!!,我之前都打錯了哈哈,據說是向LeNet致敬哈哈哈】

1 Inception v1

總之,Inception是GoogLeNet的核心,GoogLeNet優秀,一方面是運算速度快,而這就是Inception的功勞。設計一個稀疏網絡結構,但是怎麼產生稠密的數據呢。就用這個!CNN中常見的三種卷積核,和池化操作堆疊在一起,一方面增加了網絡的寬度,另一方面也加強了網絡對尺度的是影響。但是這個原始的版本思路是好的,但是計算量太大了,因此作者對3x3和5x5的卷積層之前用了1x1的縮小圖片的channel數量,因此V1是這個樣子:

【1x1的卷積核有什麼用呢?】

1x1卷積的主要目的是為了減少維度,還用於修正線性激活(ReLU)。比如,上一層的輸出為100x100x128,經過具有256個通道的5x5卷積層之後(stride=1,pad=2),輸出數據為100x100x256,其中,卷積層的參數為128x5x5x256= 819200。而假如上一層輸出先經過具有32個通道的1x1卷積層,再經過具有256個輸出的5x5卷積層,那麼輸出數據仍為為100x100x256,但卷積參數量已經減少為128x1x1x32 + 32x5x5x256= 204800,大約減少了4倍。

【為什麼會有池化層在其中呢?】

一般來說,想讓圖像縮小,有以下兩種方式:但是左邊的方法先池化層後inception,這樣會導致特徵的缺失,而右邊的方法,會導致運算量很大。為了同時保持特徵並且降低運算發,將網絡改成下圖,使用兩個並行化的模塊來降低計算量,也就是池化,卷積並行,然後再合併

2 inception V2

設計人員想,如果只是單純的堆疊網絡,雖然可以提高準確率,但是會導致計算效率的下降,如何在不增加過多額計算量的同時提高網絡的表達能力呢?

【卷積分解(Fatorizing Convolutions)】

大尺寸的卷積核可以帶來更大的感受野,但是也意味著更多的參數,比如size=5的卷積核有25個參數,size=3的有9個參數。GoogLeNet團隊提出可以用2個連續的3x3的卷積核組成小網絡來代替單個size=5的卷積層:通過大量的實驗證明,這樣的方案並不會導致表達的缺失。更進一步,團隊考慮了nx1的卷積核,如下圖:因此,任意的nxn的卷積都可以通過nx1後接上1xn來代替。但是團隊發現在網絡的前期使用這樣分解的效果並不好,在中部使用效果才會好。

在這裡插入圖片描述

團隊更新了網絡中的Inception的結構,如下圖:

figure5是原來的v1版本,然後figure6是改成兩個3x3的版本,然後figure7是改成了1xn和nx1的版本。

3 inception v3

最重要的改進就是分解Factorization,把7x7分解成兩個一維的卷積(1x7和7x1),3x3的也是一樣,這樣的好處是,既可以加速運算,又可以將一個卷積拆成兩個卷積,這樣使得網絡的深度進一步加深,並且增加了網絡的非線性。(每增加一層都要用ReLU),此時網絡的輸入也從224x224變成299x299。

4 Inception v4

研究了Inception模塊與殘差連接的結合,ResNet結構大大加深了網絡的深度,而且極大的提高了訓練速度。總之,Inception v4就是利用殘差連接(Residual Connection)來改進v3,得到Inception-ResNet-v1, Inception-ResNet-v2, Inception-v4網絡我們先簡單的看一下什麼是殘差結構:結合起來就是:

然後通過二十個類似的模塊,得到:

相關焦點

  • 【深度學習系列】用PaddlePaddle和Tensorflow實現GoogLeNet InceptionV2/V3/V4
    博客專欄:https://www.cnblogs.com/charlotte77/前文傳送門:【好書推薦&學習階段】三個月教你從零入門深度學習【深度學習系列】PaddlePaddle之手寫數字識別【深度學習系列】卷積神經網絡CNN原理詳解(一)——基本原理【深度學習系列】PaddlePaddle之數據預處理
  • 從Inception v1到Inception-ResNet,一文概覽Inception家族的「奮鬥史」
    較寬的部分是 inception 模塊。(圖源:https://arxiv.org/pdf/1409.4842v1.pdf)GoogLeNet 有 9 個線性堆疊的 Inception 模塊。它有 22 層(包括池化層的話是 27 層)。該模型在最後一個 inception 模塊處使用全局平均池化。不用多說,這是一個深層分類器。
  • 譯文 | Inception-v4,Inception-ResNet 和殘差連接對學習的影響(多圖)
    為了實現這個目的,我們設計了一個新版本的Inception-v4,相比Inception-v3,它有更加統一簡化的網絡結構和更多的inception模塊。從歷史觀點來看,Inception-v3繼承了之前的很多方法。技術性局限主要在於使用DistBelief對分布式訓練進行模型劃分。
  • 經典神經網絡 | 從Inception v1到Inception v4全解析
    Inception v1的主要特點:一是挖掘了1 1卷積核的作用*,減少了參數,提升了效果;二是讓模型自己來決定用多大的的卷積核。1* 1卷積1* 1卷積1* 1卷積不僅可以減少神經網絡的參數量,還可以壓縮通道數,大大提高了計算效率。
  • Inception系列之Inception_v4
    Inceptioin_v4論文《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》基於此提出了一些新的結構,即Inception_v4,Inception_ResNet_v1,Inception_ResNet_v2,並進行了相關實驗測試。
  • 一文概覽Inception家族的「奮鬥史」
    較寬的部分是 inception 模塊。(圖源:https://arxiv.org/pdf/1409.4842v1.pdf)GoogLeNet 有 9 個線性堆疊的 Inception 模塊。它有 22 層(包括池化層的話是 27 層)。該模型在最後一個 inception 模塊處使用全局平均池化。
  • 用PaddlePaddle 和 Tensorflow 實現經典 CNN 網絡 GoogLeNet
    不管從生物的角度還是機器學習的角度,稀疏性都有良好的表現,回想一下在講 AlexNet 這一節提出的 Dropout 網絡以及 ReLU 激活函數,其本質就是利用稀疏性提高模型泛化性(但需要計算的參數沒變少)。
  • 【深度學習系列】用PaddlePaddle和Tensorflow實現經典CNN網絡GoogLeNet
    ,在實驗過程中發現,當我們嘗試增加網絡的層數,或者增加每一層網絡的神經元個數的時候,對準確率有一定的提升,簡單的說就是增加網絡的深度與寬度,但這樣做有兩個明顯的缺點:  解決以上兩個問題的基本方法是將全連接或卷積連接改為稀疏連接。
  • GoogLeNet的心路歷程(一)
    Network Training by Reducing Internal Covariate Shift,ensemble top5 error 4.8%,2015[v3] Rethinking the Inception Architecture for Computer Vision,ensemble top5 error 3.5%,2015[v4] Inception-v4
  • Google最新開源Inception-ResNet-v2,藉助殘差網絡進一步提升圖像...
    相關論文信息可以參看我們的論文Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning(Inception-v4, Inception-ResNet以及殘差連接在學習上的影響):
  • 【模型解讀】GoogLeNet中的inception結構,你看懂了嗎
    Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning[J]. 2016.更加請關注知乎和git項目。
  • 一文讀懂電容傳感器
    藍色標題,獲取文章】 10、一文讀懂光纖傳感器 11、一文讀懂溫溼度傳感器 12
  • 獨家 | 一文讀懂Adaboost
    前面已經說明了Adaboost算法其最終模型訓練集的誤差是有上確界的,也就是說該算法是確切可以收斂到誤差界的。這一點保證了Adaboost算法的可收斂性。算法的優劣勢:前面就Adaboost算法分析了這麼多,那麼它到底有哪些優勢,又有哪些不足呢?
  • 一文讀懂磁傳感器(必須收藏)
    【點擊藍色標題,獲取文章】 >、一文讀懂接近傳感器 3、一文讀懂磁傳感器 4、一文讀懂流量傳感器
  • 一文帶你讀懂計算機視覺
    技術:人臉檢測:Haar,HOG,MTCNN,Mobilenet人臉識別:CNN,Facenet目標識別:alexnet,inceptionnet然後採用現有的計算機視覺架構,例如inception(或resnet),再用計算臉部的嵌入層替換目標識別神經網絡的最後一層。對於數據集中的每個人,(使用啟發式方法)選擇三張臉(負樣本,正樣本,第二正樣本)並將其饋送到神經網絡。這產生了3個嵌入embeddings。
  • 由淺入深學GoogleNet(一)
    "Inception-v4, Inception-Resnet and the Impact of Residual Connections on Learning." ArXiv preprint arXiv:1602.07261 (2016).[7] Lin, Min, Qiang Chen, and Shuicheng Yan. "Network in Network."
  • 一文讀懂「2020限塑令」!
    一文讀懂「2020限塑令」!06 16:58 來源:澎湃新聞·澎湃號·政務 一張圖讀懂限塑令新規