PSPNet

PSPNet

发表于 2019-10-05 | 分类于 测试 | 没有评论
PSPNet(Pyramid Scene Parsing Network),由施加膨胀卷积的ResNet和金字塔池化模块(pyramid pooling module)构成。
PSPNet为当时最优,在PASCAL VOC 2012上的mIoU为85.4%,在Cityscapes上的mIoU为80.2%,均列第一。
创新点
施加膨胀卷积的ResNet/金字塔池化模块/PSPNet总体结构
在这里插入图片描述

如Fig3所示,为PSPNet总体结构:

如Fig3(a),为输入图片,输入尺寸为: ( 473 , 473 , 3 ) (473,473,3) (473,473,3)
如Fig3(b),通过施加膨胀卷积且预训练的ResNet,输出特征图为输入原图的 1 / 8 1/8 1/8大小,即输出尺寸为: ( 60 , 60 , 2048 ) (60,60,2048) (60,60,2048)
如Fig3©,用金字塔池化模块来聚合上下文信息,金字塔层级为4:
层级1:通过核大小为 ( 60 , 60 ) (60,60) (60,60),步长为 ( 60 , 60 ) (60,60) (60,60)的平均池化,输出尺寸为 ( 1 , 1 , 2048 ) (1,1,2048) (1,1,2048)的特征图
层级2:通过核大小为 ( 30 , 30 ) (30,30) (30,30),步长为 ( 30 , 30 ) (30,30) (30,30)的平均池化,输出尺寸为 ( 2 , 2 , 2048 ) (2,2,2048) (2,2,2048)的特征图
层级3:通过核大小为 ( 20 , 20 ) (20,20) (20,20),步长为 ( 20 , 20 ) (20,20) (20,20)的平均池化,输出尺寸为 ( 3 , 3 , 2048 ) (3,3,2048) (3,3,2048)的特征图
层级4:通过核大小为 ( 10 , 10 ) (10,10) (10,10),步长为 ( 10 , 10 ) (10,10) (10,10)的平均池化,输出尺寸为 ( 6 , 6 , 2048 ) (6,6,2048) (6,6,2048)的特征图
对四个层级的特征图,分别通过 1 t i m e s 1 1times1 1times1卷积(conv/bn/ReLU),降通道数至512
对四个层级的特征图,分别通过上采样(线性插值),将各特征图的空间尺寸还原至金字塔池化模块的输入的空间尺寸,即各层级特征图的输出尺寸均还原为 ( 60 , 60 , 512 ) (60,60,512) (60,60,512)
将四个层级的特征图以及金字塔池化模块的输入相串联,输出尺寸为 ( 60 , 60 , ( 512 t i m e s 4 + 2048 ) ) = ( 60 , 60 , 4096 ) (60,60,(512 times 4+2048)) = (60,60,4096) (60,60,(512times4+2048))=(60,60,4096)
如Fig4(d),通过卷积层,得到最终经的预测特征图 :
通过 1 t i m e s 1 1times1 1times1卷积(conv/bn/ReLU),降通道数至512,故输出尺寸为 ( 60 , 60 , 512 ) (60,60,512) (60,60,512)
通过 1 t i m e s 1 1times1 1times1卷积,调整通道等于目标分类数 n u m c l a s s num_{class} numclass,输出尺寸为 ( 60 , 60 , n u m c l a s s ) (60,60,num_{class}) (60,60,numclass)
上采样,缩放空间尺寸(线性插值)到原始输入的空间尺寸,故输出尺寸为 ( 473 , 473 , n u m c l a s s ) (473,473,num_{class}) (473,473,numclass)
其中,对于施加膨胀卷积的ResNet,其改动表述如下:

对于原始的ResNet:
原始的ResNet由conv1,conv2_x,conv3_x,conv4_x,conv5_x构成
其中,conv1,conv2_1,conv3_1,conv4_1,conv5_1分别进行一次下采样,因此共下采样5次,输出特征图为输入尺寸的1/32
施加膨胀卷积的ResNet,对原始的ResNet的改动如下:

conv1,conv2_x,conv3_x保持不变
改动1:conv4_1中第一个1x1卷积的步长由2改为1,且conv4_x中的3x3卷积采用采样率(sampling rates)为2的膨胀卷积
改动2:conv5_1中第一个1x1卷积的步长由2改为1,且conv5_x中的3x3卷积采用采样率为4的膨胀卷积
因此,施加膨胀卷积的ResNet的下采样次数减少2次,为3次,输出特征图为输入尺寸的1/8;同时,通过膨胀卷积,扩大了特征图的感受野。
举例说明:若输入尺寸为 ( 473 , 473 , 3 ) (473,473,3) (473,473,3)

对于原始的ResNet,进行了5次下采样,即输出特征图的空间尺寸为原图的 1 / 32 1/32 1/32,则输出尺寸为 ( 15 , 15 , 2048 ) (15,15,2048) (15,15,2048)
注1:此处的输出是指conv5_x的输出,去除后续平均池化层及全连接层
注2:output_dim = ceil(input_dim / 32.0)
对于施加膨胀卷积的ResNet,进行了3次下采样,即输出特征图的空间尺寸为原图的 1 / 8 1/8 1/8,则输出尺寸为 ( 60 , 60 , 2048 ) (60,60,2048) (60,60,2048)
其中,对于金字塔池化模块:

其根本目的是为了通过不同的金字塔层级,得到不同尺度的特征图,然后聚合这些特征图,因此便聚合了不同尺度的上下文信息。
对于金字塔模块,可以针对输入尺寸的大小,来进行自定义,示例如下:

if input_shape == (473, 473):
    kernel_strides_map = {1: 60, 2: 30, 3: 20, 6: 10}
elif input_shape == (713, 713):
    kernel_strides_map = {1: 90, 2: 45, 3: 30, 6: 15}


# 针对(320,320),自定义金字塔池化模块
elif input_shape == (320,320):                                  
    kernel_strides_map = {1: 40, 2: 20, 4: 10, 8: 5}        
# 针对(512, 512),自定义金字塔池化模块
elif input_shape == (512, 512):
    kernel_strides_map = {1: 64, 2: 32, 4: 16, 8: 8}

模型比较
在这里插入图片描述

如表Table1所示,为金字塔池化模块在不同设置下,PSPNet的表现:

其中当金字塔池化模块采用B1236+AVE+DR的配置时,PSPNet的表现为最优
注:B1236+AVE+DR三者合起来,称为金字塔池化模块
B1236(即金字塔模块中的4个层级尺度)对相比于B1的单尺度,可提升PSPNet表现
AVE(即金字塔模块中采用平均池化)相比于采用MAX(即金字塔模块中采用最大池化),可提升PSPNet表现
DR(即在AVE后,通过1x1卷积降通道数),可提升PSPNet表现
在这里插入图片描述

如Table3所示,为在不同的预训练模型下,PSPNet的表现:

更好的预训练模型,更好的PSPNet(PSPNet269>PSPNet152>PSPNet101>PSPNet50);
MS(即多尺度测试),可提升PSPNet表现
在这里插入图片描述

如Table4所示,为PSPNet与不同模型的比较:

PSPNet在ResNet(基础网络)、DA(数据增强)、AL(辅助loss)、金字塔模块的加持下,效果最优。
总结
PSPNet的组成很简单:dilatd ResNet + 金字塔池化模块。
PSPNet属于常规语义分割模型,目的是为了更好的效果,并没有考虑性能。在效果方面,PSPNet比FCN/SegNet/DeeplabV1都要好。
参考文献
原文链接:https://www.dazhuanlan.com/2019/10/05/5d979c72bce40/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值