近年來,我們目睹了無數CNN的誕生。這些網路已經變得如此之深以至於使整個模型可視化變得非常困難。我們停止跟蹤它們並將它們視為黑盒模型。

好吧,也許你沒有。但如果你還有愧疚,那麼,你來對地方了!本文是10種常見 CNN架構的可視化,由您真正親自挑選。這些插圖提供了整個模型的更緊湊的視圖,無需向下滾動幾次只是為了看到softmax層。除了這些圖像之外,我還有一些關於它們如何隨時間演變的注釋 – 從5到50個卷積層,從普通的卷積層到模塊,從2-3個塔到32個塔,從7到7到5 ⨉5-但稍後會更多。

通過’common’,我指的是那些預訓練權重通常由深度學習庫(如TensorFlow,Keras和PyTorch)共享供用戶使用的模型,以及通常在課堂上講授的模型。其中一些模型在ImageNet大規模視覺識別挑戰賽(ILSVRC)等競賽中取得了成功

10個CNN架構和他們的論文發表年份
將討論的10個架構和他們的論文發表年份。
Keras提供的預訓練重量,我們將討論6種架構。改編自Keras文檔中的表格。
Keras提供的預訓練重量,我們將討論6種架構。改編自Keras文檔中的表格。

寫這篇文章的動機是沒有很多博客和文章有這些緊湊的可視化(如果你知道任何,請與我分享)。所以我決定寫一個供我們參考。為此,我已經閱讀了論文和代碼(主要來自TensorFlow和Keras)來提出這些視頻。

在這裡,我想補充一點,我們在野外看到的眾多CNN架構是許多因素的結果 – 改進的計算機硬體,ImageNet競爭,解決特定任務,新想法等等。谷歌研究員Christian Szegedy曾經提到過這一點

「這一進步不僅僅是更強大的硬體,更大的數據集和更大的模型的結果,而且主要是新思想,演算法和改進的網路架構的結果。」(Szegedy等,2014)

現在讓我們繼續討論這些野獸並觀察網路架構如何隨著時間的推移而改進!

關於可視化的
注意事項請注意,我已經排除了卷積過濾器的數量,填充,步幅,丟失以及插圖中的展平操作等信息。


內容(按出版年份排序)

  1. LeNet-5
  2. AlexNet
  3. VGG-16
  4. Inception-V1
  5. Inception-V3
  6. RESNET-50
  7. Xception
  8. Inception-V4
  9. Inception-ResNets
  10. ResNeXt-50

傳說


1. LeNet-5(1998)

圖1:LeNet-5架構,基於他們的論文

LeNet-5是最簡單的架構之一。它具有2個卷積層和3個完全連接層(因此「5」 – 神經網路的名稱從它們具有的卷積完全連接層的數量中得出是非常常見的)。我們現在知道的平均彙集層被稱為子採樣層,它具有可訓練的權重(這不是當前設計CNN的當前做法)。該架構有大約60,000個參數

⭐️什麼是小說?

該體系結構已成為標準的「模板」:堆疊卷積和池化層,以及使用一個或多個完全連接的層結束網路。

📝Publication

2. AlexNet(2012)

圖2:AlexNet架構,基於他們的論文

憑藉60M參數,AlexNet有8層–5個卷積和3個完全連接。AlexNet剛剛在LeNet-5上堆疊了幾層。在發表時,作者指出他們的架構是「迄今為止ImageNet子集中最大的卷積神經網路之一」。

⭐️什麼是小說?

他們是第一個將整流線性單元(ReLUs)作為激活功能實現的。

2. CNN中的重疊池。

📝Publication

3. VGG-16(2014年)

圖3:VGG-16架構,基於他們的論文

到現在為止,你已經注意到CNN開始越來越深。這是因為提高深度神經網路性能的最直接方法是增加它們的大小(Szegedy等人)。視覺幾何組織(VGG)的人們發明了VGG-16,它有13個卷積層和3個完全連接層,帶有AlexNet的ReLU傳統。同樣,這個網路只是將更多層疊加到AlexNet上。它由138M 參數組成,佔用大約500MB的存儲空間😱。他們還設計了更深層的變體VGG-19。

⭐️什麼是小說?

  1. 正如他們的摘要中所提到的,本文的貢獻是設計更深層次的網路(大約是AlexNet的兩倍)。

📝Publication

4.Inception-v1(2014)

圖4:Inception-v1架構。該CNN具有兩個輔助網路(在推理時被丟棄)。體系結構是基於圖3中的紙張

這種具有5M參數的22層架構稱為Inception-v1。在這裡,網路網路(見附錄)方法被大量使用,如本文所述。這是通過’初始模塊’完成的。Inception模塊的體系結構設計是近似稀疏結構研究的產物(閱讀論文了解更多!)。每個模塊提出3個想法:

  1. 具有不同濾波器的並行卷積,隨後是串聯,以1×1,3×3和5×5捕獲不同的特徵,從而「聚類」它們。這個想法是由Arora等人提出的。在本文中,Provable學習了一些深層表示,建議採用逐層構造,其中人們應該分析最後一層的相關統計數據,並將它們聚類成具有高相關性的單元組。
  2. 1×1卷積用於降低維數以消除計算瓶頸。
  3. 1×1卷積卷積添加非線性(基於Network In Network論文)。
  4. 作者還引入了兩個輔助分類器,以鼓勵在分類器的較低階段進行區分,增加傳播回來的梯度信號,並提供額外的正則化。所述輔助網路(被連接到輔助分類分支)在推理時間將被丟棄。

值得注意的是,「這種架構的主要標誌是提高了網路內部計算資源的利用率。」

注意:
模塊的名稱(Stem和Inception)在其更高版本(即Inception-v4和Inception-ResNets)之前未用於此版本的Inception。我在這裡添加了它們以便於比較。

⭐️什麼是小說?

  1. 使用密集模塊/塊構建網路。我們不是堆疊卷積層,而是堆疊模塊或塊,其中是卷積層。因此名稱為Inception(參考由Leonardo DiCaprio主演的2010年科幻電影Inception)。

📝Publication

  • 論文:更加深入了解卷積
  • 作者:Christian Szegedy,Wei Liu,Yangqing Jia,Pierre Sermanet,Scott Reed,Dragomir Anguelov,Dumitru Erhan,Vincent Vanhoucke,Andrew Rabinovich。谷歌,密歇根大學,北卡羅來納大學
  • 發表於:2015 IEEE計算機視覺和模式識別會議(CVPR)

5.Inception-v3(2015)

圖5:Inception-v3架構。該CNN具有輔助網路(在推理時被丟棄)。*注意:所有卷積層後面都是批量規範和ReLU激活。架構基於他們的GitHub 代碼

Inception-v3是Inception-v1的後繼產品,具有24M參數。等待Inception-v2的位置?不要擔心它 – 它是v3的早期原型,因此它與v3非常相似但不常用。當作者推出Inception-v2時,他們在其上進行了許多實驗,並記錄了一些成功的調整。Inception-v3是包含這些調整的網路(調整優化器,丟失功能並向輔助網路中的輔助層添加批量標準化)。

Inception-v2和Inception-v3的動機是避免表徵性瓶頸(這意味著大幅減少下一層的輸入維度),並通過使用因子分解方法進行更有效的計算。

注意:
模塊的名稱(Stem,Inception-A,Inception-B等)直到其更高版本即Inception-v4和Inception-ResNets才用於此版本的Inception。我在這裡添加了它們以便於比較。

⭐️什麼是小說?

  1. 首批使用批量標準化的設計師(為簡單起見,未在上圖中反映)。

✨從以前的版本Inception-v1改進了什麼?

  1. n × n卷積分解為非對稱卷積:1× nn ×1 卷積
  2. 分解5×5卷積到兩個3×3卷積運算
  3. 將7×7替換為一系列3×3圈

📝Publication

  • 論文:重新思考計算機視覺的初始架構
  • 作者:Christian Szegedy,Vincent Vanhoucke,Sergey Ioffe,Jonathon Shlens,Zbigniew Wojna。谷歌,倫敦大學學院
  • 發表於:2016 IEEE計算機視覺和模式識別會議(CVPR)

6. ResNet-50(2015)

圖6:ResNet-50架構,基於keras-team 的GitHub 代碼

是的,這是您在文章頂部看到的問題的答案。

從過去的幾個CNN中,我們看到的只是設計中越來越多的層,並且實現了更好的性能。但是「隨著網路深度的增加,準確度變得飽和(這可能不足為奇),然後迅速降級。」微軟研究院的人們用ResNet解決了這個問題 – 使用跳過連接(又稱快捷連接,殘差),同時構建更深層次的模型。

ResNet是批量標準化的早期採用者之一(由Ioffe和Szegedy撰寫的批量標準文件於2015年提交給ICML)。上面顯示的是ResNet-50,具有26M參數。

ResNets的基本構建塊是conv和identity塊。因為它們看起來很相似,你可能會像這樣簡化ResNet-50(不要引用我這個!):

⭐️什麼是小說?

  1. 推廣跳過連接(他們不是第一個使用跳過連接)。
  2. 設計更深的CNN(最多152層),而不會影響模型的泛化能力
  3. 首先使用批量標準化。

📝Publication

  • 論文:圖像識別的深度殘留學習
  • 作者:何開明,張翔宇,任少卿,孫建。微軟
  • 發表於:2016 IEEE計算機視覺和模式識別會議(CVPR)

7. Xception(2016)

圖7:Xception架構,基於keras-team 的GitHub 代碼。深度可分離的卷積用’conv sep’表示。

Xception是Inception的改編版,其中Inception模塊已被深度可分離卷積替換。它與Inception-v1(23M)的參數數量大致相同。

Xception將Inception假設引入eXtreme(因此得名)。什麼是初始假設?謝天謝地,本文中明確提到了這一點(感謝弗朗索瓦!)。

  • 首先,通過1×1卷積捕獲跨通道(或交叉特徵映射)相關性。
  • 因此,通過常規的3×3或5×5卷積捕獲每個通道內的空間相關性。

將這個想法推向極端意味著對每個通道執行1×1 ,然後對每個輸出執行3×3 。這與使用深度可分離卷積替換初始模塊相同。

⭐️什麼是小說?

  1. 完全基於深度可分離卷積層引入CNN。

📝Publication

8.Inception-v4(2016)

圖8:Inception-v4架構。該CNN具有輔助網路(在推理時被丟棄)。*注意:所有卷積層後面都是批量規範和ReLU激活。架構基於他們的GitHub 代碼

來自Google的人們再次使用Inception- v4,43M參數進行攻擊。同樣,這是Inception-v3的改進。主要區別在於Stem組和Inception-C模塊中的一些小變化。作者還「為每個網格大小的Inception塊做出了統一的選擇。」他們還提到「剩餘連接可以顯著提高訓練速度」。

總而言之,請注意,由於模型大小的增加,Inception-v4的效果更好。

✨從以前的版本Inception-v3開始有哪些改進

  1. 更改Stem模塊。
  2. 添加更多Inception模塊。
  3. 統一選擇Inception-v3模塊,意味著為每個模塊使用相同數量的過濾器。

📝Publication

9. Inception-ResNet-V2(2016)

圖9:Inception-ResNet-V2架構。*注意:所有卷積層後面都是批量規範和ReLU激活。架構基於他們的GitHub 代碼

在與Inception-v4相同的論文中,同一作者還介紹了Inception-ResNets – 一系列Inception-ResNet-v1和Inception-ResNet-v2。該系列的後一個成員有56M參數。

✨從以前的版本Inception-v3開始有哪些改進

  1. 將Inception模塊轉換為Residual Inception塊。
  2. 添加更多Inception模塊。
  3. 在Stem模塊之後添加新類型的Inception模塊(Inception-A)。

📝Publication

10. ResNeXt-50(2017)

圖10:ResNeXt架構,基於他們的論文。

如果您正在考慮ResNets,是的,它們是相關的。ResNeXt-50有25M參數(ResNet-50有25.5M)。ResNeXts的不同之處在於在每個模塊中添加了並行塔/分支/路徑,如上面「總共32個塔」所示。

⭐️什麼是小說?

  1. 擴大模塊中並行塔的數量(「基數」)(我的意思是這已經被Inception網路探索過了……)

📝Publication

  • 論文:深度神經網路的聚合殘差變換
  • 作者:Saining Xie,Ross Girshick,PiotrDollár,Zhuowen Tu,Kaiming He。加州大學聖地亞哥分校,Facebook Research
  • 發表於:2017年IEEE計算機視覺和模式識別大會(CVPR)

附錄:網路網路(2014年)

回想一下,在卷積中,像素的值是濾波器和當前滑動窗口中權重的線性組合。作者提出,不是這種線性組合,而是讓我們擁有一個帶有1個隱藏層的迷你神經網路。這就是他們創造的Mlpconv。所以我們在這裡處理的是(卷積神經網路)中的(簡單的1隱藏層)網路。

Mlpconv的這種想法被比作1×1卷積,並成為Inception架構的主要特徵。

⭐️什麼是小說?

  1. MLP卷積層,1×1卷積
  2. 全局平均合併(取每個特徵圖的平均值,並將得到的矢量輸入softmax圖層)

📝Publication

  • 論文:網路中的網路
  • 作者:林敏,陳強,水水燕。新加坡國立大學
  • arXiv preprint,2013

讓我們再次在這裡顯示它們以便於參考:

LeNet-5

AlexNet

VGG-16

Inception-V1

Inception-V3

Inception-V4

Inception-RESNET-V2

Xception

RESNET-50

ResNeXt-50


神經網路可視化的資源

以下是一些可視化您的神經網路的資源:

類似的文章

CNN架構:LeNet,AlexNet,VGG,GoogLeNet,ResNet等……

初始網路版本的簡單指南

參考

我使用了上述提出架構的論文供參考。除此之外,以下是我在本文中使用的其他一些內容:

https://github.com/tensorflow/models/tree/master/research/slim/nets(github.com/tensorflow)

 Keras 團隊實施深度學習模型(github.com/keras-team)

卷積神經網路架構講義:從LeNet到ResNet(slazebni.cs.illinois.edu)

評論:NIN – 網路網路(圖像分類)(towardsdatascience.com)

您在可視化中發現了任何錯誤嗎?還有什麼你認為我應該包括在內的嗎?在下面給我發表評論!

本文轉自towardsdatascience,原文地址