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

【深度学习】【语义分割】ASPPASPP空洞空间卷积池化金字塔(atrousspatialpyramidpooling(ASPP))对所给定的输入以不同采样率的空洞卷积并行采样,相当于以多个比例捕捉图像的上下文。上图为deeplabv2的ASPP模块,deeplabv3中向ASPP中添加了BN层,其中空洞卷积的rate的意思是在普通卷积的基础上,相邻权重之间的间隔为rate-1,普通卷积的rate默认为1,所以…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

ASPP

空洞空间卷积池化金字塔(atrous spatial pyramid pooling (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+(k1)(rate1),其中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层。
在这里插入图片描述

#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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)
blank

相关推荐

  • fork函数简介_fork()&&fork()

    fork函数简介_fork()&&fork()包括: fork函数简介fork函数的两次返回和父子进程的执行顺序简介fork()子进程与父进程之间的文件描述符问题  [cpp] view plaincopyprint? 1  1 #include                                                                                  

  • 阶乘的累加和

    阶乘的累加和

  • 超全sql注入实用语句_sql注入语句实例大全

    超全sql注入实用语句_sql注入语句实例大全目录判断是否存在注入判断列数Union联合注入爆数据库爆表爆字段爆数据sql盲注导入导出文件Post注入修改useragent:修改referer:修改cookiegroup_concat二次排序注入绕过or和and过滤绕过空格的过滤宽字节注入堆叠注入orderby后的injectionmysqli_multi_query()函数判断是否存在注入在http://127.0.0.1/…

  • ROS安装报错 sudo: rosdep:找不到命令

    ROS安装报错 sudo: rosdep:找不到命令安装ROS时初始化rosdep过程中,执行到:sodurosdepinit报错:sudo:rosdep:找不到命令原因:没有安装python-rosdep这个包解决办法:sudoapt-getinstallpython-rosdep然后重新执行:sudorosdepinitrosdepupdate…

  • 关于STM32使用LAN8720A插拔网线重连「建议收藏」

    关于STM32使用LAN8720A插拔网线重连「建议收藏」关于STM32使用LAN8720A插拔网线重连其实在做这个功能的时候大家一定要心平气和,不要认为有多复杂,多看DATASHEET,当然后面会遇到一些问题,所以在踩过坑之后,过了差不多一年了,也算是回过头来做个记录吧。1.关于LAN8720的手册解读通过查阅lan8720的数据收册:标黄部分,在寄存器映射中第一个寄存器为基本状态寄存器,然后我们通过查阅这个寄存器发现,在该寄存器的bit2中说明了,当检测网线插入的时候该位为1,否则为0。知道这个那就好办了,我们可以根据这个状态位去判断网线的接入状

  • 《大话数据结构》读后感_数据结构读书笔记5000

    《大话数据结构》读后感_数据结构读书笔记5000《大话数据结构》读后总结(七)

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号