dsicuz做的网站,直通车关键词优化口诀,wordpress 文章类主题,培训型网站 建设方案“ 余昌黔 华中科技大学硕士 研究方向为图像语义分割 知乎专栏 https://zhuanlan.zhihu.com/semantic-segmentation 前言 近来阅读了 PASCAL VOC 2012 排行榜上前几的文章#xff0c;包括 PSPNet 和林国省老师的几篇论文#xff0c;觉得现在在 semantic segmentation 领域对于… “ 余昌黔 华中科技大学硕士 研究方向为图像语义分割 知乎专栏 https://zhuanlan.zhihu.com/semantic-segmentation 前言 近来阅读了 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 信息。 网络结构 其中的一些 tricks: 图片输入的 CNN 是 ResNet使用了 dilated convolution Pyramid Pooling Module 中的 conv 是×的卷积层为了减小维度和维持全局特征的权重 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 这是林国省老师两篇论文中提到的网络结构的前面一部分我把它抽取出来在此讨论特征整合这部分网络结构利用多尺度 CNN 和 sliding 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和CRF: https://zhuanlan.zhihu.com/p/22308032?group_id820586814145458176 作者主张所有层的特征都是有用的高层特征有助于类别识别低层特征有助于生成精细的边界。所以有了接下来的网络结构说实话我是觉得有点复杂。 网络结构 可以看见整个结构其实是类似于 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) 其实在语义分割这个领域很早就开始使用 CRF 或者 MRF 等对语义信息进行建模在深度学习火起来之前就有不少这样的方法了。所以后来大家很自然地想到了深度学习和条件随机场的结合。但是林国省老师指出现在利用条件随机场的方法都不太“地道”。 现有方法 dense CRF 作为 FCN 输出的后处理并没有真正地结合进 CNN CRFasRNN 中将二者真正结合了但是只有其中一元势函数的输入来自 CNN二元势函数的输入来自于一元以及迭代而且这里的二元势函数被强制考虑为局部平滑度 以上所说方法在我之前的文章中都有提到感兴趣的同学可以猛戳以下链接这里就不赘述了。 图像语义分割之FCN和CRF: https://zhuanlan.zhihu.com/p/22308032?group_id820586814145458176 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 的公式 其中Ψω 是不同类型一元势函数的集合Ω 是一元势函数对应的节点集合θ 是不同类型二元势函数的集合Φ 是二元势函数对应的边的集合。 Unary Potential Functions 这里Zp,yp 对应与第 P 个节点和第 Yp 个类别 一元势函数对应的处理就是从 Feature map 上的一个节点提取出 feature vector然后连接几层全连接层输出K个值这个K就是需要预测的类别数。 Pairwise Potential Functions 我觉得这里对二元势函数的处理很巧妙将两个节点对应的 feature vector 提取出来然后连接到一起来学习两个节点之间的边很棒之后自然也是连接几层全连接层输出的是k² 个值为了将所有类别之间的配对关系都考虑进去但是这里产生的值应该有很多冗余。 Asymmetric Pairwise Functions 对于不对称的关系比如 Above\Below 就需要这样的不对称二元势函数进行学习而这种势函数主要依赖于两个节点输入的顺序这个可以通过两个 feature vector 连接的顺序来体现所以我说这样的处理很巧妙啊。 至此这种对 CRF 的解读讲完了但是这篇文章中的有一些内容还不得不提一下 这些 CRF 是用于 coarse prediciton stage 的为了提升低分辨率的预测文中提到在最后的输出的时候还是使用来的 dense crf 进行细化输出的这就比较尴尬了最开始还说人家不好现在还是要使用…… 文中提到 Piecewise Learning 作为新的一种对 CRF 的训练方法这里就没有阐述了感兴趣的同学可以看看原文。 参考文献 1. Zhao H, Shi J, Qi X, et al. Pyramid Scene Parsing Network[J]. 2016. 2. Lin G, Shen C, Hengel A V D, et al. Efficient Piecewise Training of Deep Structured Models for Semantic Segmentation[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2016:3194-3203. 3. Lin G, Shen C, Hengel A V D, et al. Exploring Context with Deep Structured models for Semantic Segmentation[J]. 2016. 4. Lin G, Milan A, Shen C, et al. RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation[J]. 2016. 来源paperweekly 原文链接