0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种不同于双线性插值的上采样方法

电子工程师 来源:lp 2019-04-08 14:47 次阅读

今天为大家推荐一篇 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 进行融合,模型结构如下所示:

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

2. Our Approach

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

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

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

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

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

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

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

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

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

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

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

这样做不仅保证了在低分辨率下的有效性,而且减少了计算量,同时允许任意 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:

通过上表我们可以发现:

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

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

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

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

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

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

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

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

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3865

    浏览量

    61307
  • 梯度
    +关注

    关注

    0

    文章

    30

    浏览量

    10259
  • 数据集
    +关注

    关注

    4

    文章

    1178

    浏览量

    24347

原文标题:Decoders对于语义分割的重要性 | CVPR 2019

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是线性插值?一维线性插值双线性插值在BMS开发中的应用

    线性插值法(linear interpolation),是指使用连接两个已知量的直线来确定在这两个已知量之间的一个未知量的值的方法
    的头像 发表于 12-24 10:44 1988次阅读
    什么是<b class='flag-5'>线性插值</b>?一维<b class='flag-5'>线性插值</b>和<b class='flag-5'>双线性插值</b>在BMS开发中的应用

    线性插值

    在求解线性插值的时候,我先把个数组分成两个,再求的时候,有时候出结果,有时候不出结果,求指教
    发表于 11-08 22:04

    双线性插值法的C语言程序!帮帮忙!拜托各位了!

    在DSP6000开发平台上用C语言实现双线性插值法,实现对图像的缩放效果的改进。
    发表于 04-20 18:52

    【安富莱——DSP教程】第21章 InterpolationFunctions的使用

    第21章InterpolationFunctions的使用 本期教程主要讲解维数据的线性插值和二维数据的双线性插值。 21.1 线性补L
    发表于 06-23 14:13

    一种基于FPGA的实时视频图像处理算法研究与实现

    针对视频的输出显示要求,重点介绍了基于双线性插值算法的实现。ModelSim的仿真结果表明,该算法符合多屏幕显示系统的要求。关键词 视频监控;视频图像处理;双线性插值;FPGA;多屏幕
    发表于 06-28 07:06

    基于FPGA的线性插值-

    ,并且做除法会消耗大量的资源。 本文提出一种基于查找法实现线性插值的算法,不需要利用除法实现线性插值。 2,方法原理 由当D是A,B的中点时,可以求出D的坐标为: x\' = (x1
    发表于 11-20 23:10

    基于FPGA的线性插值-中

    上次分享了基于FPGA的线性插值的背景和方法原理,今天分享 方法原理的验证。 通常FPGA的开发分为电路功能设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程
    发表于 11-23 23:09

    双线性变换法设计IIR滤波器

    双线性变换法设计IIR滤波器一、实验目的1、了解两种工程上最常用的变换方法:脉冲响应不变法和双线性变换法。2、掌握双线性变换法设计IIR滤波器的原理及具体设计方
    发表于 05-10 09:51 48次下载

    双线性变换法设计数字Butterworth和Chebyshe

    双线性变换法设计IIR滤波器一、实验目的1、了解两种工程上最常用的变换方法:脉冲响应不变法和双线性变换法。2、掌握双线性变换法设计IIR滤波器的原理及具体设计方
    发表于 05-10 10:00 77次下载

    基于Matlab的双线性插值算法在图像旋转中的应用

    MATLAB双线性插值图像处理的算法,读者可以自行参考。
    发表于 05-04 16:04 1次下载

    基于最优移位双线性插值的图像缩放旋转硬件加速研究

    基于最优移位双线性插值的图像缩放旋转硬件加速研究_丁家隆
    发表于 01-08 15:15 10次下载

    基于双线性插值的图像缩放在GPU上的实现

    基于双线性插值的图像缩放在GPU上的实现
    发表于 01-08 14:47 0次下载

    在FPGA上如何实现双线性插值的计算

    双线性插值顾名思义是线性插值Pro,为了说明白什么是双线性插值,首先得先从线性插值说起。那么什么又是线性呢?
    发表于 08-09 17:33 4432次阅读

    双线性插值算法的讲解

    双线性插值中,我们现在找x0', y0'所在位置旁边的四个点,再根据这四个点与(x0',y0')距离的关系得到权重值,最后计算出目标图像中(x,y)一点的像素值。
    的头像 发表于 09-19 10:25 2300次阅读

    基于FPGA的图像旋转和双线性插值算法设计

    今天开源一个FPGA图像处理相关的项目:图像旋转。图像旋转算法本身非常简单,但是如果想让旋转之后的图像更加完整、平滑,还需要进行双线性插值处理,因此整个算法FPGA实现起来还是有一定难度的。
    的头像 发表于 09-04 16:52 817次阅读
    基于FPGA的图像旋转和<b class='flag-5'>双线性插值</b>算法设计