1个字,绝! -- CNN中十大令人拍案叫绝的操作
前言
近十年是深度學習飛速發展的十年,自LeNet、AlexNet發展至今,通道注意力、空間注意力、生成對抗網絡等技術層出不窮,最近大火的Transformer技術也在屠殺各種深度學習比賽的榜單,經過科學家的不懈努力,網絡深度越來越深,網絡模型的精度逐漸上升,網絡的參數逐漸減少,模型越來越輕量化。該篇文章可以看作是我在研一的學習過程中所看上百部論文的精華所在,純干貨,建議收藏起來慢慢品味!
一、殘差神經網絡
殘差神經網絡(ResNet)是CVPR2016的最佳論文,說它是CVPR近二十年最佳論文也不為過,被引頻次達70000+,這是我把殘差神經網絡排在第一位的原因。
另外,殘差神經網絡發現了深度神經網絡中“退化”的問題,在ResNet出現之前,人們普遍認為神經網絡深度越深,性能會越好,但ResNet的橫空出世給了這些科學家當頭一棒,隨著網絡層次越來越深,網絡會出現“退化”的現象,什么是“退化”現象呢?簡單來說,就是隨著網絡層次的加深,網絡模型性能反而會出現下降的現象。ResNet的提出在一定程度上解決了深度神經網絡中梯度消失和梯度爆炸的問題,對卷積神經網絡的發展起到了非常重要作用。
推薦論文:
《Deep Residual Learning for Image Recognition》
二、2個疊加的3*3卷積 <=> 5*5卷積
33卷積最早出現在VGGNet、GoogleNet中,之前的CNN中卷積核的大小一般為55或者77,這樣的卷積核雖然會在一定程度上獲得比33卷積核更大的感受野,但隨之而來的是網絡參數的劇增,使得網絡層次難以疊加,網絡難以運行。于是在VGG和GoogleNet中,使用疊加的33卷積獲得的感受野與一個55卷積獲得的感受野相同,但是參數卻降低了,由 5×5×1+1 -->3×3×2+1。所以,之后出現的CNN網絡模型中,很大再見到大的卷積核,絕大部分都是3*3卷積核了。
推薦論文:
《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》
三、Inception結構
Inception結構的提出可以說在很大程度上打破了人們的思維定勢的“陋習”,人類之前一直以為一層卷積上只能有一個尺寸的卷積核,也就是認為網絡是一層一層堆積起來的,但Inception結構的提出打破了這一規則,同一層上可以有多個不同的卷積核來提取不同感受野的特征信息,使不同感受野的特征信息融合在一塊,提升模型的性能。自我認為,該結構的提出也在一定程度上促進了何凱明大神金字塔池化的產生。但這個結構會存在一個致命的問題:參數量比單個尺寸的卷積核要多多,如此龐大的計算量會使得模型效率低下,一般的GPU上難以運行,這就引出了一個新的結構。
推薦論文:
《Rethinking the Inception Architecture for Computer Vision》
四、Bottleneck(1*1卷積)
這一結構是針對上述Inception結構的弊端而提出,但我選進Bottleneck到這個榜單里的理由絕不僅于此。自我認為,Bottleneck提出的最大意義在于它發現了11卷積這個“萬能”的卷積核,該卷積核不僅可以減少參數量,改變特征圖通道的數量、而且還可以增加網絡模型的非線性。因此,1×1卷積核也被認為是影響深遠的操作,之后大型的網絡模型為了降低參數量都會應用上1×1卷積核,以我目前的深度學習經驗來講,11卷積核幾乎存在于任何一個可運行的網絡模型中,它是一個網絡模型必不可少的組成部分。
推薦論文:
《Going deeper with convolutions》
五、密集連接
DenseNet是2017CVPR上的最佳論文,對后來的卷積神經網絡也有很大的貢獻,首先,DenseNet重新定義了一種新的跳過連接(skip connection)-- 密集跳過連接。DenseNet讓網絡中的每一層都直接與其前面層相連,實現特征的重復利用;同時把網絡的每一層設計得特別「窄」,即只學習非常少的特征圖(最極端情況就是每一層只學習一個特征圖),達到降低冗余性的目的。如果沒有密集連接,DenseNet是不可能把網絡設計得太窄的,否則訓練會出現欠擬合(under-fitting)現象。
DenseNet的優勢簡單來說有三點:
- ①減少參數
- ②節省計算資源
- ③抗過擬合
推薦論文:
《Densely Connected Convolutional Networks》
六、空間金字塔池化
空間金字塔池化是深度學習大神何凱明的又一力作,在一般的CNN結構中,在卷積層后面通常連接著全連接。而全連接層的神經元數目是固定的,所以在網絡輸入的時候,會固定輸入的大小(fixed-size)。但在現實中,我們的輸入的圖像尺寸總是不能滿足輸入時要求的大小。然而通常的手法就是裁剪和拉伸。但是裁剪和拉伸會破壞原始圖像的特征信息,而空間金字塔池化能夠很好地解決這個問題。
具體內容可以參考這位大神的一篇文章[空間金字塔池化網絡SPPNet詳解]。(https://cloud.tencent.com/developer/article/1441559)
推薦論文:
《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》
七、空洞卷積
空洞卷積也被稱為膨脹卷積。感受野是卷積神經網絡中非常重要的概念,空洞卷積的目的就在于擴大感受野,以提升模型的性能。空洞卷積的運行原理跟卷積非常類似,唯一不同之處在于空洞卷積引入了一個**擴張率(dilated rate)**的概念,可以認為,普通卷積是空洞卷積的一種情形,普通卷積的擴張率默認為1。
以下分別是dilated rate=1、dilated rate=6、dilated rate=24的空洞卷積。
推薦論文:
《DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs》
《Rethinking Atrous Convolution for Semantic Image Segmentation》
八、注意力機制
在SENet橫空出世之前,所有的網絡模型都認為通道是等權重的,即沒有重要與非重要之分,SENet的工作就是對各個通道進行加權,以分辨出哪些通道包含更重要的特征,哪些通道包含不太重要的特征就顯而易見了。
之后陸陸續續出現了各種各樣的注意力,例如CBAM、Criss-Cross Attention、空間注意力等等,這些也會出現在我的【都2021年了,不會還有人不了解深度學習吧?】專欄中,請大家多多關注!
輸入一組特征圖,這時分兩條支路分別對特征圖進行以下操作:
- ①第一條支路直接讓特征圖通過
- ②第二條首先進行Squeeze操作(Global Average Pooling),把每個通道2維的特征壓縮成一個1維,從而得到一個特征通道向量(每個數字代表對應通道的特征)。然后進行Excitation操作,把這一列特征通道向量輸入兩個全連接層和sigmoid,建模出特征通道間的相關性,得到的輸出就是每個通道對應的權重,然后把每個通道對應的特征權重與輸入特征圖(即第一條路)進行相乘,這樣就完成了特征通道的權重分配。更加詳細的過程請參考論文!
推薦論文:
《Squeeze-and-Excitation Networks》
九、Batch Normalization
BN的基本思想其實相當直觀:因為深層神經網絡在做非線性變換前的激活輸入值(就是那個x=WU+B,U是輸入)隨著網絡深度加深或者在訓練過程中,其分布逐漸發生偏移或者變動,之所以訓練收斂慢,一般是整體分布逐漸往非線性函數的取值區間的上下限兩端靠近(對于Sigmoid函數來說,意味著激活輸入值WU+B是大的負值或正值),所以這導致反向傳播時低層神經網絡的梯度消失,這是訓練深層神經網絡收斂越來越慢的本質原因。
而BN就是通過一定的規范化手段,把每層神經網絡任意神經元這個輸入值的分布強行拉回到均值為0方差為1的標準正態分布,其實就是把越來越偏的分布強制拉回比較標準的分布,這樣使得激活輸入值落在非線性函數對輸入比較敏感的區域,這樣輸入的小變化就會導致損失函數較大的變化,意思是這樣讓梯度變大,避免梯度消失問題產生,而且梯度變大意味著學習收斂速度快,能大大加快訓練速度。
除去BN之外,之后出現了很多歸一化的方法,例如GN、LN、SN、IN等,關于歸一化的方法,會在我的專欄【都2021年了,不會還有人不了解深度學習吧?】中陸續更新,請大家多多關注!
推薦論文:
《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
十、全卷積神經網絡
CNN能夠對圖片進行分類,可是怎么樣才能識別圖片中特定部分的物體,在2015年之前還是一個世界難題。直到神經網絡大神Jonathan Long發表了FCN,在圖像語義分割挖了一個坑,于是無窮無盡的人往這個坑里面跳。之所以把FCN選進這個榜單,是因為FCN的識別是像素級的識別 ,對輸入圖像的每一個像素在輸出上都有對應的判斷標注,標明這個像素最可能是屬于一個什么物體/類別。
推薦論文:
《Fully Convolutional Networks for Semantic Segmentation》
參考文獻
《Deep Residual Learning for Image Recognition》
《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》
《Rethinking the Inception Architecture for Computer Vision》
《Going deeper with convolutions》
《DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs》
《Rethinking Atrous Convolution for Semantic Image Segmentation》
《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》
《Squeeze-and-Excitation Networks》
《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
《Fully Convolutional Networks for Semantic Segmentation》
https://blog.csdn.net/qqliuzihan/article/details/81217766
https://cloud.tencent.com/developer/article/1441559
以上純屬個人意見,如有不同看法,歡迎在評論區留言!
覺得寫的不錯的話,歡迎點贊+評論+收藏,這對我幫助真的很大很大很大!歡迎關注我的公眾號!
文章持續更新,可以關注微信公眾號【醫學圖像人工智能實戰營】獲取最新動態,一個專注于醫學圖像處理領域前沿科技的公眾號。堅持以實踐為主,手把手帶你做項目,打比賽,寫論文。凡原創文章皆提供理論講解,實驗代碼,實驗數據。更有上百部深度學習入門資料免費等你來拿,只有實踐才能成長的更快,關注我們,一起學習進步~
總結
以上是生活随笔為你收集整理的1个字,绝! -- CNN中十大令人拍案叫绝的操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽车车牌识别系统实现(四)--字符识别+
- 下一篇: 手把手教你Axure-基本工具栏