主頁 > 軟體設計 > CNN卷積神經網路之GoogLeNet(Incepetion V1-Incepetion V3)

CNN卷積神經網路之GoogLeNet(Incepetion V1-Incepetion V3)

2021-02-21 12:25:24 軟體設計

CNN卷積神經網路之GoogLeNet(Incepetion V1-V3)

        • 未經本人同意,禁止任何形式的轉載!
  • GoogLeNet(Incepetion V1)
    • 前言
    • 網路結構
      • 1.Inception module
      • 2.整體結構
    • 多裁剪影像評估和模型融合
    • 思考
  • Incepetion V2
    • 網路結構改進
      • 1.Inception module
      • 2.輔助分類器(Auxiliary Classifiers)
      • 3.有效的特征圖降維方式
      • 4.整體結構
      • 5.BatchNorm
  • Incepetion V3
    • 網路結構改進(RMSProp優化器 LabelSmoothing et.)
    • 對于低像素圖片分類的探索
    • 總結


未經本人同意,禁止任何形式的轉載!

GoogLeNet(Incepetion V1)

《Going deeper with convolutions》
論文地址:http://arxiv.org/abs/1409.4842.

前言

GoogLeNet該網路是在ILSVRC2014比賽分類專案獲得第一名,GoogLeNet是一個具有22層網路的深度學習架構,當然這22層指的是擁有權重的層,
按照之前的思路,提升網路性能最直接的辦法就是增加網路深度和寬度,但一味地增加,會帶來問題:
1)引數太多,如果訓練資料集有限,很容易產生過擬合;
2)網路越深,容易出現梯度彌散問題,
為了減少引數,一開始會想到將全連接變成稀疏連接,但實作上,全連接變成稀疏連接后實際計算量并不會有質的提升,因為大部分硬體是針對密集矩陣計算優化的,稀疏矩陣雖然資料量少,但是計算所消耗的時間卻很難減少,因此Google研究人員提出了Inception的方法,

網路結構

1.Inception module

在這里插入圖片描述
1 . 采用不同大小的卷積核最后拼接意味著不同尺度特征的融合;
2 . 卷積核采用1、3和5,主要是為了方便對齊,設定卷積stride=1后,只要分別設定pad=0、1、2,那么卷積之后便得到相同維度的特征,就可直接拼接在一起;
3 . 文章說很多地方都表明pooling挺有效,所以Inception里面也嵌入了,但是文中也說max-pooling layers result in loss of accurate spatial information,最大池化會導致某些精確的空間資訊丟失,

但是,使用5x5的卷積核仍然會帶來巨大的計算量, 為此,采用1x1卷積核來進行降維(減少通道數量),
在這里插入圖片描述
下面給出一個使用1X1卷積降低引數量的例子:
在這里插入圖片描述
其次,增加的1X1卷積后面也會跟著有非線性激勵,這樣同時也能夠提升網路的表達能力,

2.整體結構

雖網路的復雜程度加大了,但利用1X1卷積總的運算次數減小到之前的1/3,Inception網路是一個由上述型別的模塊互相堆疊組成的網路,從而形成了GoogLeNet,如圖所示GoogLeNet的整體架構,
在這里插入圖片描述
可以看見當時還有輔助的分類器,除了最終的分類結果外,其實中間節點的分類效果還是不錯的,所以GoogLeNet干脆從中間拉了兩條分類器出來,然他們按一個較小的權重加到最終的分類結果中,這樣做好處:
1)相當于做了模型整合
2)給網路增加了反向傳播的梯度信號,一定程度解決了深網路帶來的梯度消失的問題而且還提供了額外的正則化
當然輔助分類器只用于訓練階段,在測驗階段是要去掉的,
下圖可以更清楚每層的具體結構:
在這里插入圖片描述
延續VGGNet的設計思路,GoogLeNet也采用了模塊化的結構,方便增添和修改,網路最后采用了average pooling來代替全連接層,引數量進一步減少,雖然移除了全連接,但是網路中依然使用了Dropout

多裁剪影像評估和模型融合

在這里插入圖片描述
多裁剪影像評估和模型融合依舊對錯誤率的降低很有成效,對比起來看,模型融合功效更大,當然兩著是互補的,可以同時使用,

思考

Inception module帶來了空間維度上的多尺度注意力機制,此外,還可以理解為讓網路自己學習所需要的卷積核尺寸,以前的網路都需要人工的去設計卷積核的大小,而Inception網路不需要人為決定使用多大的卷積核,或者是否需要池化,讓網路自行學習,

Incepetion V2

《Rethinking the Inception Architecture for Computer Vision》
論文地址:https://arxiv.org/abs/1512.00567.
2015年,Google團隊又對其進行了進一步發掘改進,推出了Incepetion V2和V3,Inception v2與Inception v3被作者放在了一篇paper里面,

網路結構改進

1.Inception module

在Incepetion V1基礎上進一步考慮減少引數,讓新模型在使用更少訓練引數的情況下達到更高的性能,
演算法科學家們根據對卷積網路的各種架構選擇的大規模實驗,描述一些設計原則, 以下原則的效用是推測性的,未來需要更多的實驗證據來評估其準確性和有效性領域,但對這些原則的嚴重偏離往往會導致網路質量的惡化,使用這些準則,通常會導致架構的改善
通用設計準則:
1)避免特征表達瓶頸,尤其是在網路的淺層,避免資訊極度壓縮帶來的瓶頸,一般而言,從輸入層到輸出層特征維度大小應該緩慢下降
2)高維度特征表達在網路的區域中處理起來更加容易,增加CNN每個神經元的激活值會更多地解耦合特征,會使得網路訓練更快,(在高層的Inception結構中3x3拆分成了1x3和3x1的卷積核,以增強資訊表征),
3)空間資訊聚集可以通過低維度嵌入來完成,而且在幾乎不損失特征表達能力的情況下,網路后面可以使用像bottleneck的模塊,可以在卷積之前先用1*1的卷積核實作降維(作者認為網路后面的feature maps通道內的資訊相關性高,所以在通道層次降維并沒有太多不利影響,同時還加快了訓練),
4)平衡網路寬度和深度,瘦高或矮胖的CNN網路都不如一個身材勻稱的網路的效果好,

下面是一些具體改進:
吸取同時期VGGNet里面的思路,將大卷積核替換成連續的小卷積核(同樣的,卷積之后都接ReLu,多一些非線性,增加網路的特征表達能力),進一步探索是否可以更小,使用非對稱卷積,nxn的卷積可通過1xn卷積后接nx1卷積來替代,同樣的輸出大小,引數個數少了,在網路的前期使用這種分解效果并不好,在中等大小的特征圖上使用效果才會更好(對于mxm大小的特征圖,建議m在12~20),

在這里插入圖片描述
最后一個結構被正式用在IncepetionV2中,

2.輔助分類器(Auxiliary Classifiers)

輔助分類器在訓練早期并不會推動收斂:在訓練中在到達很高準確率之前,有沒有輔助分類器的存在似乎并不影響,在訓練末期,帶有輔助分類器的網路就會超過沒有輔助分類器的網路,
將淺層的輔助分類器移走對于網路最后的結果沒有任何作用,也就是這個分類器沒用,說明這些輔助分類器能不夠幫助低層特征訓練,(文中認為輔助分類器其實是起到了泛化的作用,是一個正則化方法,因為,網路的主分類器能夠取得更好的結果如果輔助分類器采用batch-normalized或者引入dropout,)

3.有效的特征圖降維方式

傳統的卷積網路會使用一些pooling操作來減少特征圖的大小,為了避免特征表達瓶頸bottleneck,減少資訊的過度丟失,會在加入池化層減少特征圖大小的同時都會同比例擴大它的通道數目,VGGNet

兩種較為傳統的做法:
1.先做Pooling減少特征圖尺寸,然后再使用1x1 conv對其通道數目放大,不過顯然首先使用Pooling的話會造成資訊硬性丟失的不可避免,在此之后再使用1x1 conv去增加通道數目的做法已經有亡羊補牢之嫌了,
2.先將通道數目擴大(一般使用1x1 conv),然后再使用Pooling來減少特征圖尺寸,不過顯然會有非常大的計算開銷,
在這里插入圖片描述

作者提出同時做pooling和conv,stride為2,減少特征圖尺寸,之后再將兩者算出的特征圖contact起來,在減少計算量的同時也避免了表達瓶頸,符合上面提出的準則1(避免特征表達瓶頸),即有效的特征圖降維將卷積和池化的串行變為并行進一步減少計算量

V2(左)和V1(右)對比:
在這里插入圖片描述

*只有模塊交接處會進行Efficient Grid Size Reduction

4.整體結構

在這里插入圖片描述
在這里插入圖片描述
只要遵守第二個準則,網路的質量對于變化是相對穩定的,雖然網路有42層深度,但計算成本只比GoogLeNet高2.5左右,仍然比VGGNet的效率高得多,

此外可以看見,非對稱卷積只在中等大小的特征圖上使用,

每一個conv都是 卷積+batch norm+ReLu
pytorch的代碼和論文中給出的結構有細微差別,感興趣的可以查看原始碼,

輔助分類器如下圖,加在3×Inception的后面:

在這里插入圖片描述

5.BatchNorm

在這里插入圖片描述

Incepetion V3

網路結構改進(RMSProp優化器 LabelSmoothing et.)

Inception-v3比Inception-v2增加了幾種處理:
1)RMSProp優化器
2)使用了LabelSmoothing(label-smoothing regularization,或者LSR)
3)第一個figure6結構(inception_b)的7x7卷積分解為3個3x3卷積(其他的figure6結構inception_c有非對稱卷積,可以去看原始碼)
4)輔助分類器使用了 BatchNorm, 同時輸入影像大小變成299x299,

對于低像素圖片分類的探索

一個典型情況是目標檢測后的分類,這就需要對包含了一個單獨目標以及一些背景的一個相對比較小的圖片patch進行分析,這個任務就是決定圖片patch中心是否對應了某個目標并且決定這個目標屬于哪一類,這個任務的挑戰在于往往這些目標都是較小的而且圖片patch也是低像素的,
在這里插入圖片描述

在這里插入圖片描述

如何恰當地處理低像素的輸入?
如果僅僅只改變輸入的像素而不調整模型的話,我們會使用一個計算開銷小的模型去處理一個困難的問題,顯然這樣是不行的,當計算開銷不變的時候,到底多高的輸入像素會幫助更大呢?一個簡單的方法來保證計算開銷不變就是降低前兩層的步長,或者直接取消網路的第一個pooling層(計算開銷改變不大),于是做了如下實驗:
79x79的感受野,在第一層(步長1)之后不跟最大池化,
151x151的感受野,在第一層(步長1)之后跟上最大池化,
299x299的感受野,在第一層(步長2)之后跟上最大池化,
在這里插入圖片描述

那么這三個網路計算開銷基本差不多,單純根據輸入的像素來降低網路大小,網路的效果就會非常差,從上表的結果,我們可以發現,對于小物體的識別,還是需要考慮使用精心設計的高計算開銷低解析度網路,

總結

提出了有效擴大網路的四個準則以及很多新觀點:非對稱卷積進一步減小引數(只對中等大小的特征圖有效12-20),輔助分類器的有效應用是一種泛化手段,有效的特征圖降維將卷積和池化的串行變為并行進一步減少計算量,Label Smoothing,以及對于低像素圖片分類的實驗,

上一篇:CNN卷積神經網路之VGGNet.
下一篇:CNN卷積神經網路之ResNet.

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/261875.html

標籤:其他

上一篇:golang筆記15--go 語言單任務版爬蟲

下一篇:【Spring】DI:自動裝配 autowire

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more