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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ASPP - 空洞空间金字塔池化

發布時間:2023/12/18 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASPP - 空洞空间金字塔池化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1 空洞卷積
    • 1.1 空洞卷積的理解
      • 1.1.1 一維
      • 1.1.2 二維
    • 1.2 空洞卷積的優劣
  • 2. ASPP
  • 3. 代碼

1 空洞卷積

1.1 空洞卷積的理解

1.1.1 一維

(a) 正常卷積:輸入特征 Input feature,kernel = 3,stride = 1,pad = 1,輸出特征 Output feature。
(b) 空洞卷積:與圖 (a) 不同之處在于 pad = 2,同時引入一個 rate = 2(表示卷積核中參數間間隔的超參)。

??還可通過下圖進一步理解普通卷積與空洞卷積的區別,其中 hole size 即為上圖中的 rate。

1.1.2 二維

正常卷積:藍色為輸入,綠色為輸出,移動的陰影為卷積核(kernel = 2, stride = 1,pad = 0);

空洞卷積:藍色為輸入,綠色為輸出,移動的陰影為卷積核(kernel = 3, stride = 1, pad = 0, rate = 1);

??以上演示動圖來源于此,對理解卷積操作有很大的幫助。在實際中,空洞卷積一般有兩種實現方式:(1)卷積核填充 0;(2)輸入等間隔采樣。

1.2 空洞卷積的優劣

??一般認為圖片中相鄰的像素點存在信息冗余,故而空洞卷積具備以下兩個優勢

(1) 擴大感受野:傳統的下采樣雖可增加感受野,但會降低空間分辨率。而使用空洞卷積能夠在擴大感受野的同時,保證分辨率。這十分適用于檢測、分割任務中,感受野的增大可檢測、分割大的目標,高分辨率則可精確定位目標。
(2) 捕獲多尺度上下文信息:空洞卷積中參數 dilation rate 表明在卷積核中填充 (dilation rate-1) 個 0。設置不同 dilation rate 給網絡帶來不同的感受野,即獲取了多尺度信息。

??空洞卷積得到的某一層的結果中,鄰近的像素是從相互獨立的子集中卷積得到的,相互之間缺少依賴,故而空洞卷積也存在不足

(1) 局部信息丟失:由于空洞卷積的計算方式類似于棋盤格式,某一層得到的卷積結果,來自上一層的獨立的集合,沒有相互依賴,因此該層的卷積結果之間沒有相關性,即局部信息丟失;
(2) 遠距離獲取的信息沒有相關性:由于空洞卷積稀疏的采樣輸入信號,使得遠距離卷積得到的信息之間沒有相關性。

2. ASPP

??上圖即為 ASPP 模塊示意:對 Input Feature Map 以不同采樣率的空洞卷積并行采樣;然后將得到的結果 concat 到一起,擴大通道數;最后通過 1×11 \times 11×1 的卷積將通道數降低到預期的數值。相當于以多個比例捕捉圖像的上下文。

??上圖為添加 ASPP 模塊后的網絡結構,將 Block3 的輸出輸入到 ASPP,經過多尺度的空洞卷積采樣后經過池化操作,然后由 1×11 \times 11×1 卷積將通道數降低至預期值。

3. 代碼

??一個沒有 BN 層的 PyTorch 實現的 ASPP 代碼(DeepLabv3 的 ASPP 中加入了 BN 層)如下:

#without bn version class ASPP(nn.Module):def __init__(self, in_channel=512, depth=256):super(ASPP,self).__init__()self.mean = nn.AdaptiveAvgPool2d((1, 1)) #(1,1)means ouput_dimself.conv = nn.Conv2d(in_channel, depth, 1, 1)self.atrous_block1 = nn.Conv2d(in_channel, depth, 1, 1)self.atrous_block6 = nn.Conv2d(in_channel, depth, 3, 1, padding=6, dilation=6)self.atrous_block12 = nn.Conv2d(in_channel, depth, 3, 1, padding=12, dilation=12)self.atrous_block18 = nn.Conv2d(in_channel, depth, 3, 1, padding=18, dilation=18)self.conv_1x1_output = nn.Conv2d(depth * 5, depth, 1, 1)def forward(self, x):size = x.shape[2:]image_features = self.mean(x)image_features = self.conv(image_features)image_features = F.upsample(image_features, size=size, mode='bilinear')atrous_block1 = self.atrous_block1(x)atrous_block6 = self.atrous_block6(x)atrous_block12 = self.atrous_block12(x)atrous_block18 = self.atrous_block18(x)net = self.conv_1x1_output(torch.cat([image_features, atrous_block1, atrous_block6,atrous_block12, atrous_block18], dim=1))return net

參考

  • 空洞卷積(擴張卷積,帶孔卷積,atrous convolution)的一些總結與理解;
  • 總結-空洞卷積(Dilated/Atrous Convolution);
  • [語義分割]SPP、空洞卷積與ASPP總結_lipengfei0427的博客-程序員寶寶_aspp模塊;
  • 總結

    以上是生活随笔為你收集整理的ASPP - 空洞空间金字塔池化的全部內容,希望文章能夠幫你解決所遇到的問題。

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