日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GoogLeNet

發布時間:2023/12/16 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GoogLeNet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GoogLeNet最早出現在2014年的《Going deeper with convolutions》,之所以叫GoogLeNet,而不是GoogleNet,文章說是為了向早期的LeNet致敬。GoogLeNet是谷歌團隊為了參加ILSVRC 2014(ImageNet?Large Scale Visual Recognition Challenge)比賽而精心準備的。GoogLeNet,在2014ILSVRC挑戰賽上獲得冠軍,將Top5的錯誤率降低到6.67%。總體上是一個22層的深度網絡。

GoogLeNet憑借其優秀的表現,得到了很多研究人員的學習和使用,因此Google團隊又對其進行了進一步發掘改進,產生了升級版本的GoogLeNet。文章為:《Rethinking the Inception Architecture for Computer Vision》

一、GoogLeNet V1(第一個版本)

一般來說,提升網絡性能最直接的辦法就是增加網絡深度和寬度,這也就意味著更巨量的參數。但是,巨量參數容易產生過擬合,也會大大增加計算量。文章認為解決上述兩個缺點的根本方法是將全連接甚至一般的卷積都轉化為稀疏連接。參考文獻《Provable bounds for learning some deep representations. CoRR, abs/1310.6343, 2013.》認為對于大規模稀疏的神經網絡,可以通過分析激活值的統計特性和對高度相關的輸出進行聚類來逐層構建出一個最優網絡。所以,為了既能保持網絡結構的稀疏性,又能利用密集矩陣的高計算性能,論文提出了inception的結構!

1、inception結構

Inception 結構的主要思路是用密集成分來近似最優的局部稀疏結構。作者首先提出下圖這樣的基本結構:


對于上圖的解釋為:

  • 采用不同大小的卷積核意味著不同大小的感受野,最后拼接意味著不同尺度特征的融合
  • 之所以卷積核大小采用1、3和5,主要是為了方便對齊。設定卷積步長stride=1之后,只要分別設定pad=0、1、2,那么卷積之后便可以得到相同維度的特征,然后這些特征就可以直接拼接在一起了;
  • 文章說很多地方都表明pooling挺有效,所以Inception里面也嵌入了。?
  • 網絡越到后面,特征越抽象,而且每個特征所涉及的感受野也更大了,因此隨著層數的增加,3x3和5x5卷積的比例也要增加。
  • 但是,使用5x5卷積核仍然會帶來巨大的計算量。因此論文借鑒了NIN《Min Lin, Qiang Chen, and Shuicheng Yan. Network in network. CoRR, abs/1312.4400, 2013》,采用1x1卷積核來進行降維

    關于1x1卷積核來進行降維,舉個例子:

    假如上一層的輸出為100x100x128,經過具有256個輸出的5x5卷積層之后(stride=1,pad=2),輸出數據為100x100x256。其中,卷積層的參數為128x5x5x256。此時如果上一層輸出先經過具有32個輸出的1x1卷積層,再經過具有256個輸出的5x5卷積層,那么最終的輸出數據仍為為100x100x256,但卷積參數量已經減少為128x1x1x32 + 32x5x5x256,大約減少了4倍。

    改進后(降維)的Inception Module如下圖:


    2、GoogLeNet網絡結構


    對于上圖的GoogLeNet網絡結構,做如下幾點說明:

  • 顯然GoogLeNet采用了模塊化的結構,方便增添和修改。
  • 網絡在FC之前采用了average pooling層,想法來自NIN,事實證明可以將TOP1 accuracy提高0.6%。
  • 可以看出,GoogLeNet網絡其實也是非常深的,如果梯度從最后一層傳遞到第一層,梯度基本已經沒有了。為了避免梯度消失,網絡額外增加了2個輔助的softmax用于向前傳導梯度。文章中說這兩個輔助的分類器的loss應該加一個衰減系數,但看caffe中的model也沒有加任何衰減。此外,實際預測時,這兩個額外的softmax會被去掉。其實這種訓練方式可以看作將幾個不同深度的子網絡合并到一塊進行訓練,由于網絡的卷積核共享,因此計算的梯度可以累加,這樣最終的梯度便不會很小。關于這一點做的最徹底的應該就是ResNet
  • 另外,為了達到最佳的性能,除了使用上述的網絡結構外,還做了大量的輔助工作:包括訓練多個model求平均、裁剪不同尺度的圖像做多次驗證等等。詳細的這些可以參看文章的實驗部分。本文的主要想法其實是想通過構建密集的塊結構來近似最優的稀疏結構,從而達到提高性能而又不大量增加計算量的目的。GoogleNet的caffemodel大小約50M,但性能卻很優異。

    二、GoogLeNet V2(改進版本)

    GoogLeNet V1出現的同期,性能與之接近的大概只有VGGNet了,并且二者在圖像分類之外的很多領域都得到了成功的應用。但是相比之下,GoogLeNet的計算效率明顯高于VGGNet,大約只有500萬參數。只相當于VGGNet的1/12(GoogLeNet的caffemodel大約50M,VGGNet的caffemodel則要超過600M)。

    GoogLeNet的表現很好,但是如果想要通過簡單地放大Inception結構來構建更大的網絡,則會立即提高計算消耗。此外,在V1版本中,文章也沒給出有關構建Inception結構注意事項的清晰描述。因此,在V2中作者首先給出了一些已經被證明有效的用于放大網絡的通用準則和優化方法。這些準則和方法適用但不局限于Inception結構。

  • 避免表達瓶頸,特別是在網絡靠前的地方。 信息流前向傳播過程中顯然不能經過高度壓縮的層,即表達瓶頸。從input到output,feature map的寬和高基本都會逐漸變小,但是不能一下子就變得很小。比如你上來就來個kernel = 7, stride = 5 ,這樣顯然不合適。?
  • 對于輸出的維度channel,一般來說會逐漸增多(每層的num_output),否則網絡會很難訓練。(特征維度并不代表信息的多少,只是作為一種估計的手段)。
  • 高維特征更易處理。 高維特征更易區分,會加快訓練。
  • 可以在低維嵌入上進行空間匯聚而無需擔心丟失很多信息。 比如在進行3x3卷積之前,可以對輸入先進行降維而不會產生嚴重的后果。假設信息可以被簡單壓縮,那么訓練就會加快。
  • 平衡網絡的寬度與深度。
  • 上述的這些并不能直接用來提高網絡質量,而僅用來在大環境下作指導。

    1、把大的卷積核用若干個小的串聯起來(Factorizing Convolutions with Large Filter Size)

    大尺寸的卷積核可以帶來更大的感受野,但也意味著更多的參數,比如5x5卷積核參數是3x3卷積核的25/9=2.78倍。為此,作者提出可以用2個連續的3x3卷積層(stride=1)組成的小網絡來代替單個的5x5卷積層,(保持感受野范圍的同時又減少了參數量)如下圖:


  • 這種替代會造成表達能力的下降嗎?大量的試驗表明:這種轉變不會造成表達的缺失。
  • 3x3卷積之后還要再加激活嗎?作者也做了對比試驗,表明添加非線性激活會提高性能。
  • 從上面來看,大卷積核完全可以由一系列的3x3卷積核來替代。那3x3卷積核能不能分解的更小呢,文章考慮了nx1 卷積核:


    任意nxn的卷積核都可以通過1xn卷積后接nx1卷積來替代。實際上,作者發現在網絡的前期使用這種分解效果并不好,還有在中度大小的feature map上使用效果才會更好。(對于nxn大小的feature map,建議n在12到20之間)。

    網絡結構對比如下:


  • 上左圖4是GoogLeNet V1中使用的Inception結構;
  • 上中圖5是用3x3卷積序列來代替大卷積核;
  • 上右圖6是用nx1卷積來代替大卷積核,這里設定n=7來應對17x17大小的feature map。該結構被正式用在GoogLeNet V2中。
  • 三、Opencv加載Caffe訓練好的GoogLeNet網絡用于預測


    總結

    以上是生活随笔為你收集整理的GoogLeNet的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。