日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

為什么要使用3×3卷積?& 1*1卷積的作用是什么?& 對ResNet結構的一些理解

作者:甘霖佳佳 更新時間: 2022-01-31 編程語言

為什么要使用3×3卷積?

常見的卷積核大小有1×1、3×3、5×5、7×7,有時也會看到11×11,若在卷積層提取特征,我們通常選用3×3大小的卷積。
我們知道,兩個3×3卷積核一個5×5卷積的感受野相同,三個3×3卷積和一個7×7卷積的感受野相同(通俗來講,感受野就是可以提取到周圍鄰居個數的特征)
假設輸入輸出channel均為C,使用7×7卷積核所需參數為
7 × 7 × C × C = 49 C 2 7×7×C×C = 49C^{2} 7×7×C×C=49C2 使用3×3卷積核所需參數為
3 × 3 × C × C + 3 × 3 × C × C + 3 × 3 × C × C = 27 C 2 3×3×C×C + 3×3×C×C + 3×3×C×C = 27C^{2} 3×3×C×C+3×3×C×C+3×3×C×C=27C2
可見在感受野相同的情況下,三個3×3卷積比一個7×7卷積所需參數要少很多,這無疑減少了模型的復雜度,加快了訓練速度。
而且雖然感受野一樣,但是3×3卷積的非線性程度更高,可以表示更復雜的函數;小的卷積核可以提取細小的特征,由小而大到比較抽象的特征。
但層數加深了,會產生有一串連鎖效應,可能會效果提升,但也有可能變差,例如梯度消失。

ResNet 網絡結構

ResNet結構如圖所示
在這里插入圖片描述
可見,在輸入階段使用了7x7卷積,作用實際上是用來直接對輸入圖片降采樣(early downsampling),那為什么不使用3個3×3卷積呢?
原因:
在進入ResidualBlock訓練之前盡可能保留原圖更多的信息。
注意像7x7這樣的大卷積核一般只可能出現在input layer層,這種情況下通常圖像的分辨率很高,圖像的像素值的方差較小。
具體問題具體分析,也有實驗表面在此使用三個3×3卷積比一個7×7卷積效果好。

為什么卷積通道數逐層增加,而不是逐層減少

vgg網絡的設計也是如此。
我們對神經網絡的認識是:把像素空間的信息轉化為語義信息。
卷積核和池化使得圖像長寬方向的信息逐漸減小,而卷積通道數逐層增加通道信息逐漸增加,這符合我們的認知。
下圖vgg結構可以更好的幫助我們理解
在這里插入圖片描述

ResidualBlock

在這里插入圖片描述
左邊就是一個典型的ResidualBlock,通過兩個3×3的空間卷積,輸入通道數等于輸出通道數,相加即可,不需要做處理。
在右邊我們看到了1×1卷積,它的作用是什么呢?
右圖的ResidualBlock代表我們先對數據降維一次(通道數從256降維到64)、再對其進行空間卷積(3×3卷積核,通道數不變),再投影回256通道數,使得輸入和輸出維度匹配以便相加。
那為什么不直接使用一個3×3通道數為256的卷積?

為什么使用1×1卷積來降維

如果不適用1×1卷積,直接使用一個3×3通道數為256的卷積,改成的參數量為 3 × 3 × 256 × 256 = 589824 3×3×256×256 = 589824 3×3×256×256=589824 而使用1×1卷積降維后構建ResidualBlock有 1 × 1 × 64 × 256 + 3 × 3 × 64 × 64 + 1 × 1 × 64 × 256 = 69632 1×1×64×256+3×3×64×64+1×1×64×256 = 69632 1×1×64×256+3×3×64×64+1×1×64×256=69632
由此可見,如果不增加1×1的卷積來降維,后續3×3卷積核所需的參數量會急劇增加。

1*1卷積的應用

殘差連接如何處理輸入、輸出維度不同的情況?
①在輸入、輸出上添加額外的0,使得兩個形狀對應起來然后相加。(即以0填充擴展的維度,這種方法不需要添加額外的參數,但通常有些蠻力,效果不佳)
②在上述情況下可以使用1*1卷積來匹配維度

原文鏈接:https://blog.csdn.net/weixin_45928096/article/details/122502882

欄目分類
最近更新