CVPR2020 | 即插即用!将双边超分辨率用于语义分割网络,提升图像分辨率的有效策略...
点击上方“AI算法修炼营”,选择“星标”公众号
精选作品,第一时间送达
本文是收录于CVPR2020的工作,文章利用低分辨率的输入图像通过超分辨率网络生成高分辨率的图像,从而给语义分割模型提供额外的信息进而分割性能,其FA模块和视觉注意力机制比较类似,而且它额外增加的模块在部署阶段可以去掉,几乎不会增加计算量,是一种提高分辨率的有效策略。
论文地址:http://openaccess.thecvf.com/content_CVPR_2020/papers/Wang_Dual_Super-Resolution_Learning_for_Semantic_Segmentation_CVPR_2020_paper.pdf
代码地址(即将开源):https://github.com/wanglixilinx/DSRL
现当前最先进的语义分割方法通常使用高分辨率输入来获得高性能,这带来了巨大的计算量,并限制了它们嵌入式等计算资源受限设备上的应用。本文提出了灵活而简单的双支路网络框架(DSRL)可以很好的提高网络精度的同时不引入额外的计算量。
该方法由三部分组成:语义分割超分辨率(SSSR),单图像超分辨率(SISR)和特征相似性(FA)模块,可以保持高分辨率表示和低分辨率输入,同时降低模型计算的复杂性。此外,它可以容易地推广到其他任务,例如人体姿势估计。对于CityScapes数据集上的语义分割任务,该方法可以在具有相似FLOP的情况下实现mIoU≥2%的提高,并保持70%FLOP的性能。对于人体姿势估计,该方法可以在相同的FLOP情况下获得≥2%的mAP,并在FLOP减少30%的情况下保持mAP。
简介
对于语义分割这类逐像素的任务而言,同时保持高效的推理速度和出色的性能是一个挑战,尤其是在计算资源有限的移动设备上。在语义分割中,高分辨率深层特征表示在语义分割性能提升上起着至关重要的作用。
当前,有两条主线可以保持高分辨率的表示。一种方法是通过使用空洞卷积替换标准卷积来维护高分辨率表示,例如DeepLab系列方法。另一种是通过结合自上而下的路径和横向连接(如UNet等编码器-解码器框架)来产生更高分辨率的特征图。但是,这些方法通常需要昂贵的计算成本。此外,它们通常以原始的高分辨率图像作为输入,这进一步增加了计算量。最近,轻量级分割网络由于其在资源受限的设备中的应用优势而也引起了很多关注。然而,它们的性能远远不如最新的方法。为了缩小精度差距,这些方法通常与高分辨率输入(例如1024×2048或512×1024)结合使用,这也带来了不错的效果。但是,一旦限制了输入大小,无论大型网络还是轻量网络,其性能都会下降。
图1 CityScapes验证集上不同网络的准确性与输入大小的关系。绿点表示具有不同输入大小的DeepLab-v3 +的结果:256×512、320×640、384×768、448×896、512×1024和1024×2048,蓝色三角形标记ESPNetv2的结果。红色表示分别基于DeepLabv3 +和ESPNetv2的方法的结果。
从图1可以看出,当输入分辨率从512×1024降至256×512时,两个网络的精度都会降低10%以上。因此,在本文中,设计了一个清晰而简单的框架来缓解这一难题。具体来说,在图像超分辨率的驱动下,将具有低分辨率图片输入通过超分辨率网络重建出高分辨率图像,因此本文提出了一种新颖的双重超分辨率学习Dual Super-Resolution Learning(DSRL)方法来保持高分辨率表示。这种学习方法被统一在two-stream框架中,该框架由语义分割超分辨率(SSSR),单图像超分辨率(SISR)和特征相似性(FA)模块组成。更具体地说,将超分辨率的思想整合到现有的语义分割pipline中,从而制定了语义分割超分辨率(SSSR)分支。然后,通过具有特征相似性(FA)模块进行SISR分支的细粒度结构表示,进一步增强了SSSR分支的高分辨率功能。此外,这两个部分共享相同的特征提取器,并且在训练过程中使用重建监督对SISR分支进行了优化,在推理阶段可以将其从网络中自由删除,从而节省了开销。
主要贡献:
(1)提出了一种双重超分辨率学习框架来保持高分辨率表示,可以在保持推理速度的同时提高性能;
(2)验证DSRL框架的通用性,可以很容易地扩展到其他任务
(3)证明了该方法在语义分割和人体姿势估计方面的有效性。使用差不多的计算量,可以提高≥2%的精度。
本文方法:Dual Super-Resolution Learning
图2.提出的DSRL框架概述,包括三个部分:语义分割超分辨率(SSSR)分支,单图像超分辨率(SISR)分支和特征相似性(FA)模块。编码器在SSSR分支和SISR分支之间共享。该体系结构将通过三个损失函数进行优化:SISR分支的MSE损失,FA损失和特定任务的损失,例如语义分割的交叉熵损失。
由于采用传统的编码器解码器结构,大多数现有方法只能将特征映射上采样到与输入图像相同的大小以进行预测,该尺寸可能小于原始图像。一方面,这可能导致有效标签信息的丢失。另一方面,仅依靠解码器很难恢复原始细节,这限制了性能的提高。
同时,以前的语义分割工作中存在的问题是输入分辨率大的情况下精度高,但是计算量也高,降低输入分辨率则精度也会降低,本文提出的方法减轻了这种情况:原理是从低分辨率的输入重建高分辨率的图像。之前类似的工作有四种:1.前上采样超分辨率,就是将输入双线性上采样到高分辨率然后微调网络。2.后上采样超分辨率,就是用网络后端的可学习的上采样层代替前上采样,可以很大程度减少计算复杂度。3.进步上采样超分辨率,是方法2的改进,它针对减少计算复杂度,用渐进的重建高分辨率图像并根据多尺度的单图像分辨率需要进行裁剪。4.迭代式上下采样超分辨率,采用迭代式上下采样产生媒介图像,然后结合它们去重建最后的高分辨率图像。考虑到计算量问题,本文遵循2方法的理念。
1、 Semantic Segmentation Super-Resolution(SSSR)
对于语义分割,只需附加一个额外的upsampling模块即可产生最终的预测mask,整个过程称为语义分割超分辨率(SSSR)。例如,输入512×1024大小的图片,将输出1024×2048大小,比输入图像大2倍。其他语义分割方法训练和测试图片尺寸一般为512×1024,然后在后处理阶段将其放大为1024×2048,然而本文的方法可以充分利用ground truth,避免了预处理导致的有效标签信息丢失。额外的语义分割upsampling上采样模块由一堆反卷积层组成,然后是BatchNorm和ReLU层,只需要较少的参数。
2、Single Image Super-Resolution(SISR)
如上所述,仅依靠解码器模块还不足以恢复使用原始图像作为输入获得的类似高分辨率语义特征表示。由于解码器是简单的双线性上采样层或子网络,由于输入图片的分辨率较低(例如512×1024),因此不会包含任何其他信息。
SISR旨在从低分辨率输入中构建高分辨率图像。这意味着SISR可以在低分辨率输入下有效地重建图像的细粒度结构信息,这对于语义分割总是有帮助的。为了显示更好的理解,在图3中可视化了SSSR和SISR的功能。通过比较图3中的(b)和(c),可以轻松地发现SISR包含更完整的对象结构。尽管这些结构没有明确类别,但是可以通过像素与像素或区域与区域之间的关系有效地对它们进行分组。众所周知,这些关系可以隐式地传递语义信息,从而有利于语义分割的任务。
图3.同一输入(0.5倍)下SSR和SISTER的特征层可视化图。(a)输入图像,(b)SSSR特征可视化(c)SISR特征可视化。
因此,利用从SISR提取的高分辨率特征来指导SSSR的高分辨率表示的学习,这些细节可以通过内部像素之间的相关性或关系进行建模,关系学习可以弥补解码器的简单设计问题。对于SISR分支,它与SSSR共享特征提取器,如图4(b)所示。整个分支都在原始图像的监督下进行训练,并将在推理阶段自由删除。具体的设计细节参考了论文《Real-time single image and videosuper-resolution using an efficient subpixel convolu-tional neural network》。
3、Feature Affinity Learning(FA)
因为SISR比SSSR包含更多的完整结构的信息,用此模块来指导SSSR去学习高分辨率的表征。FA旨在学习SISR和SSSR分支之间的相似度矩阵的距离,其中,相似度矩阵主要描述像素之间的成对关系。
FA为了学习SISR和SSSR之间相似矩阵的距离,如下式。
相似矩阵的定义
Sij代表两个特征图任意两个像素点的关联,p和q代表正则化方式,这里p=2,q=1(就是L1正则和L2正则)。
损失函数
用于语义分割的交叉熵误差:
用于SISR的均方误差:
其中SISR(·)和Y代表超分辨率输出及其对应的ground truth,pi和yi代表像素i的分割预测概率和对应类别,N表示像素数。w1和w2设置为0.1和1.0,使这些损失值范围固定可以相互比较。
相似矩阵距离误差:
实验与结果
数据集:Cityscapes Dataset、CamVid
评价指标:mIoU
1、消融实验
在分别代表轻量级网络和大型网络的ESPNetv2和DeepLabv3 +上进行了实验,并在Cityscape验证集上评估了mIoU。将图像的尺寸调整为256×512,作为加速实验训练的输入。如表1所示,以ESPNetv2为例,可以看到SSSR可以将性能从54.5%提高到55.7%,因为它减少了ground truth的定标时间。通过添加SISR分支,可以将mIoU有效提高2.4%。在结合FA损失的同时,性能可以进一步提高到59.5%(比baseline高5.0%),因此表明在SISR和SSSR之间传输结构信息是必要的。DeepLabv3 +上的结果也可以得出相同的结论,这始终证明了所提出的DSRL的有效性。
为了更好地理解DSRL,还可视化了baselineESPNetv2和DSRL之间的最终分割特征。如图5(c)所示,本文的方法可以显着提高边界的清晰度,并改善道路,汽车等不同类别的完整性,从而无疑增强了模型的最终判别能力。
不同分辨率大小输入图片的影响
2、定性评估
3、对比实验
4、Human Pose Estimation的迁移实验
数据集:MS COCO
评价指标:AP
baseline:HRNet
表5总结了baselineHRNet方法和所提出的DSRL方法之间的性能比较。以不同的分辨率作为输入,本文的方法始终超过HRNet 1.2%至3.3%。
更多实验细节,可以参考原文。
CVPR2020 | 即插即用!将双边超分辨率用于语义分割网络,提升图像分辨率的有效策略...相关推荐
- 用于道路场景实时准确语义分割的深度双分辨率网络
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...
- 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查
目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查 原文 Are We Hungry for 3D LiDAR Data for Semantic Segmentatio ...
- Dynamic Routing-中科院西交旷视(孙剑团队)提出用于语义分割的动态路由网络,精确感知多尺度目标,代码已开源!...
关注公众号,发现CV技术之美 ▊ 写在前面 近年来,大量手工设计和基于搜索的网络被用于语义分割.然而,以前的工作(如FCN.U-Net和DeepLab系列)希望在预定义的静态网络结构中处理不同规模的输 ...
- CVF2020邻域自适应/语义分割:FDA: Fourier Domain Adaptation for Semantic SegmentationFDA:用于语义分割的傅立叶域自适应算法
邻域自适应/语义分割:FDA: Fourier Domain Adaptation for Semantic Segmentation FDA:用于语义分割的傅立叶域自适应算法 0.摘要 1.概述 1 ...
- CVPR2020:4D点云语义分割网络(SpSequenceNet)
CVPR2020:4D点云语义分割网络(SpSequenceNet) SpSequenceNet: Semantic Segmentation Network on 4D Point Clouds 论 ...
- CVPR2020:点云弱监督三维语义分割的多路径区域挖掘
CVPR2020:点云弱监督三维语义分割的多路径区域挖掘 Multi-Path Region Mining for Weakly Supervised 3D Semantic Segmentation ...
- *基于类平衡自我训练的无监督域自适应用于语义分割
基于类平衡自我训练的无监督域自适应用于语义分割 摘要:最近的深度网络实现了最先进的性能在各种语义分割任务中.尽管有这样的进步,但是这些模型在现实世界中面临挑战,它们存在很大的差别在已标签训练/源文件和 ...
- 【损失函数合集】超详细的语义分割中的Loss大盘点
前言 前两天介绍了一下Contrastive Loss,Triplet Loss以及Center Loss.今天正好是周六,时间充分一点我就来大概盘点一下语义分割的常见Loss,希望能为大家训练语义分 ...
- 微软亚研院提出用于语义分割的结构化知识蒸馏 | CVPR 2019
作者 | CV君 来源 | 我爱计算机视觉 今天跟大家分享一篇关于语义分割的论文,刚刚上传到arXiv的CVPR 2019接收论文<Structured Knowledge Distillati ...
最新文章
- OpenCL,OpenGL编译
- xcode_6.1正式版下载xcode_6.1.dmg 下载分享
- python素材库_python的JSON库
- 导入别的项目到我的eclipse上出现红色感叹号问题解决方案
- react --- 生命周期 给子组件传递数据
- excel 多列匹配相等后 引用值
- POJ 1258 Agri-Net (最小生成树)
- Windows Phone 资源管理与换肤思考
- 剑指Offer-- 二维数组中的查找
- vue 动态数据请求
- angularjs--resource
- Javascript第五章location对象第五课
- JavaScript == 和 ===
- 入门highchart 第一天—— 环形图
- python使用逐行读取,出现空行,清楚空行方法
- android fastboot驱动,fastboot驱动
- C/C++编程笔记:C++中的atol(),atoll()和atof()函数
- 使用DeepAR实现股价预测
- 不等于在python中怎么打_在python中不等于用什么来表示
- vue H5页面制作微信公众号前期准备