作者 | 文永亮
研究方向 | 目标检测、GAN

研究动机

​ 这是一篇发表于CVPR2019的关于显著性目标检测的paper,在U型结构的特征网络中,高层富含语义特征捕获的位置信息在自底向上的传播过程中可能会逐渐被稀释,另外卷积神经网络的感受野大小与深度是不成正比的,目前很多流行方法都是引入Attention(注意力机制),但是本文是基于U型结构的特征网络研究池化对显著性检测的改进,具体步骤是引入了两个模块GGM(Global Guidance Module,全局引导模块)FAM(Feature Aggregation Module,特征整合模块),进而锐化显著物体细节,并且检测速度能够达到30FPS。因为这两个模块都是基于池化做的改进所以作者称其为PoolNet,并且放出了源码:https://github.com/backseason/PoolNet

模型架构

两个模块:

  • GGM(Global Guidance Module,全局引导模块)
    ​ 我们知道高层语义特征对挖掘显著对象的详细位置是很有帮助的,但是中低层的语义特征也可以提供必要的细节。因为在top-down的过程中,高层语义信息被稀释,而且实际上的感受野也是小于理论感受野,所以对于全局信息的捕捉十分的缺乏,导致显著物体被背景吞噬,所以提出了GGM模块,GGM其实是PPM(Pyramid Pooling module,金字塔池化模块)的改进并且加上了一系列的GGFs(Global Guiding Flows,全局引导流),这样做的好处是,在特征图上的每层都能关注到显著物体,另外不同的是,GGM是一个独立的模块,而PPM是在U型架构中,在基础网络(backbone)中参与引导全局信息的过程。

    ​ 其实这部分论文说得并不是很清晰,没有说GGM的详细结构,我们可以知道PPM[7]的结构如下:

    ​ 该PPM模块融合了4种不同金字塔尺度的特征,第一行红色是最粗糙的特征–全局池化生成单个bin输出,后面三行是不同尺度的池化特征。为了保证全局特征的权重,如果金字塔共有N个级别,则在每个级别后使用1×1的卷积将对于级别通道降为原本的1/N。再通过双线性插值获得未池化前的大小,最终concat到一起。

    ​ 如果明白了这个的话,其实GGM就是在PPM的结构上的改进,PPM是对每个特征图都进行了金字塔池化,所以作者说是嵌入在U型结构中的,但是他加入了global guiding flows(GGFs),即Fig1中绿色箭头,引入了对每级特征的不同程度的上采样映射(文中称之为identity mapping),所以可以是个独立的模块。

    ​ 简单地说,作者想要FPN在top-down的路径上不被稀释语义特征,所以在每次横向连接的时候都加入高层的语义信息,这样做也是一个十分直接主观的想法啊。

  • FAM(Feature Aggregation Module,特征整合模块)
    特征整合模块也是使用了池化技巧的模块,如下图,先把GGM得到的高层语义与该级特征分别上采样之后横向连接一番得到FAM的输入b,之后采取的操作是先把b用{2,4,8}的三种下采样得到蓝绿红特征图然后avg pool(平均池化)再上采样回原来尺寸,最后蓝绿红紫(紫色是FAM的输入b)四个分支像素相加得到整合后的特征图。

    FAM有以下两个优点:

    • 帮助模型降低上采样(upsample)导致的混叠效应(aliasing)
    • 从不同的多角度的尺度上纵观显著物体的空间位置,放大整个网络的感受野

    ​ 第二点很容易理解,从不同角度看,不同的放缩尺度看待特征,能够放大网络的感受野。对于第一点降低混叠效应的理解,用明珊师姐说的话,混叠效应就相当于引入杂质,GGFs从基础网络最后得到的特征图经过金字塔池化之后需要最高是8倍上采样才能与前面的特征图融合,这样高倍数的采样确实容易引入杂质,作者就是因为这样才会提出FAM,进行特征整合,先把特征用不同倍数的下采样,池化之后,再用不同倍数的上采样,最后叠加在一起。因为单个高倍数上采样容易导致失真,所以补救措施就是高倍数上采样之后,再下采样,再池化上采样平均下来可以弥补错误

    ​ 上图就是为了说明FAM的优点的,经过高倍上采样之后的图像(b)和(d)容易引入许多杂质,致使边缘不清晰,但是经过FAM模块之后的特征图就能降低混叠效应

实验结果

​ 论文在常用的6种数据集上做了实验,有ECSSD [8], PASCALS[9], DUT-OMRON [10], HKU-IS [11], SOD [12] and DUTS [13], 使用二值交叉熵做显著性检测,平衡二值交叉熵(balanced binary cross entropy)[14]作为边缘检测(edge detection)。

​ 以下是文章方法跟目前state-of-the-arts的方法的对比效果,绿框是GT,红框是本文效果。可以看到无论在速度还是精度上都有很大的优势。



​ 论文还针对三个改进的技术PPM、GGFs和FAMs的不同组合做了实验,(a)是原图,(b)是Ground truth,(c)是FPN的结果,(d)是FPN+FAMs,(e)是FPN+PPM,(f)是FPN+GGM(g)FPN+GGM+FAMs

总结

​ 该paper提出了两种基于池化技术的模块GGM(全局引导模块)和FAM(特征整合模块),改进FPN在显著性检测的应用,而且这两个模块也能应用在其他金字塔模型中,具有普遍性,但是FAM的整合过程我认为有点像是用平均中和了上采样带来的混叠效应,但是不够优雅,先下采样池化再上采样带来的损失可能代价太大

参考文献

[1]. Hengshuang Zhao, Jianping Shi, Xiaojuan Qi, Xiaogang Wang, and Jiaya Jia. Pyramid scene parsing network. In CVPR, 2017. 1, 3
[2]. Tiantian Wang, Ali Borji, Lihe Zhang, Pingping Zhang, and Huchuan Lu. A stagewise refinement model for detecting salient objects in images. In ICCV, pages 4019–4028, 2017. 1, 3, 6, 7, 8
[3].Nian Liu and Junwei Han. Dhsnet: Deep hierarchical saliency network for salient object detection. In CVPR, 2016.1, 2, 3, 7, 8
[4]. Qibin Hou, Ming-Ming Cheng, Xiaowei Hu, Ali Borji, Zhuowen Tu, and Philip Torr. Deeply supervised salient object detection with short connections. IEEE TPAMI, 41(4):815–828, 2019. 1, 2, 3, 5, 6, 7, 8
[5]. Tiantian Wang, Ali Borji, Lihe Zhang, Pingping Zhang, and Huchuan Lu. A stagewise refinement model for detecting salient objects in images. In ICCV, pages 4019–4028, 2017. 1, 3, 6, 7, 8
[6]. Tiantian Wang, Lihe Zhang, Shuo Wang, Huchuan Lu, Gang Yang, Xiang Ruan, and Ali Borji. Detect globally, refine locally: A novel approach to saliency detection. In CVPR, pages 3127–3135, 2018. 1, 3, 6, 7, 8
[7]. Hengshuang Zhao, Jianping Shi, Xiaojuan Qi, Xiaogang Wang, and Jiaya Jia. Pyramid scene parsing network. In CVPR, 2017. 1, 3
[8]. Qiong Yan, Li Xu, Jianping Shi, and Jiaya Jia. Hierarchical saliency detection. In CVPR, pages 1155–1162, 2013. 1, 5, 8
[9]. Yin Li, Xiaodi Hou, Christof Koch, James M Rehg, and Alan L Yuille. The secrets of salient object segmentation. In CVPR, pages 280–287, 2014. 5, 7, 8
[10]. Chuan Yang, Lihe Zhang, Huchuan Lu, Xiang Ruan, and Ming-Hsuan Yang. Saliency detection via graph-based manifold ranking. In CVPR, pages 3166–3173, 2013. 5, 6, 7, 8
[11]. Guanbin Li and Yizhou Yu. Visual saliency based on multiscale deep features. In CVPR, pages 5455–5463, 2015. 2, 5, 6, 7, 8
[12]. Vida Movahedi and James H Elder. Design and perceptual validation of performance measures for salient object segmentation. In CVPR, pages 49–56, 2010. 5, 6, 7, 8
[13]. Lijun Wang, Huchuan Lu, Yifan Wang, Mengyang Feng, Dong Wang, Baocai Yin, and Xiang Ruan. Learning to detect salient objects with image-level supervision. In CVPR, pages 136–145, 2017. 5, 7, 8
[14]. Saining Xie and Zhuowen Tu. Holistically-nested edge detection. In ICCV, pages 1395–1403, 2015. 6

CVPR 2019|PoolNet:基于池化技术的显著性检测 论文解读的更多相关文章

  1. Java 数据持久化系列之池化技术

    在上一篇文章<Java 数据持久化系列之JDBC>中,我们了解到使用 JDBC 创建 Connection 可以执行对应的SQL,但是创建 Connection 会消耗很多资源,所以 Ja ...

  2. commons-pool2 池化技术探究

    一.前言 我们经常会接触各种池化的技术或者概念,包括对象池.连接池.线程池等,池化技术最大的好处就是实现对象的重复利用,尤其是创建和使用大对象或者宝贵资源(HTTP连接对象,MySQL连接对象)等方面 ...

  3. Java--对象池化技术 org.apache.commons.pool2.ObjectPool

    org.apache.commons.pool2.ObjectPool提供了对象池,开发的小伙伴们可以直接使用来构建一个对象池 使用该对象池具有两个简单的步骤: 1.创建对象工厂,org.apache ...

  4. 对象池化技术 org.apache.commons.pool

    恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率.Jakarta Commons Pool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以 ...

  5. SPP空间金字塔池化技术的直观理解

    空间金字塔池化技术, 厉害之处,在于使得我们构建的网络,可以输入任意大小的图片,不需要经过裁剪缩放等操作. 是后续许多金字塔技术(psp,aspp等)的起源,主要的目的都是为了获取场景语境信息,获取上 ...

  6. 仿照Android的池化技术

    /** * 仿照Android池化技术 * @author fgtian * */ public class ObjectCacheTest { public static class ObjectI ...

  7. 《Mybatis 手撸专栏》第6章:数据源池化技术实现

    作者:小傅哥 博客:https://bugstack.cn - 手写Mybatis系列文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 码农,只会做不会说? 你有发现吗,其实很大一部分码农 ...

  8. AAAI2019 | 基于区域分解集成的目标检测 论文解读

    Object Detection based on Region Decomposition and Assembly AAAI2019 | 基于区域分解集成的目标检测 论文解读 作者 | 文永亮 学 ...

  9. 池化技术(一)Druid是如何管理数据库连接的?

    基于依赖程序的版本信息:druid:1.1.16               驱动程序mysql-connector-java:8.0.17 下一篇:HikariCP是如何管理数据库连接的 零.类图& ...

随机推荐

  1. 1、python的基础

    一.python组成 python程序的内容主要由变量.数据.关键字.操作符组成. 二.变量 在python中,变量指的是其指向的数据是可变的. 首先我们要了解一下python的内存管理.数据创建后就 ...

  2. 给B公司的一些建议(又一篇烂尾的文章)

    感慨:太多太多的悲伤故事,发生在自己身上,发生在自己的身边.因此,为了避免总是走"弯路",走"错误"的道路,最近一直在完善自己的理论模型. 烂尾说明:本文是一篇 ...

  3. java流、文件以及IO

    读写文件 一个流被定义为一个数据序列.输入流用于从源读取数据,输出流用于向目标写数据. 输入流和输出流的类层次图. FileInputStream FileInputStream用于从文件中读取数据, ...

  4. 【Partition List】cpp

    题目: Given a linked list and a value x, partition it such that all nodes less than x come before node ...

  5. Windows网络编程笔记6 --- WinSock I/O 控制方法

    Windows提供了两种方式“套接字模式”和“套接字I/O模型”,可对一个套接字上的I/O行为加以控制.套接字模式用于决定在随一个套接字调用时,那些 Winsock函数的行为.其中的模型包括括sele ...

  6. jquery ajax return jsonresult pattern

    //javascriptvar queryParams = {    "userId": userId,    "factoryId": factoryId } ...

  7. centOS如何设置时间同步

     1.进入系统-管理-时间和日期  2.这个需要root权限才能进行设置,在弹出框中填入root密码  3.设置时间和日期-勾选同步,并且选择NTP时间服务器,点击确定 4.选择时区为亚洲上海点击保存 ...

  8. c语言入门-03-数据和c

    1>C语言提供两大系列的多种数据类型 1 /*platinum.c*/ 2 #include <stdio.h> 3 4 int main(void){ 5 float weight ...

  9. 实用拜占庭容错算法PBFT

    实用拜占庭容错算法PBFT 实用拜占庭容错算法PBFT 96 乔延宏 2017.06.19 22:58* 字数 1699 阅读 4972评论 0喜欢 11 分布式架构遭遇的问题 分布式架构会遭遇到以下 ...

  10. Struts2请求流程

    1. 一个请求在Struts2框架中的处理步骤: a) 客户端初始化一个指向Servlet容器的请求: b) 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可 ...