你应该知道的,十二大CNN算法
大家好,我是K同學啊!
今天和大家分享一下自1998~2022年來,涌現出來的那些優秀的圖像識別算法模型。
目錄(按出版年份排序)
- 1. LeNet-5 (1998)
 - 2. AlexNet (2012)
 - 3. VGG-16 (2014)
 - 4. Inception-v1 (2014)
 - 5. Inception-v3 (2015)
 - 6. ResNet-50 (2015)
 - 7. Xception (2016)
 - 8. Inception-v4 (2016)
 - 9. Inception-ResNet-V2 (2016)
 - 10. ResNeXt-50 (2017)
 - 11. RegNet(2020)
 - 12. ConvNeXt(2022)
 
1. LeNet-5 (1998)
?? 簡介
LeNet-5模型是Yann LeCun教授于1998年在論文《Gradient-based learning applied to document recognition》中提出。它是第一個成功應用于手寫數字識別問題并產生實際商業(郵政行業)價值的卷積神經網絡。LeNet-5被譽為是卷積神經網絡的“Hello Word”,它是最簡單的架構之一。LeNet-5有 2 個卷積層和 3 個全連接層,有大約 60,000 個參數。
📝 論文
- 論文:Gradient-Based Learning Applied to Document Recognition
 - 作者:Yann LeCun、Léon Bottou、Yoshua Bengio 和 Patrick Haffner
 - 發表于: IEEE Proceedings of the IEEE (1998)
 
📚 實戰案例
- 深度學習100例-卷積神經網絡(LeNet-5)深度學習里的“Hello Word” | 第22天
 
2. AlexNet (2012)
 ?? 簡介
AlexNet 由Alex Krizhevsky于2012年提出,奪得2012年ILSVRC比賽的冠軍,top5預測的錯誤率為16.4%,遠超第一名。AlexNet采用8層的神經網絡結構,5個卷積層和3個全連接層(3個卷積層后面加了最大池化層),模型參數個數為60M。AlexNet主要的變化在于激活函數采用了Relu(是第一個將流線性單元 (ReLU) 實現為激活函數的模型)、使用Dropout代替正則降低過擬合。
📝 論文
- 論文:ImageNet Classification with Deep Convolutional Neural Networks
 - 作者:Alex Krizhevsky、Ilya Sutskever、Geoffrey Hinton。加拿大多倫多大學。
 - 發表于:NeurIPS 2012
 
📚 實戰案例
- 深度學習100例-卷積神經網絡(AlexNet)手把手教學 | 第11天
 
3. VGG-16 (2014)
 ?? 簡介
截至到2014,由于加深網絡成了提高深度神經網絡性能最直接的方法,CNN開始變得越來越深入。Visual Geometry Group (VGG) 團隊發明了 VGG-16,它有 13 個卷積層和 3 個全連接層,同時繼承了 AlexNet 的 ReLU 傳統。該網絡在 AlexNet 上堆疊了更多層,并使用了更小的過濾器(2×2 和 3×3)。它由138M個參數組成,占用大約500MB的存儲空間。與此同時,他們還設計了一個更深的變體,VGG-19。
📝 論文
- 論文:Very Deep Convolutional Networks for Large-Scale Image Recognition
 - 作者:Karen Simonyan、Andrew Zisserman。英國牛津大學。
 - arXiv 預印本,2014
 
📚 實戰案例
- 深度學習100例-卷積神經網絡(VGG-16)識別海賊王草帽一伙 | 第6天
 - 深度學習100例-卷積神經網絡(VGG-16)貓狗識別 | 第21天
 
4. Inception-v1 (2014)
 ?? 簡介
Inception-v1 是 Inception 網絡的第一個版本,Inception V1在GoogLeNet基礎之上,為了減少5x5卷積的計算量,在3x3conv前、5x5conv前、3x3max pooling后分別加上1x1的卷積核,起到減少總的網絡參數數量的作用(參數總量為5M)。其主體是Inception模塊,Inception模塊的體系結構設計是近似稀疏結構研究的產物。
🎈 Inception?V1相比GoogLeNet原始版本進行了如下改進:
- 為了減少5x5卷積的計算量,在3x3conv前、5x5conv前、3x3max pooling后分別加上1x1的卷積核,減少了總的網絡參數數量;
 - 網絡最后層采用平均池化(average pooling)代替全連接層,該想法來自NIN(Network in Network),事實證明這樣可以將準確率提高0.6%。但是,實際在最后還是加了一個全連接層,主要是為了方便對輸出進行靈活調整;
 - 網絡中仍然使用Dropout ;
 - 為了避免梯度消失,網絡額外增加了2個輔助的softmax用于向前傳導梯度(輔助分類器)。輔助分類器是將中間某一層的輸出用作分類,并按一個較小的權重(0.3)加到最終分類結果中,這樣相當于做了模型融合,同時給網絡增加了反向傳播的梯度信號,也提供了額外的正則化,對于整個網絡的訓練很有裨益。在實際測試時,這兩個額外的softmax會被去掉。
 
📝 論文
- 論文:Going Deeper with Convolutions
 - 作者: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)
 ?? 簡介
Inception-v3 是 Inception-v1 的繼承者,有24M個參數。Inception-v2是 v3 的早期原型,因此它與 v3 非常相似但不常用。當作者提出 Inception-v2 時,他們對其進行了許多實驗,并記錄了一些成功的調整。Inception-v3 是包含這些調整的網絡(調整優化器、損失函數以及向輔助網絡中的輔助層添加批量歸一化)
Inception-v2 和 Inception-v3 的動機是避免 代表性瓶頸 representational bottlenecks (這意味著大幅減少下一層的輸入維度)并通過使用因子分解方法進行更有效的計算。
注意:
 模塊的名稱(Stem,Inception-A,Inception-B等)直到其更高版本即Inception-v4和Inception-ResNets才用于此版本的Inception。
? 與之前的版本Inception-v1 相比有什么改進?
📝 刊物
- 論文:Rethinking the Inception Architecture for Computer Vision
 - 作者:Christian Szegedy、Vincent Vanhoucke、Sergey Ioffe、Jonathon Shlens、Zbigniew Wojna。谷歌,倫敦大學學院
 - 發表于:2016 年 IEEE 計算機視覺和模式識別會議 (CVPR)
 
📚 實戰案例
- 深度學習100例 - 卷積神經網絡(Inception V3)識別手語 | 第13天
 
6. ResNet-50 (2015)
 ?? 簡介
從上面的幾個 CNN 中,我們可以看到神經網絡的層數越來越多,并獲得了更好的性能。但是隨著網絡深度的增加,準確度會逐漸飽和然后迅速下降。微軟研究院的人用 ResNet 解決了這個問題——使用跳過連接(又名快捷連接,殘差),同時構建更深層次的模型。
ResNet 是批標準化的早期采用者之一(由 Ioffe 和 Szegedy 撰寫的批規范論文于 2015 年提交給 ICML)。上圖是 ResNet-50,有26M參數。
📝 論文
- 論文:Deep Residual Learning for Image Recognition
 - 作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Microsoft
 - 發表于:2016 年 IEEE 計算機視覺和模式識別會議 (CVPR)
 
📚 實戰案例
- 深度學習100例 -卷積神經網絡(ResNet-50)鳥類識別 | 第8天
 
7. Xception (2016)
 ?? 簡介
Xception 是由 Inception 改進而來,其中 Inception 模塊已替換為深度可分離卷積。它的參數數量也與 Inception-v1 ( 23M )大致相同。
- 首先,跨通道(或跨特征圖)相關性由 1×1 卷積捕獲。
 - 因此,通過常規的 3×3 或 5×5 卷積捕獲每個通道內的空間相關性。
 
將這個想法發揮到極致意味著對每個通道執行 1×1 ,然后對每個輸出執行 3×3 。這與用深度可分離卷積替換 Inception 模塊相同。
📝 論文
- 論文:Xception: Deep Learning with Depthwise Separable Convolutions
 - 作者:Fran?ois Chollet. Google.
 - 發表于:2017 IEEE 計算機視覺與模式識別會議 (CVPR)
 
📚 實戰案例
- 深度學習100例 | 第24天-卷積神經網絡(Xception):動物識別
 
8. Inception-v4 (2016)
 ?? 簡介
Inception-v4,參數量大小為43M,由谷歌在 Inception-v3 的基礎上改進而來。主要區別在于 Stem 模塊和 Inception-C 模塊中的一些細微變化。
? 與之前的版本Inception-v3 相比有什么改進?
📝 論文
- 論文:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
 - 作者:Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google.
 - 發表于: 第三十屆 AAAI 人工智能會議論文集
 
9. Inception-ResNet-V2 (2016)
在與Inception-v4相同的論文中,同一作者還介紹了Inception-ResNets系列Inception-ResNet-v1和Inception-ResNet-v2。
? 與之前的版本Inception-v3 相比有什么改進?
📝 論文
- 論文:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
 - 作者:Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google
 - 發表于: 第三十屆 AAAI 人工智能會議論文集
 
📚 實戰案例
- 深度學習100例-卷積神經網絡(Inception-ResNet-v2)識別交通標志 | 第14天
 
10. ResNeXt-50 (2017)
 ?? 簡介
ResNeXt-50是一個用于圖像分類的簡單、高度模塊化的網絡結構。
作者提出 ResNeXt-50 的主要原因在于:傳統的要提高模型的準確率,都是加深或加寬網絡,但是隨著超參數數量的增加(比如channels數,filter size等等),網絡設計的難度和計算開銷也會增加。因此本文提出的 ResNeXt-50 結構可以在不增加參數復雜度的前提下提高準確率,同時還減少了超參數的數量。
📝 論文
- 論文: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 計算機視覺與模式識別會議 (CVPR)
 
11. RegNet(2020)
?? 簡介
2020年以來,NAS(Neural Architecture Search) 網絡搜索技術非常火,但這對計算資源要求也比較高(都是大廠玩的東西)。包括這篇論文中的RegNet也有使用到NAS技術。但在論文中作者一再強調這篇論文與之前的一些NAS論文不同(例如MobileNetv3,EfficientNet),之前的一些有關NAS的論文都是在給定的設計空間(designed search space)中通過搜索算法去搜索出一組最佳參數組合。但在這篇論文中作者要探究的是如何去設計設計空間(design design spaces)并發現一些網絡的通用設計準則(network design principles),而不是僅僅去搜索出一組參數。
🎈 網絡特點
- RegNet 比 RestNet 在小計算量情況下表現好
 - RegNet 比 EfficientNet 在大計算時情況下表現好
 
📝 論文
- Designing Network Design Spaces
 
📚 官方代碼
- https://github.com/facebookresearch/pycls
 
12. ConvNeXt(2022)
?? 簡介
ConvNeXt 靠卷積結構便達到了ImageNet Top-1的準確率,并沒有特別復雜或者創新的結構,它的每一個網絡細節都是已經在不止一個網絡中被采用。而就是靠這些邊角料的互相配合。
它的形式思路:Transformer或者Swin-Transformer怎么做,我也對應的調整,效果好就保留。當然這些邊角料的摸索也是需要大量的實驗數據支撐的,是一個耗時耗力耗資源的過程。
ConvNeXt提供了多個參數尺度的模型,他們的參數結構和在ImageNet-1K的Top-1的準確率如下表所示。
📝 論文
- A ConvNet for the 2020s
 
📚 官方代碼
- https://github.com/facebookresearch/ConvNeXt
 
🥂 本文所提到的模型,你可以在下面的鏈接中找到調用方式
- https://pytorch.org/vision/stable/models.html
 - https://www.tensorflow.org/api_docs/python/tf/keras/applications
 
總結
以上是生活随笔為你收集整理的你应该知道的,十二大CNN算法的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: recovery模式下支持ADB连接和串
 - 下一篇: 移植U-Boot思路和实践 | 基于RK