CNN 取得的大多數進展並非源自更強大的硬體、更多的數據集和更大的模型,而主要是由新的想法和算法以及優化的網絡結構共同帶來的結果。
原標題 | Illustrated: 10 CNN Architectures
翻譯 | 廖穎、had_in(電子科技大學)、愛曼紐•西蒙(東南大學)
所謂「常見」,我指的是那些深度學習庫(如TensorFlow、Keras和PyTorch)共享的有預訓練權重的模型,以及通常在課堂上所講的模型。其中一些模型在ImageNet大規模視覺識別挑戰賽(ILSVRC)等競賽中取得了成功。
將討論的10個架構及對應論文的年份
我們將討論在Keras中具有預訓練模型的6種架構。上圖改編自Keras文檔中的一個表。
寫這篇文章的初心是考慮到目前沒有太多圖解網絡結構的博客和文章(如果你知道相關的文章,請分享給我吧)。所以我決定寫一篇文章來作為參考。出於這樣的目的,我閱讀了許多論文和代碼(大多來自TensorFlow和Keras)來完成這篇文章。
補充一點,我們平時看到的卷積神經網絡架構是很多因素的結果——升級的計算機硬體、ImageNet比賽、處理特定的任務、新的想法等等。Google 研究員 Christian Szegedy曾提到:
CNN 取得的大多數進展並非源自更強大的硬體、更多的數據集和更大的模型,而主要是由新的想法和算法以及優化的網絡結構共同帶來的結果。(Christian Szegedy等人,2014)
現在我們繼續介紹,看看網絡結構是如何慢慢優化起來的。
關於可視化圖的說明:可視化圖中沒有再標註卷積核數量、padding、stride、dropout和拉平操作。
目錄 (按發表年份排序)
LeNet-5
AlexNet
VGG-16
Inception-v1
Inception-v3
ResNet-50
Xception
Inception-v4
Inception-ResNets
ResNeXt-50
圖例
1. LeNet-5 (1998)
圖1:LeNet-5架構,引自他們的論文
LeNet-5是最簡單的架構之一。它有2個卷積層和3個全連接層(因此是「5」——神經網絡的名稱通常是由它們擁有的卷積層和全連接層的數量派生出來的)。我們現在所知道的平均池化層被稱為子採樣層,它具有可訓練的權重(和當前設計CNNs不同)。這個架構有大約60,000個參數。
創新點:
這種架構已經成為標準的「模板」:疊加卷積層和池化層,並以一個或多個全連接層結束網絡。
發表:
論文:Gradient-Based Learning Applied to Document Recognition
作者:Yann LeCun, Léon Bottou, Yoshua Bengio, and Patrick Haffner
發表於:Proceedings of the IEEE (1998)
2. AlexNet
圖2:AlexNet結構,引自他們的論文
AlexNet網絡有6千萬個參數,8個網絡層——5個卷積層和3個全連接層。相比於LeNet-5,AlexNet只是堆了更多的網絡層。
在論文發表時,作者指出AlexNet是「在ImageNet子集上訓練的最大的卷積神經網絡之一。」
創新點:
1.他們首次實現將線性整流函數(ReLus)作為激活函數。
2.使用卷積神經網絡的重疊池化。
發表:
論文:深度卷積神經網絡用於ImageNet分類
作者:Alex Krizhevsky, IIya Sutskever, Geoffrey Hinton. 加拿大,多倫多大學
發表於:2012年神經信息處理系統會議(NeurIPS 2012)
3. VGG-16 (2014)
圖3:VGG-16架構,引自他們的論文
你現在應該已經注意到CNNs開始變得越來越深了。這是因為提高深度神經網絡性能最直接的方法是增加它們的大小(Szegedy et. al)。Visual Geometry Group (VGG)的工作人員提出了VGG-16,它有13個卷積層和3個全連接層,繼續採用了AlexNet的ReLU激活函數。同樣,這個網絡只是在AlexNet上堆疊了更多的層。它有138M的參數,占用大約500mb的磁碟空間。他們還設計了一種更深的變型,VGG-19。
創新點:
正如他們在摘要中提到的,本文的貢獻在於設計了更深層次的網絡(大約是AlexNet的兩倍)。
發表:
論文:Very Deep Convolutional Networks for Large-Scale Image Recognition
作者:Karen Simonyan, Andrew Zisserman. University of Oxford, UK.
arXiv 印本, 2014
4. Inception-v1 (2014)
圖4:Inception-v1架構。這個CNN有兩個輔助網絡(在推斷時被丟棄)。體系結構引自論文中的圖3。
這個22層網絡架構具有5M的參數,被稱為 Inception-v1 網絡 。這個架構,如論文中所述,大量使用了Network In Network(參見附錄)方法。這是通過「Inception 模塊」實現的。Inception模塊的架構設計是對稀疏結構近似研究的產物(更多信息請閱讀論文)。每個模塊有3個點改進:
1.使用不同卷積的並行拓撲結構,然後進行連接,獲得1×1、3×3和5×5卷積提取的不同特徵,從而對它們進行「歸併」。這一想法的靈感來自Arora等人在論文Provable bounds for learning some deep representations,改論文提出了一種逐層構建的方法,即分析最後一層的相關統計數據,並將其歸併成具有高相關性的單元組。
2.採用1×1卷積進行降維,消除計算瓶頸。
3.1×1卷積在卷積層中加入非線性(基於Network In Network論文)。
作者還引入了兩個輔助分類器,以使分類器在較淺層的網絡部分也進行識別,以增加反向傳播的梯度信息,並提供額外的正則化。輔助網絡(連接到輔助分類器的分支)在推斷時被丟棄。
創新點:
使用稠密modules/blocks構建網絡。我們並非堆疊卷積層,而是堆疊modules或blocks,其中包含卷積層。Inception得名於2010年由萊昂納多·迪卡普里奧主演的科幻電影《盜夢空間》。
發表:
論文:Going Deeper with Convolutions
作者:Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich. Google, University of Michigan, University of North Carolina
發表於:2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
5. Inception-v3 (2015)
創新點:
引入BN層(為了簡單起見,沒有反映在上面的圖中 )。
與之前的版本 Inception-v1 相比,有什麼改進?
將7×7卷積替換為一系列3×3個卷積
發表:
論文:Rethinking the Inception Architecture for Computer Vision
作者:Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, Zbigniew Wojna. Google, University College London
發表於:2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
6. ResNet-50 (2015)
創新點:推廣跳連接結構skip connections (
發表:
論文:Deep Residual Learning for Image Recognition
作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Microsoft
發表於:2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
7. Xception(2016)
圖7:Xception 架構,基於keras-team在GitHub上的代碼。通道獨立卷積層被記作'conv sep'。
Xception是從Inception上改進,Inception模塊用通道獨立卷積層替換。它與Inception-v1的參數數量大致相同(23M)。
Xception將Inception假設引入eXtreme(因此而得名)。那麼什麼是Inception假設?謝天謝地,文章中明確提到了這一點(感謝François!)
首先,通過1x1卷積核捕獲跨通道(或交叉特徵映射)相關性。
其次,通過常規3x3或5x5卷積捕獲每個通道內的空間相關性。
將這個想法運用到極致意味著對每個通道執行1x1卷積,然後對每個輸出執行3x3。這與用通道獨立卷積替換初始模塊相同。
創新點:
引入完全基於通道獨立卷積層的CNN。
發表:
論文:Xception: Deep Learning with Depthwise Separable Convolutions
作者:François Chollet. Google.
發表於:2017 IEEE Conference on Computer Vision and Pattern Recognition(CVPR)
8. Inception-v4 (2016)
發表:
論文:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
作者:Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google.
發表於:Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence
9. Inception-ResNet-V2 (2016)
與前一個版本 Inception-v3 相比,有什麼改進?
1.將 Inception模塊轉化為Residual Inception模塊。
2.加入更多的Inception模塊。
3.在Stem模塊之後添加一個新的Inception模塊(Inception-A)。
發表:
論文:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
作者:Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google
發表於:Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence
10. ResNeXt-50 (2017)
Fig. 10: ResNeXt架構, 引自對應論文.
發表:
論文:Aggregated Residual Transformations for Deep Neural Networks
作者:Saining Xie, Ross Girshick, Piotr Dollár, Zhuowen Tu, Kaiming He. University of California San Diego, Facebook Research
發表於:2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
附錄:Network In Network (2014)
創新點:1.MLP卷積層, 1×1卷積
2.全局平均池化(取每個特徵map的平均值,並將結果向量輸入softmax層)
發表:
論文: Network In Network
作者: Min Lin, Qiang Chen, Shuicheng Yan. National University of Singapore
arXiv印本, 2013
這裡把10個網絡結構的可視化圖再羅列一下,作簡單的回顧:
LeNet-5
AlexNet
VGG-16
Inception-v1
Inception-v3
Inception-v4
Inception-ResNet-V2
Xception
ResNet-50
ResNeXt-50
神經網絡可視化資源
這裡有一些資源可以讓你可視化你的神經網絡:
Netron (https://lutzroeder.github.io/netron/)
TensorBoard API by TensorFlow(https://www.tensorflow.org/tensorboard/r1/overview)
plot_model API by Keras(https://keras.io/visualization/)
pytorchviz package(https://github.com/szagoruyko/pytorchviz)
類似文章
CNN Architectures: LeNet, AlexNet, VGG, GoogLeNet, ResNet and more ….
A Simple Guide to the Versions of the Inception Network
參考
我使用了提出了上述網絡體系結構的論文作為參考。除此之外,這裡還有一些我在本文中引用的文章:
https://github.com/tensorflow/models/tree/master/research/slim/nets(github.com/tensorflow)
Implementation of deep learning models from the Keras team(github.com/keras-team)
Lecture Notes on Convolutional Neural Network Architectures: from LeNet to ResNet (slazebni.cs.illinois.edu)
Review: NIN — Network In Network (Image Classification)(towardsdatascience.com)
via https://towardsdatascience.com/illustrated-10-cnn-architectures-95d78ace614d
文章來源: https://twgreatdaily.com/GgVXW2wBUcHTFCnf4DGv.html