【Pytorch神经网络理论篇】 30 图片分类模型:Inception模型
1 Inception系列模型
Incepton系列模型包括V1、V2、V3、V4等版本,主要解決深層網絡的三個問題:
- 訓練數據集有限,參數太多,容易過擬合;
- 網絡越大,計算復雜度越大,難以應用;
- 網絡越深,梯度越往后傳,越容易消失(梯度彌散),難以優化模型。
1.1 多分支結構
原始的Inception模型采用多分支結構(見圖1-1),它將1×1卷積、3×3卷積最大池化堆疊在一起。這種結構既可以增加網絡的寬度,又可以增強網絡對不同尺寸的適應性。
Inception模型包含3種不同尺寸的卷積和1個最大池化,增強了網絡對不同尺寸的適應性。
Inception模型可以讓網絡的深度和寬度高效率地擴充,提高準確率。
Inceρtion模型本身如同大網絡中的一個小網絡,其結構可以反復堆疊在一起形成大網絡。
1.2 全局均值池化(文章來源:Network in Network)
全局均值池化是指在平均池化層中使用同等大小的過濾器對特征進行過濾。一般使用它用來代替深層網絡結構中最后的全連接輸出層。
1.2.1?全局均值池化的具體用法
在卷積處理之后,對每個特征圖的一整張圖片進行全局均值池化,生成一個值,即每個特征圖相當于一個輸出特征,這個特征就表示我們輸出類的特征。
即在做1000個分類任務時,最后一層的特征圖個數要選擇1000,這樣就可以直接得出分類。
1.2.2?Network in Network中的實現
作者利用其進行1000個物體分類,最后設計了一個4層的NIN(Network In Network)+全局均值池化,如圖1-2所示。
2 Inception V1模型
Inception V1模型在原有的Inception模型上做了一些改進。原因是在Inception模型中,
3 Inception V2模型
卷積核是針對其上一層的輸出結果進行計算的,因此會存在,5×5卷積核所需的計算量就會很大,所生成的特征圖很厚。
為了避免這一現象,InceptionV1模型在3×3卷積前、5×5卷積前、3×3最大池化后分別加上了1×1卷積,以起到降低特征圖厚度的作用(其中1×1卷積主要用來降維)
3.1?InceptionV1模型圖
InceptionV1模型中有4個分支。
3.1.1 分支介紹
第1個分支:對輸入進行1×1卷積,1×1卷積既可以跨通道組織信息,提高網絡的表達能力,又可以對輸出通道升維和降維。
第2個分支:先使用1×1卷積,然后使用3×3卷積,相當于進行了兩次特征變換。
第3個分支:先使用1×1卷積,然后使用5×5卷積。
第4個分支:3×3最大池化后直接使用1×1卷積。
3.1.2?InceptionV1模型圖
3.1.3? InceptionV1的特點
4個分支都使用了1×1卷積,有的分支只使用了1×1卷積,有的分支使用了1×1的卷積后也會再使用其他尺寸卷積。
因為1×1卷積的性價比很高,用很小的計算量就能增加一層特征變換和非線性化。最終lnceptionV1模型的4個分支通過一個聚合操作合并(使用torch.cat函數在輸出通道數的維度上聚合)。
4?Inception V2模型
4.1?Inception V2模型的改進措施
Inception V2模型在lnceptionV1模型的卷積之后加入了BN層,使每一層的輸出都歸一化處理,減少了內部協變量移位問題;同時還使用梯度截斷的技術,增加了訓練的穩定性。
lnceptionV2模型還借鑒VGG模型,用兩個3×3卷積替代InceptionV1模型中的5×5卷積,降低參數數量,提升運算速度。
4.2?Inception V2?模型?
5 Inception V3模型
Inception V3模型沒有再加入其他的技術,只是將Inception V2的卷積核變得更小
5.1?Inception V3模型具體做法
將nception V2模型的3×3分解成兩個一維的卷積(1×3,3×1)。這種方法主要是基于線性代數的原理,即一個[n,n]的矩陣,可以分解成矩陣[n,1]×矩陣[1,n]。
5.2?Inception V3模型的實際效果計算
假設有256個特征輸入和256個特征輸出,假定lnception層只能執行3×3卷積,也就是總共要完成256×256×3×3次的卷積(589824次乘積累加運算)。
假設現在需要減少進行卷積運算的特征的數量,將其變為64(即256/4)個。在這種情況下,首先進行256→64的特征的1×1卷積,然后在所有Inception層的分支上進行64次卷積,最后使用一個來自64→256的特征的1×1卷積。
256×64×1×1=16384
64×64×3×3 = 36864
64×256×1×1=16384
相比之前的589824次,現在共有69632(16384+36864+16384)次的計算量。
在實際測試中,這種結構在前幾層效果不太好,但對特征圖大小為12~20的中間層效果明顯,也可以大大增加運算速度。另外,網絡輸入從224×224變為299×299,設計了35×35/17×17/8×8的模塊。
6?Inception V4模型
6.1?Inception V4模型改進手段
在InceptionV3模型的基礎上結合殘差連接技術進行結構的優化調整,通過二者的結合,得到了兩個比較出色的網絡模型。
6.2?lnception V4模型
Inception V4模型僅是在InceptionV3模型的基礎上由4個卷積分支變為6個卷積分支,但沒有使用殘差連接。
6.3?Inception-ResNet V2模型
Inception-ResNet V2模型主要是在InceptionV3模型的基礎上加入ResNet模型的殘差連接,是lnceptionV3模型與ResNet模型的結合。
殘差連接在Inception模型中具有提高網絡準確率,而且不會增加計算量的作用。
6.4?Inception-ResNetV2模型與lnception V4對比
在網絡復雜度相近的情況下,Inception-ResNetV2模型略優于Inception V4模型。
通過將3個帶有殘差連接的inception模型和一個lnceptionV4模型組合,就可以在lmagelNet上得到3.08%的錯誤率。
總結
以上是生活随笔為你收集整理的【Pytorch神经网络理论篇】 30 图片分类模型:Inception模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Pytorch神经网络理论篇】 19
- 下一篇: 计算机视觉概述:视觉任务+场景领域+发展