【语义分割】——PSPNET

转载自:https://www.it610.com/article/1297334292074012672.htm

大名鼎鼎的PSPnet, 2016年 ILSVRC’16 MIT Scene Parsing Challenge冠军。原文请戳https://arxiv.org/abs/1612.01105

基于像素级别的预测任务比如场景解析或者语义分割,最先使用卷积层替换分类任务中的全连接层得到了较好的效果(Fully Convolutional Networks for Semantic Segmentation——FCN),为了进一步扩大神经网络的感知野,使用了dilated卷积; 本文基于FCN 和dilated卷积改进。 如今研究方向主要有两个,一个是融合多尺度特征,因为高层的特征包含更多的语义信息和更少的位置信息,通过不同尺度的特征可以提高性能(比如fcn-16和fcn-8都融入了不同尺度信息)。另一个方向是基于结构预测,早先一些工作使用crf进行后处理来优化分割结果的边缘,后续就出现了一些端到端的网络, 这两个方向都是为了提高对语义分割边界的预测能力。

为了提高场景的理解能力利用好全局图像的先验信息,一些方法使用传统的特征提取算子提取全局的上下文信息。(Parsenet: Looking wider to see better)提出FCN和全局池化可以提高语义分割结果,但是本文发现全局描述子表达能力不够,本文通过金字塔场景解析网络得到不同区域的全局上下文信息。

几类语义分割常见错误的原因分析:

不平衡的关系:在复杂场景理解任务中上下文关系是重要的,比如fcn可能会将河流上船当作小汽车,但是如果理解图像的上下文关系就不会认为河流上是汽车,河流上一般停的是船。

混淆的类别:训练集中可能会有一些容易混淆的类别,比如mountain和hill,比如违规类别中的跨门经营和摆摊; 这些类别的外形是相似的,这个问题可以通过利用类别之间的相互关系来解决,比如相同的物体如果摆在人行道上属于摆摊 摆在门店旁是跨门经营。

不显眼的类别:数据集中可能有一些不太显阳的类别,比如路灯,标志牌;比如有相同花纹的枕头和床单,枕头就容易漏检,为了提高小目标或者不明显的大目标的识别准确度,就需要更多的关注包含不显眼的类别的子区域;

综上,大部分的问题都和上下文关系、全局信息有关,因此全局先验信息的网络可以提高场景分类的准确度。

金字塔池化模块:

在深度网络中,感知野的大小可以粗略指出能应用的上下文信息. 其中,全局平均池化是常用的获取图像全局上下文信息的方法,但是像mit ade20k这样复杂的数据,直接池化融合得到的向量将会损失空间信息引起歧义,拥有子区域上下文信息的全局上下文信息对于在诸多类别中分类是有效的,文献[Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition]中,不同层级的特征图通过金字塔池化融合 最终变成列向量连接起来输入全连接网络用于分类,这个全局先验的设计移除了cnn固定大小的限制,为了进一步减少不同子区域间上下文信息的损失,我们提出分层的全局先验,包含了不同尺度信息和不同子区域间的变化,本文叫做金字塔池化模块,如下图所示,其中红色是池化到11的结果最粗糙的结果,剩下的金字塔层将原特征图分为不同的子区域,形成了不同位置的池化表示,下图中conv是11的卷积核,为了减少特征层个数,

语义分割——PSPNet_第1张图片
在这里插入图片描述

上图是用netron打开的onnx模型文件,可以更清晰的看到PSPnet这里是怎么做的,原始的该层特征2048150150,然后是分别池化到11、22、33、66、然后分别过卷积将2048ffeature层降到512,再过激活函数和上采样后分别得到四个512 * 150 * 150, 最终将结果cancat = 2048 *150 * 150+4 * (512 * 150 * 150) = 4096 * 150 * 150

下面再来看看本文该架构的参考文献[Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition]这里是怎么做的,原始的featuremap是池化到1 * 1,2 * 2,4 * 4,然后flatten之后concat起来,由于是非像素级别的图像分类所以可以进行flatten,本文将这个思想用到了二维向量中,
语义分割——PSPNet_第3张图片

deep supervision:

如下图所示,除了在最后一层加softmax损失分类器,在第四个模块后增加了一个分类器,训练时最终的损失是loss1+loss2;在预测阶段,只有到最后一层全部网络做预测,
在这里插入图片描述

上图是一些实验结果比较,B1是金子塔只有一层池化到11,max使用最大池化,ave使用平均池化;B1236是本文提出的金字塔架构,分别池化到11、22 33 66,DR是一些数据增强策略,有几点结论:一是平均池化比最大值池化要好,最大的提升是实验的第一行到第二行,增加一个池化到11的B1 有比较显著的提升,acc和iou都提升了一个点。

语义分割——PSPNet_第5张图片

上图是添加的deep supervision损失的提升效果,也有比较下显著的提升,参数取0.4效果最好,即loss = loss1+ 0.4*loss2.

综上,文章的实验跑的很充分,想到的trick也很多,并且每一个小点trick提升效果也有相应的实验说明,一点点的小改进积累到一定程度才有大的突破啊

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PSPNet是一种用于语义分割深度学习网络模型,它通过使用金字塔池化模块来整合基于不同区域的上下文信息,从而提供了有效的全局上下文先验。相比于其他最先进的方法,PSPNet在效果上表现更好。\[1\] 金字塔池化模块可以收集具有层级的信息,比全局池化更有代表性。同时,PSPNet的计算量并没有比原来的空洞卷积FCN网络有很大的增加。在端到端学习中,全局金字塔池化模块和局部FCN特征可以被同时训练。\[2\] PSPNet语义分割任务中具有优越的性能。它利用金字塔池化模块和金字塔场景解析网络来聚合不同区域的全局上下文信息,从而生成高质量的场景解析结果。该方法在不同的数据集上实现了最先进的性能,例如在PASCAL VOC 2012和Cityscapes数据集上的mIoU准确性分别为85.4%和80.2%。\[3\] #### 引用[.reference_title] - *1* [PSPNet | 语义分割及场景分析](https://blog.csdn.net/qq_42722197/article/details/125611648)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [语义分割-PSPNet](https://blog.csdn.net/weixin_43925119/article/details/109706219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值