首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Decoders对于语义分割的重要性 | CVPR 2019

  • 24-03-05 04:01
  • 4593
  • 6998
blog.csdn.net
640?wx_fmt=gif 点击上方↑↑↑蓝字关注我们~

640?wx_fmt=jpeg

「2019 Python开发者日」7折优惠最后3天,请扫码咨询 ↑↑↑


作者 | Lin-Zhuo Chen

转载自博客

链接:https://linzhuo.xyz/posts/DUpsample/


今天为大家推荐一篇 CVPR2019 关于语义分割的文章 Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregation,该文章提出了一种不同于双线性插值的上采样方法,能够更好的建立每个像素之间预测的相关性。得益于这个强大的上采样方法,模型能够减少对特征图分辨率的依赖,能极大的减少运算量。该工作在 PASCAL VOC 数据集上达到了 88.1% 的 mIOU,超过了 DeeplabV3 + 的同时只有其 30% 的计算量。


论文传送门:https://arxiv.org/abs/1903.02120


1. Introduction


在之前的语义分割方法中,双线性插值通常作为其最后一步来还原特征图的分辨率,由于非线性差值不能建立起每个像素的预测之间的关系,因此为了得到精细的结果,对特征图的分辨率要求较高,同时带来了巨额的计算量。


为了解决这个问题,本工作提出了 Data-dependent Up-sampling (DUpsample),能够减少上采样操作对特征图分辨率的依赖,大量的减少计算量。同时得益于 DUpsample, Encoder 中的 low-level feature 能够以更小的运算量与 Decoder 中的 high-level feature 进行融合,模型结构如下所示:


640?wx_fmt=png


我们可以看到,该网络将传统的非线性插值替换成 DUpsample,同时在 feature fuse 方面,不同于之前方法将 Decoder 中的特征上采样与 Encoder 特征融合,本工作将 Encoder 中的特征下采样与 Decoder 融合,大大减少了计算量 ,这都得益于 DUpsample。


2. Our Approach


之前的语义分割方法使用下列公式来得到最终的损失: 

640?wx_fmt=png

其中 Loss 通常为交叉熵损失,F 为特征图,Y 为 ground truth,由于双线性插值过于简单,对特征图 F 的分辨率较高,因此引入了大量的计算。一个重要的发现是语义分割输入图像的 label Y 并不是 i.i.d 的,所以 Y 可以被压缩成 Y′,我们令640?wx_fmt=png, 并将 Y 划分成640?wx_fmt=png的子窗口,每个子窗口的大小为 r×r,接着我们将每个子窗口640?wx_fmt=png拉伸成向量640?wx_fmt=png,其中640?wx_fmt=png,随即我们将向量 v 压缩成低维向量 x,我们使用线性投影来完成,最后,我们有:640?wx_fmt=png,其中640?wx_fmt=png,用来将 v 压缩成 x,640?wx_fmt=png为 reconstruction matrix, v′为重建后的 v,我们可以用压缩后的向量 x 组合成 Y′.


矩阵 P 和矩阵 W 可以通过最小化下列式子得到:

640?wx_fmt=png

我们可以使用梯度下降,或者在正交约束的条件下使用 PCA 求解。


使用压缩后的 Y′为目标,我们可以使用下列损失函数来预训练网络:

640?wx_fmt=png

另一种直接的方法是在 Y 空间计算 loss,也就是并非将 Y 压缩到 Y′, 我们可以将 F 使用 W(上面预训练得到的)上采样然后计算损失,公式如下: 

640?wx_fmt=png


其中以两倍为例,DUpsample 的操作如下图所示:


640?wx_fmt=png


我们可以用 1X1 卷积来完成上述的权重与特征相乘的过程。但是当我们将这个模块嵌入到网络时会遇到优化问题。因此我们使用 softmax with temperature 函数来解决这个问题:640?wx_fmt=png。


我们发现 T 可以使用梯度下降学习得到,这样减少了调试的麻烦。


有大量的工作说明,与 low-level features 结合可以显著的提升分割的精度,其做法如下:640?wx_fmt=jpeg,


f 是在上采样之后的卷积操作,其计算量依赖于特征图的空间大小,这样做会显著增加计算量。得益于 DUpsample,我们可以使用下列操作来减少计算量:

640?wx_fmt=png,

这样做不仅保证了在低分辨率下的有效性,而且减少了计算量,同时允许任意 level feature 的融合。


只有使用了 DUpsample,上述操作才变得可行,否则语义分割的精度会被双线性插值限制。


3. Experiments


本次实验使用以下两种数据集:PASCAL VOC 2012 和 PASCAL Context benchmark。我们使用 ResNet-50 或 Xception-50 作为我们的 backbone,具体训练细节详见论文。


首先我们设计实验说明双线性插值的上限远远低于 DUpsample。首先我们搭建一个简易网络实现 auto-encoder,其中上采样方式分别使用双线性插值与 DUpsample, 输入分别为 ground_truth,得到下表中的 mIOU*,这个指标代表上采样方法的上限。同时我们使用 ResNet50 作为主干网络,输入为 raw image 去实现语义分割,得到下表中的 mIOU:


640?wx_fmt=png


通过上表我们可以发现: 


1) 在相同条件下,DUpsampling 效果优于 bilinear。

2)DUpsampling 在 output_stride=32 的情况下效果与 bilinear 在 output_stride=16 的情况下结果相当。


接下来我们设计实验说明融合不同的 low-level 特征对结果的影响,如下表所示:


640?wx_fmt=png


值得说明的是,并不是所有与 low-level feature 的融合都会提升结果,例如 conv1_3,因为其结果不够鲁棒。因此和什么 low-level feature 相结合对语义分割的结果有很大的影响。


接下来我们设计实验与双线性插值进行比较:


640?wx_fmt=png


可以看到我们的方法优于传统的双线性插值上采样方法。同时我们验证了不同的 softmax 对结果的影响,在没有使用 softmax with tenperature 的情况下只有 69.81 的 mIOU(这里没设置消融实验有些疑惑,感觉不同的 softmax 对实验结果影响挺大的)。


640?wx_fmt=png


最后将我们的方法与最新的模型进行比较,结果如下(分别为 PASCAL VOC 与 PASCAL context):


640?wx_fmt=png

640?wx_fmt=png


我们的方法在只用 deeplabv3+ 30% 的计算量的情况下,超越了当前所有的方法。


总的来说,我觉得这个论文提出的想法很有趣,是一篇很有 insight 的论文。


由于论文现在还没有开源,笔者尝试实现了一下 DUpsample 的操作和网络:

https://github.com/LinZhuoChen/DUpsampling。


目前还在建设中,欢迎大家关注和 star。


(*本文是AI科技大本营转载文章,转载请联系原作者)


◆

精彩推荐

◆

640?wx_fmt=jpeg

推荐阅读:

  • NLP泰斗董振东老师与他的知网 | 纪念

  • 线下沙龙 | 2019如何学Python?这里有你需要的答案

  • 10行代码,用Python写一个USB“病毒”?

  • Python官方中文文档上线,Pythoner快收藏福利!

  • JavaScript 力压 Java 成最受欢迎编程语言,TypeScript 大涨!

  • 工作 996,生病 ICU!这一次,程序员不忍了!

  • “V神给了我1000个ETH, 我用来招了两个程序员” 独立开发者做到极限就是Paul Hauner | 人物志

  • 阿里带火的中台,究竟是个啥?

  • 曝光!月薪5万的程序员面试题:73%人都做错,你敢试吗?


640?wx_fmt=png

❤点击“阅读原文”,查看历史精彩文章。

注:本文转载自blog.csdn.net的AI科技大本营的文章"https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/88967613"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top