- PaperWeekly 2016.08.05 第一期
- PaperWeekly 第二期
- PaperWeekly 第三期
- PaperWeekly 第四期 - 基于强化学习的文本生成技术
- PaperWeekly 第五期 - 从 Word2Vec 到 FastText
- PaperWeekly 第六期 - 机器阅读理解
- PaperWeekly 第七期 -- 基于 Char-level 的 NMT OOV 解决方案
- PaperWeekly 第八期 - Sigdial2016 文章精选(对话系统最新研究成果)
- PaperWeekly 第九期 -- 浅谈 GAN
- PaperWeekly 第十期
- PaperWeekly 第十一期
- PaperWeekly 第十二期 - 文本摘要
- PaperWeekly 第十三期--最新文章解读
- PaperWeekly 第十四期 - TTIC 在 QA 任务上的研究进展
- PaperWeekly 第十六期 - ICLR 2017 精选
- PaperWeekly 第十七期 - 无监督/半监督 NER
- PaperWeekly 第十八期 - 提高 seq2seq 方法所生成对话的流畅度和多样性
- PaperWeekly 第十九期 - 新文解读(情感分析、机器阅读理解、知识图谱、文本分类)
- PaperWeekly 第二十期 - GAN(Generative Adversarial Nets)研究进展
- PaperWeekly 第二十一期 - 多模态机器翻译
- PaperWeekly 第二十二期 - Image Caption 任务综述
- PaperWeekly 第二十三期 - 机器写诗
- PaperWeekly 第二十四期 - GAN for NLP
- PaperWeekly 第二十五期 - 增强学习在 image caption 任务上的应用
- PaperWeekly 第二十六期 - 2016 年最值得读的 NLP paper 解读(3 篇)+在线 Chat 实录
- PaperWeekly 第二十七期 | VAE for NLP
- PaperWeekly 第 28 期 | 图像语义分割之特征整合和结构预测
- PaperWeekly 第 29 期 | 你的 Emoji 不一定是我的 Emoji
- PaperWeekly 第 30 期 | 解读 2016 年最值得读的三篇 NLP 论文 + 在线 Chat 实录
- PaperWeekly 第 31 期 | 远程监督在关系抽取中的应用
- PaperWeekly 第 32 期 | 基于知识图谱的问答系统关键技术研究 #01
- PaperWeekly 第 33 期 | 基于知识图谱的问答系统关键技术研究 #03
- PaperWeekly 第 34 期 | VAE 在 chatbot 中的应用
- PaperWeekly 第 35 期 | 如何让聊天机器人懂情感 PaperWeekly 第 35 期 | 如何让聊天机器人懂情感
- PaperWeekly 第 36 期 | Seq2Seq 有哪些不为人知的有趣应用?
- PaperWeekly 第 37 期 | 论文盘点:检索式问答系统的语义匹配模型(神经网络篇)
- PaperWeekly 第 38 期 | SQuAD 综述
- PaperWeekly 第 39 期 | 从 PM 到 GAN - LSTM 之父 Schmidhuber 横跨 22 年的怨念
- PaperWeekly 第 40 期 | 对话系统任务综述与基于 POMDP 的对话系统
- PaperWeekly 第 41 期 | 互怼的艺术:从零直达 WGAN-GP
- PaperWeekly 第 42 期 | 基于知识图谱的问答系统关键技术研究 #04
- PaperWeekly 第 43 期 | 教机器学习编程
- PaperWeekly 第 44 期 | Kaggle 求生
- PaperWeekly 第 45 期 | 词义的动态变迁
- PaperWeekly 第 46 期 | 关于远程监督,我们来推荐几篇值得读的论文
- PaperWeekly 第 47 期 | 开学啦!咱们来做完形填空:“讯飞杯”参赛历程
- 深度强化学习实战:Tensorflow 实现 DDPG - PaperWeekly 第 48 期
- 评测任务实战:中文文本分类技术实践与分享 - PaperWeekly 第 49 期
- 从 2017 年顶会论文看 Attention Model - PaperWeekly 第 50 期
- 深入浅出看懂 AlphaGo Zero - PaperWeekly 第 51 期
- PaperWeekly 第 52 期 | 更别致的词向量模型:Simpler GloVe - Part 1
- PaperWeekly 第 53 期 | 更别致的词向量模型:Simpler GloVe - Part 2
- 基于神经网络的实体识别和关系抽取联合学习 | PaperWeekly #54
PaperWeekly 第 28 期 | 图像语义分割之特征整合和结构预测
前言
近来阅读了 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 是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
这是林国省老师两篇论文中提到的网络结构的前面一部分,我把它抽取出来在此讨论特征整合,这部分网络结构利用 多尺度 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_id=820586814145458176
作者主张所有层的特征都是有用的,高层特征有助于类别识别,低层特征有助于生成精细的边界。 所以有了接下来的网络结构,说实话我是觉得有点复杂。
网络结构
可以看见,整个结构其实是类似于 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_id=820586814145458176
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⊃2; 个值,为了将所有类别之间的配对关系都考虑进去,但是这里产生的值应该有很多冗余。
Asymmetric Pairwise Functions
对于不对称的关系比如 AboveBelow 就需要这样的不对称二元势函数进行学习,而这种势函数主要依赖于两个节点输入的顺序,这个可以通过两个 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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论