图像语义分割之特征整合和结构预测

本文介绍了图像语义分割领域的两种重要技术:特征整合和结构预测。特征整合通过多尺度(如PSPNet和FeatMap-Net)和多级(如RefineNet)整合来捕获全局信息。结构预测则关注于利用CRF(如Contextual CRF)改进预测,通过一元和不对称的二元势函数进行精确的空间语义建模。
摘要由CSDN通过智能技术生成

前言

近来阅读了PASCAL VOC 2012排行榜上前几的文章,包括PSPNet和林国省老师的几篇论文,觉得现在在semantic segmentation领域对于Multi-scale Features ensembling的关注又多起来了(当然其实一直都应用的挺多),然后林国省老师对CRF有一些新的认识和解读。这些都将总结于此。

两个发展方向

  • 特征整合(Feature Ensembling)
    又分为:

    • 多尺度(multi-scale) 特征整合
    • 多级(multi-level)特征整合
  • 结构预测(Structure Prediction)
    比如之前经常使用的条件随机场

特征整合

多尺度整合

PSPNet

这个方法在前一段时间是PASCAL VOC 2012排行榜上的第一,现在的第二。

语义分割中常见问题
  • 关系不匹配(Mismatched Relationship)
    场景中存在着可视模式的共现。比如,飞机更可能在天上或者在跑道上,而不是公路上。
  • 易混淆的类别(Confusion Categories)
    许多类别具有高度相似的外表。
  • 不显眼的类别(Inconspicuous Classes)
    场景中包括任意尺寸的物体,小尺寸的物体难以被识别但是有时候对于场景理解很重要。

Note:这些大多数错误都部分或者完全和上下文关系以及全局信息有关系
而PSPNet就是为了整合不同区域的context来获取全局的context信息。

网络结构

PSPNet

其中的一些tricks:

  • 图片输入的CNN是ResNet,使用了dilated convolution
  • Pyramid Pooling Module中的conv是1×1的卷积层,为了减小维度和维持全局特征的权重
  • Pyramid Pooling Module中的pooling的数量以及尺寸都是可以调节的
  • 上采样使用的双线性插值
  • poly learning rate policy
  • 数据扩增用了:random mirror, random resize(0.5-2), random rotation(-10到10度), random Gaussian blur
  • 选取合适的batchsize

结构还是很清晰明确的,没太多可说的。
此外,文中还提到了为了训练使用了一个辅助的loss,并不在我们讨论内容之内仅展示一下示意图:
这里写图片描述

PSPNet在PASCAL VOC 2012 上测试的结果如下:
这里写图片描述

FeatMap-Net

这是林国省老师两篇论文中提到的网络结构的前面一部分,我把它抽取出来在此讨论特征整合
这部分网络结构利用多尺度CNNsliding pyramid pooling来获取patch-background的上下文信息。

网络结构

这里写图片描述

其中:

  • 图片进来先进行0.4, 0.8, 1.2的放缩
  • 前1-5 conv block是共享参数的
  • 向上采样还是我们熟悉的双线性插值~
Sliding Pyramid Pooling

这里写图片描述

其中使用的是滑动的pooling,即stride为1,所以不降低feature map的尺寸。不同尺寸的窗口有利于获得不同大小的背景信息,而且增加了field-of-view,这样feature vector能编码更大范围的信息(feature vector会在之后的结构中使用,下文会介绍到)、

多级整合

RefineNet

这个方法在前一段时间是PASCAL VOC 2012排行榜上的第三,现在的第四。
本方法主要想解决的限制是:
多阶段的卷积池化会降低最后预测结果图片的尺寸,从而损失很多精细结构信息。

现有方法的解决办法:

  • 反卷积作为上采样的操作
    反卷积不能恢复低层的特征,毕竟已经丢失了
  • Atrous Convolution (Deeplab提出的)
    带孔卷积的提出就是为了生成高分辨率的feature map,但是计算代价和存储代价较高
  • 利用中间层的特征
    最早的FCN-8S就是这样做的,但是始终还是缺少强的空间信息

以上所说方法在我的这篇文章中都有提到,感兴趣的同学可以猛戳,这里就不赘述了。
作者主张所有层的特征都是有用的,高层特征有助于类别识别,低层特征有助于生成精细的边界。所以有了接下来的网络结构,说实话我是觉得有点复杂。

网络结构

这里写图片描述

可以看见,整个结构其实是类似于FCN-8S的结构的,只是抽出特征更早,而且经过了RefineNet进行处理。
整个流程就是,1/32的feature map输入RefineNet处理后和1/16的feature map再一起又输入一个RefineNet优化,后面的过程类似。

RefineNet

这里写图片描述

可以看出,每个RefineNet的输入是可以调整的,所以整个网络的连接也是可以修改的,当然作者做实验说明在他提出的其他变体中这种连接的效果最好。

Residual Convolution Unit(RCU)

这里写图片描述

Multi-resolution Fusion

这里写图片描述

这里将输入的不同分辨率的feature map上采样到和最大feature map 等尺寸然后叠加,此处的conv用于输入的参数自适应。

Chained Residual Pooling

这里写图片描述

文中提到:

  • conv作为之后加和的权重
  • relu对接下来pooling的有效性很重要,而且使得模型对学习率的变化没这么敏感
  • 这个链式结构能从大范围区域上获取背景context

此处不得不提到,这个结构中大量使用了identity mapping这样的连接,无论长距离或者短距离的,这样的结构允许梯度从一个block直接向其他任一block传播。

现在回过头来看看RefineNet整个网络结构还是有些复杂的,但是确实还是有一些效果,这种直接将低层特征抽取来优化高层特征的措施可以想象能对结果进行一些优化。但是始终还是觉得这样的处理有点太复杂了。

接下来看一下RefineNet在PASCAL VOC 2012上测试的结果:
这里写图片描述

终于可以松一口气了,特征整合这一块结构太多,有点眼花缭乱吧,让我休息休息。
休息好了吧,接下来是CRF 的show time。

结构预测(CRF)

其实在语义分割这个领域很早就开始使用CRF或者MRF等对语义信息进行建模,在深度学习火起来之前就有不少这样的方法了。所以后来大家很自然地想到了深度学习和条件随机场的结合。但是,林国省老师指出现在利用条件随机场的方法都不太“地道”。
现有方法:

  • dense CRF作为FCN输出的后处理,并没有真正地结合进CNN
  • CRFasRNN中将二者真正结合了,但是只有其中一元势函数的输入来自CNN,二元势函数的输入来自于一元以及迭代,而且这里的二元势函数被强制考虑为局部平滑度

以上所说方法在我的这篇文章中都有提到,感兴趣的同学可以猛戳,这里就不赘述了。

Contextual CRF

此处提到的结构是和前文所述FeatMap-Net为统一网络结构

整体结构

这里写图片描述

此处我们主要讨论FeatMap-Net之后的CRF的处理。
林老师提出的这个方法对一元势函数和二元势函数都用CNN来直接进行处理,而且二元势函数是直接对空间语义建模更精确。

  • feature map中的每个空间位置(即每个像素点)对应CRF图中的一个节点
  • Pairwise connection就是通过每个节点与预定义的spatial range box中其他节点连接来体现的
  • 不同的空间关系通过定义不同类型的range box来实现的,每种空间关系通过特定的pairwise potential function来建模

不同空间关系:
这里写图片描述

Surrounding这样的关系就在对应节点的周围画框,Above/Below这样的关系就让节点在一条边的中间然后在其上方或者下方画框,此处的框是原图最短边的0.4.
此处我们回顾一下CRF的公式:

P(y|x)=1Z
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值