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

article/2025/7/27 22:35:25

1653638-20190527150348100-1252014613.png
作者 | 文永亮
研究方向 | 目标检测、GAN

研究动机

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

模型架构

1653638-20190527150416580-1020297275.png

两个模块:

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

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

    1653638-20190527150528474-80987125.png

    ​ 该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)四个分支像素相加得到整合后的特征图。

    1653638-20190527150628288-50594999.png

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

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

    1653638-20190527150739753-1814248925.png

    ​ 上图就是为了说明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,红框是本文效果。可以看到无论在速度还是精度上都有很大的优势。

1653638-20190527150809361-1241521149.png

1653638-20190527150828608-1252583170.png

1653638-20190527150847741-780417830.png

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

1653638-20190527150930577-1224928998.png

总结

​ 该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

转载于:https://www.cnblogs.com/ManWingloeng/p/10930634.html


http://chatgpt.dhexx.cn/article/6EcaUyjn.shtml

相关文章

请问做亚马逊,注册P卡是用个人名义还是公司名义?

请问做亚马逊,注册P卡是用个人名义还是公司名义?亚马逊将Payoneer作为亚马逊卖家平台里的推荐收款方式。24个不同国家的卖家能够使用亚马逊卖家中心唯一推荐的收款方式——Payoneer来收款,接收、使用亚马逊货款变得前所未有地简便。 个人、公…

解决CentOS7 Ping不了外网的问题 ping:baidu.com: 未知的名称或服务

在CentOS7中遇到个问题,ping外网地址时候提示“未知的名称或服务” 先使用该命令查看路由网关信息 route -n 发现没有配置网关地址: ​​​​​​​ 去虚拟机里的虚拟网络编辑器里查看下网关地址 然后将网关地址配置到路由中 (临时有效&…

BUUCTF Web [GXYCTF2019]Ping Ping Ping

「作者主页」:士别三日wyx 此文章已录入专栏《网络攻防》,持续更新热门靶场的通关教程 「未知攻,焉知收」,在一个个孤独的夜晚,你完成了几百个攻防实验,回过头来才发现,已经击败了百分之九十九…

[GXYCTF 2019]Ping Ping Ping

前言 之前没总结过关于命令执行的绕过姿势,借着今天做的这个命令执行的题目来总结一下。 先看题目 题目 题目很单一,目的就是为了让我们通过参数传入内容来执行代码。因为题目是与ping有关,当我们输入127.0.0.1时,它会进行ping…

[GXYCTF2019]Ping Ping Ping(命令执行)

命令执行绕过 常见写法 127.0.0.1&&code 只有在 && 左边的命令返回真(命令返回值 $? 0),&& 右边的命令才 会被执行。 127.0.0.1&code &表示将任务置于后台执行 127.0.0.1||code 只有在 || 左边的命令返回…

CTF_Web_[GXYCTF2019]Ping Ping Ping

一、题目 Ping Ping Ping 二、靶机信息链接 靶机信息 剩余时间: 10072s http://70284b15-7c4e-4548-8b04-aadbc6e669f5.node4.buuoj.cn:81 三、靶机链接页面 四、 分析 因题目是Ping...再加上靶机页面有“/?ip” 可能是 ping地址,尝试按照所给的内容在url中加…

BUUCTF [GXYCTF2019]Ping Ping Ping easywill

题目地址:BUUCTF在线评测 考点:ping命令相关命令执行 这里过滤了flag和空格 绕过空格可以使用 $IFS$1 使用ls命令查询目录 ?ip127.0.0.1;ls 发现有两个文件,一个是flag.php,另一个是index.php。 cat获取文件内容&#xff…

BUUctf [GXYCTF2019]Ping Ping Ping

根据题目和页面的提示猜测是命令执行漏洞 ;前面和后面命令都要执行,无论前面真假 |直接执行后面的语句 ||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句 &前面和后面命令都要执行,无论前面真假 &&如果前面为假&a…

BUUCTF——web([GXYCTF2019]Ping Ping Ping、[极客大挑战 2019]Knife、[极客大挑战 2019]Http)

BUUCTF-web [GXYCTF2019]Ping Ping Ping做题思路 [极客大挑战 2019]Knife做题思路 [极客大挑战 2019]Http做题思路 [GXYCTF2019]Ping Ping Ping 做题思路 打开看题目 熟悉的样子,ping本地加查看命令,得到两个php文件 接着查看一下文件内容 奇奇怪…

Buuctf (Web)Ping Ping Ping

文章目录 一.解题步骤二、命令分隔符三.常见绕过方式 一.解题步骤 (1)页面里显示/?ip,很明显要以ping的形式传一个参数给ip,并且我们要想执行其他命令,就要用命令分隔符也就是管道符连接,命令分隔符可以用";“”…

BUUCTF之Ping Ping Ping

目录 审题 常用的空格绕过方法 解决方法 法一 拼接绕过法 法二 内联执行法 法三 sh编码绕过法 审题 点开链接 根据题目提示随便试试构造payload inurl?ip666 有返回,参数ip的值就是要ping的内容 这里我们知道有Windows和Linux通用的…

BUUCTF【Web】Ping Ping Ping

进入靶场后是一个ping的功能(命令执行漏洞),参数ip传递的内容会被当做ip地址进行网络连通性测试。首先测试一下本机地址 首先使用ls命令查看当前路径下有那些文件,拼接符有“&”、“|”、“||”、“&&”、“&#xff…

BUUCTF Web [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http

目录 [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http [GXYCTF2019]Ping Ping Ping 启动靶机,构造payload ?ip127.0.0.1 查看同目录下有什么文件 ?ip127.0.0.1;ls 读取flag.php ?ip127.0.0.1;cat flag…

buuctf[GXYCTF2019]Ping Ping Ping

buuctf[GXYCTF2019]Ping Ping Ping 这个题目的标题是pingping盲猜是关于命令执行的题目 打开环境后 只有一个/ip? 应该是提示用get的方式来传参一个地址执行ping的操作 直接ping127.0.0.1 回显ping127.0.0.1的数据 说明是一道命令执行的题目 执行:?i…

xxl-job源码阅读——(六)调度线程与时间轮算法

文章目录 一. 时间对齐二. scheduleThread 调度线程三. ringThread 时间轮(算法)线程原理源码实现 本章介绍init()最后一个步骤,初始化调度线程。 另外 第六步的JobLogReportHelper.getInstance().start()只是做了一个日志整理收集&#xff0…

时间轮(七)

时间轮 Kafka 中存在大量的延时操作,比如延时生产、延时拉取和延时删除等。Kafka 并没有使用 JDK 自带的 Timer 或 DelayQueue 来实现延时的功能,而是基于时间轮的概念自定义实现了一个用于延时功能的定时器(SystemTimer)。JDK 中…

java 时间轮算法_时间轮算法(TimingWheel)是如何实现的?

前言 我在2. SOFAJRaft源码分析—JRaft的定时任务调度器是怎么做的?这篇文章里已经讲解过时间轮算法在JRaft中是怎么应用的,但是我感觉我并没有讲解清楚这个东西,导致看了这篇文章依然和没看是一样的,所以我打算重新说透时间轮算法…

Redis之时间轮机制(五)

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

C++定时器和时间轮

文章目录 定时器最小堆实现定时器 时间轮单层级时间轮多层级时间轮 定时器 有些时候我们需要延迟执行一些功能,比如每10s进行一次数据采集。或者告知用户技能冷却有多少时间,如果我们将执行这些功能的任务交给主线程,就会造成主线程的阻塞。…

简单描述时间轮

时间轮 作用 也是用来作定时器触发任务,只是他更高效,时间复杂度为O(1)。 运行原理 为了方便理解我们参考钟表,它分为3个层次:时、分、秒,只有秒针在运动,走动一格时间为1秒,走一圈为1分钟&…