推荐课程:
1.膨胀卷积_哔哩哔哩_bilibili(膨胀卷积原理讲的很清楚)
2.膨胀卷积(Dilated convolution)详解(gradding effect问题和解决方法讲的很清楚)
感谢博主霹雳吧啦Wz / 太阳花的小绿豆和Enzo_Mi提供视频讲解和源码支持,真乃神人也!
目录
1.为什么使用膨胀卷积?
2. 膨胀卷积是什么?
3.膨胀卷积的参数设置
4.膨胀卷积的缺点:网格效应gradding effect
膨胀卷积(Dilated convolution),也叫空洞卷积(Atrous convolution)。
作用:1. 增大感受野 2. 保持原输入特征图W、H。
1.为什么使用膨胀卷积?
使用最大池化(max_pooling)会降低输入特征图的高度和宽度,其次通过最大池化会丢失一些特征图的细节信息以及丢失一些比较小的目标,这些丢失的目标无法通过上采样还原,那么会导致语义分割效果不理想。
(感受野是指卷积神经网络中每个输出特征图的每个像素点对应输入图像的区域大小。)
但是如果去除池化层,会导致感受野变小。而使用膨胀卷积既可以增大感受野又可以保持原图像长和宽大小不变。但是膨胀卷积并不是万能的,它存在gradding effect的问题。
2. 膨胀卷积是什么?
(k为卷积核大小,r为膨胀率dilation rate,p为填充,s为步长。膨胀率是卷积核的每个像素点在输入图像上的间隔大小。普通卷积的膨胀率为1,图中膨胀卷积的膨胀率为2。)
由上图可见,使用膨胀卷积输出特征图的每个像素点对应输入图像的区域更大,意味着感受野也更大。如上图,普通卷积输出特征图的每个像素点对应输入图像的区域为3x3,膨胀卷积对应区域为5x5。
3.膨胀卷积的参数设置
in_channels (int) – 输入通道数
out_channels (int) – 输出通道数
kernel_size (int or tuple) – 卷积核大小
stride (int or tuple, optional) – 步幅。 默认为 1
padding (int or tuple, optional) –
填充
。 默认为 0output_padding (int or tuple, optional) – 额外的填充在输出。 默认为 0
groups (int, optional) – 是否使用组卷积。 默认为 1
bias (bool, optional) – 是否在输出上添加偏执. 默认为
True
dilation (int or tuple, optional) – 是否使用膨胀卷积、空洞卷积。 默认为 1
如上图所示,膨胀卷积希望输出特征值与原图大小一致,不能再令padding=1。
4.膨胀卷积的缺点:网格效应gradding effect
由于膨胀卷积是一种稀疏的采样方式,当多个膨胀卷积叠加时,有些像素根本没有被利用到,会损失信息的连续性与相关性,进而影响分割、检测等要求较高的任务。
如图所示,经过了四次的膨胀卷积,每次的膨胀卷积膨胀率设为2,在layer4中保留的layer1(原图像)的像素值中间会产生许多缝隙(数字的大小是利用的次数),进而会造成信息的连续性的损失。
解决方法:关于设计解决空洞卷积中‘gridding effect‘问题的几个原则(简单易懂)_小林学编程的博客-CSDN博客让读者在运用空洞卷积时,不再出现‘gridding effect’的问题!!!https://blog.csdn.net/weixin_57643648/article/details/122790230?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168394435516800213042207%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168394435516800213042207&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-122790230-null-null.142%5Ev87%5Einsert_down1,239%5Ev2%5Einsert_chatgpt&utm_term=gradding%20effect&spm=1018.2226.3001.4187