因为太多的博客并没有深入理解,本文是自己学习后加入自己深入理解的总结记录,方便自己以后查看。
DeeplabV3+中Aspp的作用和DenseAsppp的区别
学习前言
随着Deeplab系列不断发展,DeeplabV3+做到了被大家认可为是语义分割的新高峰,本文一起来学习如何修改DeeplabV3+的加强特征提取网络Aspp
一、Aspp的原理和优点
DeepLabV3+的作者在在ASPP模块上做了以下优化:
- 1、优化了空洞比率
- 2、增加了全局池化层来提取全局信息
- 3、引入BatchNormalization
- 4、将ASPP的卷积替换成Depth-wise卷积来减少参数数量,加快计算速度

#ASPP特征提取模块(利用不同膨胀率的膨胀卷积进行特征提取)
class ASPP(nn.Module):
def __init__(self, dim_in, dim_out, rate=1, bn_mom=0.1):
super(ASPP, self).__init__()
#第一分支1x1卷积,膨胀系数1
self.branch1 = nn.Sequential(
nn.Conv2d(dim_in, dim_out, 1, 1, padding=0, dilation=rate,bias=True),
#作用:卷积层之后添加,标准化,对数据进行归一化处理,使得数据不会因为过大导致性能不稳定,提高收敛的速度
nn.BatchNorm2d(dim_out, momentum=bn_mom),
nn.ReLU(inplace=True),
)
#第二分支3x3卷积,膨胀系数6,填充系数6,增加偏置参数
self.branch2 = nn.Sequential(
nn.Conv2d(dim_in, dim_out, 3, 1, padding=6*rate, dilation=6*rate, bias=True),
nn.BatchNorm2d(dim_out, momentum=bn_mom),
nn.ReLU(inplace=True),
)
#第三分支3x3卷积,膨胀系数12,填充系数12,增加偏置参数
self.branch3 = nn.Sequential(
nn.Conv2d(dim_in, dim_out, 3, 1, padding=12*rate, dilation=12*rate, bias=True),
nn.BatchNorm2d(dim_out, momentum=bn_mom),
nn.ReLU(inplace=True),
)
#第四分支3x3卷积,膨胀系数18,填充系数18,增加偏置参数
self.branch4 = nn.Sequential(
nn.Conv2d(dim_in, dim_out, 3, 1, padding=18*rate, dilation=18*rate, bias=True),
nn.BatchNorm2d(dim_out, momentum=bn_mom),
nn.ReLU(inplace=True),
)
#第五分支1x1卷积,非空洞卷积
self.branch5_conv = nn.Conv2d(dim_in, dim_out, 1, 1, 0,bias=True)
self.branch5_bn = nn.BatchNorm2d(dim_out, momentum=bn_mom)

本文详细介绍了DeeplabV3+中ASPP模块的改进,包括优化空洞比例、引入BN和Depth-wise卷积,并对比了DenseAspp的更大感受野特性。同时,展示了如何在Deeplabv3基础上支持DenseAspp网络的设计。
最低0.47元/天 解锁文章
9450





