CVPR2019论文观察:感知边缘检测的双向级联网络
CVPR2019论文观察:感知边缘检测的双向级联网络

BDCN:Bi-Directional Cascade Network for Perceptual Edge Detection
摘要
探索多尺寸表示对解决不同尺寸的目标改进边沿检测是很关键的。 为了提取不同尺度的边沿,提出一种双向级联网络Bi-Directional Cascade Network (BDCN) 结构,每一层都由特定尺度上的标记边缘来监督,不会对所有的CNN输出直接应用同样的监测方案。同时,通过BDCN训练,为了丰富多尺度表现,引入一种尺度增强模型Scale Enhancement Module (SEM),使用膨胀卷积生成多尺度特征,不用更深的CNN,也不用融合多尺度边沿映射。这些方法有助于在不同的层进行多尺度表示训练,同时,通过这些尺度来描绘的方法检测边沿。训练尺度专用层也可以生成有一个参数分量的紧致网络。用三个数据集:i.e., BSDS500, NYUDv2, and Multicue,获取0.828的ODS F-measure,高于BSDS500数据集上当前技术状态1.3%,文章实现代码开源共享。

本文是解决边缘提取问题,应该是目前最好的方法了。
论文链接地址:https://arxiv.org/pdf/1902.10903v1.pdf。
背景
轮廓这个东西,尺度不同一的问题非常严重,比如说,一个人的边缘,手部的轮廓好头部的轮廓尺度就很不一样,手弯弯曲曲很小,这样的边缘很难学习;但头部或者身体,就很宽很大,对于网络来说很好学习。那么如何解决多尺度问题就是边缘提取的重点。作者就提出了一种双向的(bi-directional)级联网络结构,每个层的输出都被一个特定尺度的边缘label监督,这个特定尺度是网络自身学习到的。为了增强每个层输出的特征,使用类似ASPP结构的SEM模块产生多尺度特征。最后的输出是许多多尺度特征的融合。
亮点
一般的多尺度特征,要么利用图像金字塔,最后做融合多个特征,这样的方式带来了重复的运算;要么利用非常深的网络提取不同stage的特征,这样带来了大量参数和推理时间。基于VGG的卷积部分,设计了轻量型的网络结构做边缘检测,取得了很好的效果。
每个层对应一个特征的尺度,比如说,浅层因为感受野的关系,只能聚焦在局部图案而高层就能注意到目标级别的信息,那么对最后的层以及中间的层使用相同的label做监督是否合理呢?当然不是了,作者希望每个层能学习自身能捕捉到的尺度,即浅层对手指的边缘提取较好,深层对目标级的边缘提取较好,最后对所有层的输出做融合。
提出了一种类似ASPP的模块,形式简单。

使用很新颖的双向loss监督方式,让每个中间层学习自身合适的尺度。
方法
假设Y是边缘的label,label中很小部分的边缘,也有大部位的边缘,意思是label中存在很大的尺度变化,那么我们将Y分解为不同尺度的叠加


是某一个特征的尺度的label。
很容易知道,人为的去分解label为s个尺度是不现实的,作者希望能用网络自动学习特定层的特定尺度。规定一些符号:

是第S个卷积层的输出特征图,
是专门用
提取边缘的。那么第s层的监督方式为:

其中
。如何能得到
呢?
一种可能的方案是,用Y减去其他层的输出置信图
。这样就得到了
的label,用它来做第J层的监督label。

不过作者也证明了这样对于自动让中间层学习适合他们的尺度是没有用的,因为根据链式法则,
对任何一个,
的导数都为1。那么对于任意的
都接受相同的梯度,意味着还是用相同的label去监督每一个层,这就犯了前面提到的,这不是更优的监督方式。
为了解决这个问题,作者设计了很新颖的方式。将
再分解为两个互补的监督。其中一个忽略比s尺度更小监督,另一个忽略尺度比s大的监督。这里的监督其实是每个中间层预测的结果,之所以称其为监督,因为是面向每个的输出对D本身参数而言,
是D的监督。至于
的究竟更倾向于捕捉什么尺度,由后面的部分自行决定。

公式可能不够直白。看下面的图

这是网络的部分结构,前三层是VGG的前三个阶段,SEM模块和1x1卷积的结合。每个ID block对应了一个VGG的stage和若干SEM,同时有多少SEM就有多少1x1的conv。
重点在最下面。先看block1,
是第一个stage的其中一个输出,此时的预测图分辨率和原图一致,故无需上采样。它这个会送到之后的所有阶段,和其他stage经过上采样的输出相加去计算当前scale的loss。注意高stage是不沿着
这条线往更低的尺度送的。高尺度会沿着
线路往更低的尺度送,只是图上没有画出来,和
的情况是类似的。
那么对于VGG作为backbone来说,loss将会有10个,同时网络最后结合所有的
,concat一起在用1x1的conv融合,得到的结果也去计算loss、一共有11个loss。
值得一提的是,对一个中间层的监督是混杂了其他层的信息的,当然希望对某一层的监督不要去影响其它层,所以源码用了detach来断开梯度向其他层传播。
损失函数
这里还是简单说一下,对11个loss,分为两类。一类是side loss,就是前10个层的输出计算的loss,最后的loss就是融合前10个输出得到的预测图,用它计算得到的loss,称为fuse loss。
每个loss使用WBCE,带调整正负样本权重的loss。在两类loss之间使用两个超参数权衡两类loss,side loss的权重为0.5,fuse loss的权重是1.1。
实验
每个BLOCK确实捕捉到了他们自身适合的边缘尺度。前几层的局部信息很强,后几层,输出的是目标级别的边缘。

使用detach来解决中间层s对其他层的影响。
最终的输出是fuse作为最终预测,但训练阶段需要用所有中间层数据和fuse,一共11个预测结果。
最终预测还需要加sigmioid激活函数,然后乘上255。,化成uint8型就能显示了。

CVPR2019论文观察:感知边缘检测的双向级联网络的更多相关文章
- 2.5D Visual Sound:CVPR2019论文解析
2.5D Visual Sound:CVPR2019论文解析 论文链接: http://openaccess.thecvf.com/content_CVPR_2019/papers/Gao_2.5D_ ...
- 多目标跟踪:CVPR2019论文阅读
多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking 论文链接:https://arxiv.org/abs/1909.0385 ...
- 白*衡(Color Constancy,无监督AWB):CVPR2019论文解析
白*衡(Color Constancy,无监督AWB):CVPR2019论文解析 Quasi-Unsupervised Color Constancy 论文链接: http://openaccess. ...
- 将视频插入视频:CVPR2019论文解析
将视频插入视频:CVPR2019论文解析 Inserting Videos into Videos 论文链接: http://openaccess.thecvf.com/content_CVPR_20 ...
- 快速人体姿态估计:CVPR2019论文阅读
快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...
- CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状
CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Sha ...
- CVPR2019论文看点:自学习Anchor原理
CVPR2019论文看点:自学习Anchor原理 原论文链接:https://arxiv.org/pdf/1901.03278.pdf CVPR2019的一篇对anchor进行优化的论文,主要将原来需 ...
- 全景分割:CVPR2019论文解析
全景分割:CVPR2019论文解析 Panoptic Segmentation 论文链接: http://openaccess.thecvf.com/content_CVPR_2019/papers/ ...
- 深度学*点云语义分割:CVPR2019论文阅读
深度学*点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...
随机推荐
- pyqt5 多线程+定时器+读取本地图片
前言 一个程序界面有多个button 按钮时,单击一个按钮,若此按钮对应的信号正在执行,且还未执行完毕: 此时再次单击另外一个按钮,就会出现假死状态. 这个时候我们就需要使用 多线程去解决 多线程+定 ...
- hdu1839 二分最短路
题意: 给你n个城市,m条双向边,每条边有自己的长度和最大运输量,让你找到一条时间小于等于T的运输能力最大的那条路... 思路: 刚开始以为是费用流呢,后来发现根本不是,因为根 ...
- hdu4370 比较抽象的最短路
题意: 给你一个n*n的矩阵,然后让咱们构造另一个n*n的矩阵,构造的矩阵有如下要求, 1.X12+X13+...X1n=1. 2.X1n+X2n+...Xn-1n=1. 3.for ea ...
- Win64 驱动内核编程-11.回调监控进线程句柄操作
无HOOK监控进线程句柄操作 在 NT5 平台下,要监控进线程句柄的操作. 通常要挂钩三个API:NtOpenProcess.NtOpenThread.NtDuplicateObject.但是在 VI ...
- idea使用lombok不生效
问题: 在maven项目中引入lombok的依赖,可是依旧无法在实体类中生效 <dependency> <groupId>org.projectlombok</group ...
- 第四部分 数据搜索之使用HBASE的API实现条件查询
因为数据清洗部分需要用到Mapreduce,所以先解决hbase的问题,可以用命令先在hbase存一下简单的数据进行查询,之后只要替换数据就可以实现了原本功能 在看该部分前,确保Hase API看了, ...
- springboot开发浅谈 2021/05/11
学习了这么久,本人希望有时间能分享一下,这才写下这篇浅谈,谈谈软件,散散心情. 这是本人的博客园账号,欢迎关注,一起学习. 一开始学习springboot,看了好多网站,搜了好多课程.零零落落学了一些 ...
- 最优运输(Optimal Transfort):从理论到填补的应用
目录 引言 1 背景 2 什么是最优运输? 3 基本概念 3.1 离散测度 (Discrete measures) 3.2 蒙日(Monge)问题 3.3 Kantorovich Relaxation ...
- “深度评测官”——记2020BUAA软工软件案例分析作业
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 完成一次完整的软件开发经历并以博客的方式记录开发 ...
- Zoho:SaaS行业的“紫色奶牛”
以下文章来源于:中国软件网,作者王锦宝 蓝天白云的映衬下,一群黑白相间的奶牛在绿草场自由玩耍,这种田园牧歌场景看久了,总会引起审美疲劳.假如突然出现一头紫色奶牛,你肯定会眼前一亮,把所有注意力集中到紫 ...