DecoupleSegNet结构解读
Title
Improving Semantic Segmentation via Decoupled Body and Edge Supervision
通过解耦部分和边缘监督改进语义分割
解耦是什么?这里指的应该就是将图像拆分为edge部分和body部分,然后分别监督学习,最后再将两者合并。
Abstract
- 其他人的观点:现存的语义分割方法要么通过全局上下文信息(global context)提升物体内部连续性,要么通过多尺度特征融合沿着物体边缘提炼细节。
- 作者的观点:较好的语义分割模型需要显性地(explicitly)勾勒出物体的内在部分和边缘,其中内在部分对应的是图像的低频率部分,边缘对应的是图像的高频率部分。
- 如何做?为了达到这个目的,作者先通过学习一个使得物体部分更连续的流动域(flow field) 来扭曲(warp)图片特征。再通过显性地采集内在部分或边缘像素在解耦监督(decoupled supervision) 下进一步优化目标内在部分的特征和边缘特征。
- 如何体现效果好?作者提出的这种架构在多个backbone上的物体内部连续性(比如交通标志会被识别得更完整)和物体边缘都更好了。在四个主要的道路场景语义分割数据集(Cityscapes, CamVid, KIITI和BDD)我们的方法都很好,也保持了很高的效率。尤其是在仅有细节注释数据的Cityscape取得了83.7%的mIoU.
- 关键词:语义分割,边缘监督(edge supervision),流动域(flow field),多任务学习(multi-task learning)
Introduction
语义分割的定义,语义分割在各领域都很重要balabala
虽然FCNs已经在很多主要的语义分割基准测试中取得了很好的效果,它们还是有如下两个主要问题:
- FCNs的感受野随着深度的增加增长得很缓慢(线性增长),这样有限的感受野没办法完全拟合像素之间的更长关联。因此这些像素点很难分类,因为模糊和噪声会在物体内部出现。
- FCNs的下采样操作会模糊预测,因为从原图像与低分辨率图像相比较来看,很多较好的细节消失了。这样导致的结果是预测的分割块会比较破碎(blobby)而且边缘细节很不令人满意,尤其在小物体上表现很差。
针对这两个问题,已有的解决方案分别如下:
- 扩大感受野,例如空洞卷积(dilated convolution),金字塔池化模块(pyramid pooling module),non-local operators,graph convolution network(GCN),dynamic graph
- 将包含边缘信息的低层次特征嵌入高层次特征中或直接提炼低层次特征产生output
不过这些方法忽略了物体内部本身和物体边缘的联系。从另一个角度看,人类辨别物体其实看的就是一个整体,也就是物体内部本身和物体边缘的结合。由此启发,作者显性地探索了物体本身和边缘的关系来取得最终的语义分割结果。请看Fig. 1(a)前两行,通过使用均值或高斯滤波器得到平滑图像(低频率图像),再使用原始图像减去平滑后的图像就能得到高频率部分。也就是一张图像 = 描述平缓变化结构的低空间频率部分 + 表示快速变化细节的高空间频率部分。同理,分割的遮罩(segmentation mask)也可以以这种方式分解,原始部分 - 主体部分 = 边缘部分。受到这个观察的启发,作者假设一个语义分析的特征图也可以被分解为主体特征和边缘特征(见Fig. 1(b))。前者包含了平滑的低频率物体主体,后者包含了锐利的高频率边缘特征。
在这篇文章中,作者提出用显性地在特征层面拟合物体主体连续性和边缘保护然后将他们在统一的框架下来共同优化。
三个步骤如下:
- 用新型的基于流的方法(flow-based method)通过使每一个像素经过一个学习过的偏移域(a learned offset field)向物体内部弯曲从而生成物体本身特征表示。这样可以保持每个物体内部部分连续性。
- 通过显性地用原图片 - 物体本身之后可以得到边缘特征。物体特征是通过遮罩(mask)监督的,其中边缘在训练时被忽略。边缘特征是通过另一个边缘遮罩(edge mask)监督的,这是为了学习对边缘的预测。
- 两个最优的物体本身特征和边缘特征被结合在一起形成最终答案。
因为物体主体生成部分是通过下采样完成的,所以边缘信息不够准确。作者使用了标签松弛(label relaxation)在主体生成的训练过程中松弛物体边缘,这使得边缘和主体能互相吻合。这样两个部分都可以被结合到单一特征中从而作为重新构造的一种表示方法,这种表示方法可以被交叉熵损失函数监督。进一步来说,这种结构是轻量级的而且可以被结合到FCNs中来提升性能。
这篇文章的贡献如下:
- 提出了一种解耦物体主体和边缘的方法,物体主体和边缘可以分别使用不同方法来监督。
- 提出轻量级的基于流(flow-based)的整合模块。通过使每一个像素经过一个学习过的偏移域(a learned offset field)向物体内部扭曲来维持每个物体主体部分的连续性。
- 这种模块可以与FCNs结合来用可忽略的代价来提升性能。
Method
Decoupled segmentation framework
输入一个特征图F∈RH×W×CF \in \mathbb{R}^{H \times W \times C}F∈RH×W×C,其中CCC代表通道数,H×WH \times WH×W代表空间分辨率(spatial resolution),输出一个同样大小的提炼过的特征图F^\hat{F}F^
首先,FFF被分为FbodyF_{body}Fbody和FedgeF_{edge}Fedge。在这篇文章中,作者假设F=Fbody+FedgeF = F_{body} + F_{edge}F=Fbody+Fedge,目标就是设计出带有特定监督方式的组件来分别处理FbodyF_{body}Fbody和FedgeF_{edge}Fedge这两个部分。如何达到呢?先通过物体主体生成模块(body generation module)再通过显性的减法获得边缘部分,数学推导是已知Fbody=α(F)F_{body} = \alpha(F)Fbody=α(F)且Fedge=F−FbodyF_{edge} = F - F_{body}Fedge=F−Fbody,然后提炼过的特征图F^=ϕ(F)+φ(Fedge)=Fbody+φ(F−Fbody)\hat{F} = \phi(F)+\varphi(F_{edge}) = F_{body}+\varphi(F - F_{body})F^=ϕ(F)+φ(Fedge)=Fbody+φ(F−Fbody),其中ϕ\phiϕ代表物体主体生成模块(body generation module),作用是将物体内部的上下文信息整合起来为每个物体组成一个主体,φ\varphiφ代表边缘保护模块。
Decoupled body and edge supervision
LbodyL_{body}Lbody代表body部分,用的是上文提到的relaxation方法(boundaries relaxation loss,论文Zhu, Y., Sapra, K., Reda, F.A., Shih, K.J., Newsam, S., Tao, A., Catanzaro, B.:Improving semantic segmentation via video propagation and label relaxation. In:CVPR. (2019)),这里不多讲。 LfinalL_{final}Lfinal代表总体(包括body和edge在内),就是最普通的求交叉熵。下面是LedgeL_{edge}Ledge再细分:
LedgeL_{edge}Ledge再细分为LbceL_{bce}Lbce和LceL_{ce}Lce,bce代表binary cross entropy,上文提到求过一个binary的edge map,这个LbceL_{bce}Lbce就是用来判断像素点是不是edge的(正好是binary的,不是1(正确)就是0(错误))。LceL_{ce}Lce不要看它写那么复杂,其实也是cross entropy,具体可看原文。
这其中体现的思想也是将body,edge分开求loss。
对自己提问
(1) What did the authors try to accomplish? (作者想要实现什么?)
通过分别对object body和edge求loss来提高已有模型的精度(这个框架可以作为一种loss套在别的框架上,比如deeplab)
(2) What were the key elements of the approach? (论文关键点是什么?)
- Decoupled body and edge supervision的部分
(3) What can you use yourself? (自己能如何使用?)
- 套用该框架来提高准确率
- 不要忽略了传统数字图像处理中的边缘分割(canny,sobel等等,小波等等)的一些技术
(4) What other references do you want to follow? (有哪些参考是你想要跟进了解的?)
deeplab系列都不太懂。。
DecoupleSegNet结构解读相关推荐
- 字节码文件(Class文件)结构解读、理解与分析
字节码(Class文件) 什么是字节码(Class文件)? 字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码.字节是电脑里的数据量单位. 对于 ...
- 购物网站 前台后台 思维导图_抛砖集Shopify后台结构解读
Berry(SFS) 本期发起人 什么是"抛砖集" 「知无不言」跨境电商社区精彩主题帖和/或分享会内容的推送,以求"抛砖引玉".百家争鸣,有可能其中一些内容与您 ...
- MQL5源码:智能交易脚本EA结构解读
EA是MQL中的自动交易脚本,可以通过编程控制计算机自动进行交易,节省人工盯盘的精力,以及提高执行效率. 本文以经典的均线交易系统解读MQL5交易脚本EA的结构. 策略 当价格上穿均线时做多并在下穿均 ...
- ResNet 18 的结构解读
现在很多网络结构都是一个命名+数字,比如(ResNet18),数字代表的是网络的深度,也就是说ResNet18 网络就是18层的吗?其实这里的18指定的是带有权重的 18层,包括卷积层和全连接层,不包 ...
- Transformer结构解读(Multi-Head Attention、AddNorm、Feed Forward)
咱们还是照图讨论,transformer结构图如下,本文主要讨论Encoder部分,从低端输入inputs开始,逐个结构进行: 图一 一.首先说一下Encoder的输入部分: 在NLP领域,个人理解, ...
- Segment Anything模型结构解读
论文地址 代码下载 官网 关于Segment Anything的理解 1.人工标注过程 使用公开数据集训练,并且让人工标注团队进行标注预测的mask,该过程总共进行6次,并产生430万个mask 2. ...
- DeepLabV3论文解读(空洞卷积/膨胀卷积 理解)
DeepLabV3论文解读(空洞卷积/膨胀卷积 理解) 最近在做基础网络研究,设计的网络结构除了在分类数据集上测试,还需要在分割和检测网络上测试效果,故选择了DeepLabV3作为对比平台.本想直接替 ...
- ETABS结构指标查看
分析结果集结构大指标查看 结构周期.振型.方向因子结果查看 质量结果查看及模型质量问题的检查 构件内力及位移结构查看及反应谱结构解读 结构大指标查看 影响结构大指标输出的设置 结构周期.振型.方向因子 ...
- java编写水数仙花,【360高手联盟-小仙】【JAVASE编程基础】02-JAVA程序的基本结构和基础语法...
一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的 ...
- Global Encoding for Abstractive Summarization 生成式文本摘要论文解读
论文解读 https://blog.csdn.net/wu13599hao/article/details/87864788?spm=1001.2014.3001.5501#Global_Encodi ...
最新文章
- AI研究生应届生年薪可达50万 没出校门已被抢光
- 若要加载模块二进制_春哥说 | 浅谈NodeJs的模块机制-2
- 美媒:中国大陆最火的工作,教人工智能识图
- 【ros】2.ros的xx.msg编译
- mysql转化为GaussDB,GaussDB(openGauss)宣布开源,性能超越 MySQL 与 PostgreSQL
- linux批量为文件名添加前缀脚本示例
- oracle 子表数据变化时主表也会更新_亿信ABI版本重大更新,新增60余个实用新功能,还有一项黑科技...
- 1092. To Buy or Not to Buy (20)
- oracle的集函数,Oracle统计分析函数集之一(转载)
- MYSQL——表操作
- TSC工业型条码打印机的价格的影响因素有哪些呢?
- 第六届蓝桥杯java b组第一题
- atitit.技术选型方法总结为什么java就是比.net有前途
- 病毒+蠕虫+bot+rootkit
- 软件自动化测试的的设计标准和适用范围
- 面临裁员潮,更快找到新工作的秘诀
- 《Python基础知识-4判断和循环语句》
- 定时轮播Echarts造成内存泄漏致使浏览器崩溃问题
- freemarker实现word模板
- VS2019 KEY