前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【深度学习】【语义分割】ASPP

【深度学习】【语义分割】ASPP

作者头像
全栈程序员站长
发布2022-09-25 10:26:48
2K0
发布2022-09-25 10:26:48
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

ASPP

空洞空间卷积池化金字塔(atrous spatial pyramid pooling (ASPP))对所给定的输入以不同采样率的空洞卷积并行采样,相当于以多个比例捕捉图像的上下文。

deeplab v2的ASPP
deeplab v2的ASPP

上图为deeplab v2的ASPP模块,deeplabv3中向ASPP中添加了BN层,其中空洞卷积的rate的意思是在普通卷积的基础上,相邻权重之间的间隔为rate-1, 普通卷积的rate默认为1,所以空洞卷积的实际大小为 k + ( k − 1 ) ( r a t e − 1 ) k+(k-1)(rate-1) k+(k−1)(rate−1),其中k为原始卷积核大小。

输出大小如何计算?

在这里插入图片描述
在这里插入图片描述

问题:当rate接近feature map大小时, 3 × 3 3\times3 3×3滤波器不是捕获全图像上下文,而是退化为简单的 1 × 1 1\times1 1×1滤波器,只有滤波器中心起作用。

改进:Concat( 1 × 1 1\times 1 1×1卷积 , 3个 3 × 3 3\times 3 3×3空洞卷积 +,pooled image feature)并且每个卷积核都有256个且都有BN层。

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#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_dim
        self.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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171645.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ASPP
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档