显著性检测—学习笔记

article/2025/10/12 10:49:28

视觉显著性旨在模仿人类视觉系统选择视觉场景的某个子集的能力。而显著性物体检测(SOD)则侧重于检测场景中吸引最多注意力的物体,然后逐像素的提取物体的轮廓。SOD的优点在于它在许多计算机视觉任务中均有广泛的应用,包括:视觉跟踪,图像检索,计算机图形学,内容感知的图像裁剪和弱监督语义分割。

现有的SOD数据集在数据收集的过程或数据质量方面存在缺陷。大多数数据假设图像包含至少一个显著物体,丢弃了不包含显著物体的图像,称为数据选择偏差。现有数据集主要包含具有单个物体的图像或处于低杂乱环境中的多个物体(通常是人)。这些数据集不能充分反映现实世界中图像的复杂性,在现实世界中,场景通常包含多个杂乱的物体。这样导致的结果便是在现有数据集上训练的表现最佳的模型几乎已经可以使性能达到饱和(例如,在大多数据集上,F-measure>0.9)但它们在现实场景上的表现却无法令人满意。这是因为在之前的数据集上训练出来的模型更加偏向较为理想的场景,所以一旦它们应用于现实世界中的场景时,其有效性可能会受到极大削弱。因此,为了解决此问题,有必要构建更接近实际条件的数据集。

在现在的数据集上只能分析模型的整体性能,这些数据集都缺乏反映现实场景中所面临的挑战的各种属性。

  • 显著性检测历史
    在这里插入图片描述
  • 显著性检测数据集
    在这里插入图片描述

Cascaded Partial Decoder for Fast and Accurate Salient Object Detection(2019)

paper

Cascaded Partial Decoder for Fast and Accurate Salient Object Detection

亮点

  • 速度快
    • 后续计算只利用了编码器的后三个卷积块的输出特征,没有使用前两个尺寸和计算消耗都比较大的卷积,与初始注意力图相比,所提出的整体注意力机制几乎不会增加计算成本,并进一步突出了整个显著对象。
    • 在每个分支都使用1x1卷积将通道降维到32,并使用了skip连接。
  • 精度高
    • 结构的有效性,双分支结构,一路生成初始显著性图,一路生成更高质量的显著性图,前者用来细化后者的特征信息,抑制干扰信息。
    • 使用整体注意力模块(holistic attention module),扩大初始显著图的覆盖范围
    • Decoder中使用改进的RFB模块,多尺度感受野,有效编码上下文
    • 两个分支中都使用了多尺度的特征,来自不同的层级

code
CPD

网络结构

在这里插入图片描述
现有的优秀的显著性目标检测网络主要依赖于集成来自预训练网络的多级特征,但是相比高级特征:

  • 低级特征实际上对于深度集成模型的性能贡献较少。
    例如原始的DSS模型在Pascal-S数据集六个输出的maxF的值,并且也计算了六个输出的推理时间。可以看出,最靠前的特征对于性能的增益减少,而其推理时间却增长的很大。
    在这里插入图片描述
  • 低级特征集成到高级特征上,会增大计算消耗,因为它们空间分辨率比较大。
    随着网络加深,特征逐渐从低级表示演化为高级表示。因此,当仅集成更深层的特征时,深度聚合模型可以恢复显著性图的空间细节。在下图VGG16的多级特征图中,与Conv1_2和Conv2_2的低级特征相比,Conv3_3的特征也保留了边缘信息。仅仅集成后面的特征也可以获得相对准确的结果。所以设计结构就去掉了过于浅层的特征,从第三层开始使用。
    在这里插入图片描述

双分支

optimization layer,使用两个卷积块来构造双分支(注意力分支与检测分支)。

  • 设计partial decoder集成来自三个卷积块的输出特征 ( f 3 , f 4 , f 5 ) (f_{3},f_{4},f_{5}) (f3,f4,f5)进而得到初始显著性图 S i S_{i} Si.
  • 经过整体注意力模块的处理后,得到增强的注意力图 S h S_{h} Sh,用其细化来自第三个卷积块的特征 f 3 f_{3} f3。因为这里可以通过聚合三个顶层的特征来获得一个相对精确的显著性图,这里的注意力图就可以有效的消除特征 f 3 f_{3} f3中的异常信息,并且极大的提升其表达能力。
  • 如果将干扰归为显著性部分,则该策略导致异常分割结果。因此,需要提高初始显著性图的有效性。使用了整体注意力模块。
  • 通过特征图 f 3 f_{3} f3与注意力图 S h S_{h} Sh的元素乘法可以获得细化的特征图 f 3 d f_{3d} f3d,经过卷积4和5可以得到对应的输出 f 4 d f_{4d} f4d f 5 d f_{5d} f5d
  • 细化后的特征最终通过另一个partial decoder得到输出的显著性图 S d S_{d} Sd

两个分支使用真值联合训练, S i S_{i} Si S d S_{d} Sd分别与真值计算交叉熵并求和,进而得到整体的损失。
在这里插入图片描述
很明显, θ i \theta_i θi θ d \theta_d θd的适当子集,这表明两个分支以交替的方式工作。

  • 一方面,注意力分支为检测分支提供精确的注意图,这导致检测分支更精确的显著对象。
  • 另一方面,检测分支可以被认为是注意力分支的辅助损失,这有助于注意力分支集中于显著对象。
  • 联合训练两个分支使模型统一突出显著的物体,同时抑制干扰物。

此外,可以利用提出的框架来改进现有的深度聚合模型,通过使用这些工作的聚合算法来整合每个分支的特征。

尽管与传统的编码器-解码器架构相比,增加了解码器提高了骨干网络的计算成本,但是由于丢弃了解码器中的低级特征,总的计算复杂度仍然显著降低。此外,所提出的框架的级联优化机制提升了性能,实验表明这两个分支都优于原始模型。

整体注意力模块(Holistic Attention Module)

给定来自优化层(Conv3_3)的特征映射和来自注意力分支的初始显著性图,可以使用初始注意力策略,这意味着直接将特征映射与初始显著性相乘。

  • 当从注意力分支获得准确的显著性图时,该策略将有效的抑制特征的干扰。
  • 相反,如果将干扰归类为显著性区域,则该策略导致异常分割结果。
    因此,需要提高初始显著性图的有效性。更具体的说,显著性目标的边缘信息可能被初始显著性图过滤掉,因为难以精确预测。另外,复杂场景中的一些对象很难被完全分割。因此提出了一个整体注意力模块,来扩大初始显著性图的覆盖范围。
    在这里插入图片描述
    这里的 C o n v g Conv_g Convg表示一个有着高斯核 k k k和零偏置的卷积操作,其中的 f m i n m a x ( ) f_{min_max}() fminmax()表示一个归一化函数,来让blurred map的范围变为[0,1]。而 M A X ( ) MAX() MAX()操作表示取最大值函数,这样可以使得趋向于增加平滑后的 S i S_i Si中显著性区域的权重系数。

相较于初始的注意力,提出的整体注意力机制增加了一定的计算消耗,但是也进一步高亮了整体显著性目标。

注意:这里的高斯核 k k k的尺寸和标准差被初始化为32和4,在训练中会自动学习。

解码器

由于架构由两个解码器组成,需要构建一个快速集成策略以确保低复杂性。同时,需要尽可能准确的生成显著图。

  • 在解码器中使用了改进的RFB(receptive field block)模块
    • 本身的RFB是将Inception模块中的 3 × 3 3\times 3 3×3卷积替换为扩张卷积
    • 在RFB上也使用了Skip连接
    • 这样可以实现多尺度的感受野,进一步捕获全局对比度信息,更加有效的编码上下文信息
  • 为了加速,在每个分支都使用 1 × 1 1\times 1 1×1卷积降低通道为32。

特征聚合公式:
在这里插入图片描述

A Simple Pooling-Based Design for Real-Time Salient Object Detection(2019)

paper
A Simple Pooling-Based Design for Real-Time Salient Object Detection
code
PoolNet

网络结构

在这里插入图片描述
U型结构网络取得了良好的性能,但是还有很大的改进空间:

  • 在U型结构中,高级语义信息逐渐传输到较浅层,因此由较深层捕获的位置信息会逐渐稀释。
  • CNN的感受野大小与其层深度不成比例,现有方法通过将注意力机制引入U型结构,以循环方式细化特征图,结合多尺度特征信息来解决感受野问题[如Pyramid scene parsing network],或者在显著性图中添加额外约束[Non-local deep features for salient object detection中的边界损失项]。

原始的FPN结构,这种U型结构的自上而下是建立在由下而上的骨干网络之上的。这随着由上而下(由深到浅)的过程中,来自深层的信息会逐渐被丢弃,并且被来自浅层的信息所淹没。

全局引导模块(GGM)

为了弥补由上而下的路径中的高层语义信息的缺失,引入一个全局引导模块(global guidance module),主要包含两个部分:一个是修改版本的金字塔池化模块(PPM),另一个是一些列的全局引导信息流(GGF),以使得在各个层级上更为明确显著性目标的位置。

  • PPM:包含了四个子分支,包括恒等映射分支、全局平均池化分支,以及两个输出为 3 × 3 3\times 3 3×3 5 × 5 5\times 5 5×5的自适应平均池化分支。
  • GGM:GGM是IG独立于U型结构的支路。通过引入一些列全局引导信息流(恒等映射),高层级的信息可以被送到各个层级,具体如结构图中的绿色箭头。通过这种方式增加了自上而下路径的每个部分中的全局引导信息的权重,以确保在构建FPN时不会稀释来自高层的位置信息。

特征融合模块(FAM)

在原始FPN中,粗略特征图被上采样两倍,然后添加一个有着 3 × 3 3\times 3 3×3核大小的卷积用在合并操作之后,以降低上采样带来的混叠效应。但是GGF需要更大的上采样率。有效并高效的弥合GGF与不同尺度的特征图之间的巨大差距是至关重要的。所以使用FAM来合并GGM粗略特征映射与金字塔的不同尺度的特征映射。具体如下:
在这里插入图片描述
FAM有两个优势:

  • 有助于模型减少上采样的混叠效应,特别是当上采样率很大时(如采样率为8时)。
  • 允许每个空间位置在不同尺度空间查看局部环境,进一步扩大整个网络的感受野。
    下面是一个可视化,可以看出,引入FAM可以很好的锐化显著对象的细节。
    在这里插入图片描述

使用边缘检测联合训练

在这里插入图片描述
网络的性能已经很好了,但是观察结果,发现大多数不准确的预测主要是因为不清晰的目标边界。
改进方法:

  • 在模块结构上添加一个额外的预测分支来预测显著性目标的边缘。
    • 在三个特征层级的FAM之后使用了三个残差块,用于信息的转换。通道数分别为128/256/512.每个残差块后接一个 3 × 3 × 16 3 \times 3 \times 16 3×3×16的卷积层来压缩特征,并配合一个 1 × 1 × 1 1 \times 1 \times 1 1×1×1的卷积层来进行特征提取。
    • 同时也拼接这个三个16通道的特征图,得到一个48通道的特征图,来讲捕获的边缘信息转换到显著性目标检测分支,继而强化细节信息。
    • 相似于[Instance-level salient object segmentation],训练阶段使用显著性目标的边缘作为联合训练的真值。
    • 结果效果一般。正如图5中展示的,对于前景和背景之间对比度低的场景,得到的显著图和边界图仍然不明确。可能是从显著物体中获得的真实边缘图仍然缺少显著物体的大部分详细信息,它们只是告诉显著对象的最外边界在哪里,特别是对于显著对象之间存在重叠的情况下。
  • 经过分析,尝试使用与[Richer convolutional features for edge detection]中相同的边缘检测数据集进行边缘检测任务的联合训练。在训练期间,交替输入来自显著对象检测数据集和边缘检测数据集的图像。从图5中可以看出,利用边缘检测任务的联合训练极大的改善了检测到的显著性对象的细节。

U2-Net:Going Deeper with Nested U-Structure for Salient Object Detection

Paper
[U2-Net:Going Deeper with Nested U-Structure for Salient Object Detection]
GitHub
U-2-Net

亮点

  • 使用ReSidual U-blocks(RSU)模块获取不同尺度的上下文信息。
  • RSU模块使用池化操作在不提高计算量的情况下增加网络深度。
  • 不基于图像分类的网络结构,提取局部细节和全局对比度信息,非提取代表语义的特征。

RSU模块

在这里插入图片描述

RSU与RES的区别

在这里插入图片描述

网络结构

在这里插入图片描述

损失函数

在这里插入图片描述

结果

  • 数据集
    在这里插入图片描述
  • 结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

参考资料

[1] Cascaded Partial Decoder for Fast and Accurate Salient Object Detection解读
[2] Cascaded Partial Decoder for Fast and Accurate Salient Object Detection原文
[3] VPR2019的显著性文章一览
[4] A Simple Pooling-Based Design for Real-Time Salient Object Detection解读
[5] 杂乱环境下的显著性物体: 将显著性物体检测推向新高度 Salient Objects in Clutter: Bringing Salient Object Detection to the Foreground
[6] 显著性检测综述(完整整理)
[7] 显著性检测数据集—学习笔记
[8] 关于文献阅读和科研选题


http://chatgpt.dhexx.cn/article/3P90Q5Va.shtml

相关文章

显著性检测

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_32493539/article/details/79530118 转载请附链接,注明出处。 显著性对象检测综述…

在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具

最近发现一个超好用的“在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具”。 链接在此奉上:在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具 很好的一点就是我们只要QQ登录后,就可以记住请求地址,包括请求参数,包括请求co…

https协议的接口测试

用jmeter测试https接口: 和传统的http协议套路不太一样. 注意细节: 1、取样器正常选择http请求,端口号:为443(具体根据接口文档我刚开始用的80端口所以错了) 2、请求方法,一定一句接口文档&…

接口测试HTTP请求

一、Get请求与Post请求的区别 1.get请求没有请求体,post请求有请求体 2.get请求的参数(需要传递的数据)要放在URL中发送。大小有限制 post请求的参数可以放在URL后传递,也可以放在请求体中(大小不受限制&#xff09…

Jmeter进行http接口测试,这一篇就搞定

jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤 (1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL,路径,请求方式,参数 4.添加查看结果树 5.调用接口,查看返回值) 针对接口添加…

http接口测试——Jmeter接口测试实例讲解

一、测试需求描述 1、 本次测试的接口为http服务端接口 2、 接口的主要分成两类,一类提供给查询功能接口,一类提供保存数据功能接口,这里我们举例2个保存数据的接口,因为这两个接口有关联性,比较有代表性;…

http接口测试工具-Advanced-REST-client

非常好用的http接口测试工具 相信作为一个java开发人员,大家或多或少的要写或者接触一些http接口。而当我们需要本地调试接口常常会因为没有一款好用的工具而烦恼。今天要给大家介绍一款非常好用、实用且方便的http接口测试工具。本人认为这是目前我用过的最好http…

http接口测试:了解协议、请求方法、响应状态码

http接口测试:了解协议、请求方法、响应状态码 接口在各个系统间的重要性无需重申,主要体现在外部系统与系统之间以及内部各子系统之间的交互点。通过这些特定的交互点和一些特殊的规则标准(协议)来进行系统数据之间的交互&#…

如何用postman进行http接口测试?好好看好好学

目录 优点: 1、什么是POSTMAN 2、新建一个项目 2、新增一个用例 3、添加请求信息 4、post请求参数 5、添加头信息 6、预处理和结果检查 7、全局变量与环境变量 8、导出用例为代码 9、批量执行用例 HTTP的接口测试工具有很多,可以进行http请求…

如何用postman进行http接口测试,这篇文章绝对会颠覆你的认知

目录 前言 优点: 1、什么是POSTMAN 2、新建一个项目 2、新增一个用例 3、添加请求信息 4、post请求参数 5、添加头信息 6、预处理和结果检查 7、全局变量与环境变量 8、导出用例为代码 9、批量执行用例 前言 HTTP的接口测试工具有很多,可以进…

http接口测试工具

http接口测试工具 工具图形界面特点postmanY图形界面,功能齐全curlN可用于下载,但更侧重于模拟各种http请求,与网站API的交互wgetN专注于下载,支持断点,支持递归(可用于全站下载)httpieN采用Pt…

接口测试——HttpClient

这里写目录标题 Get请求Post请求HttpClient设置代理FastJson的应用示例常用的代码块正则表达式(提取)封装后的一个demo HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包…

jmeter之接口测试(http接口测试)

基础知识储备 一、了解jmeter接口测试请求接口的原理 客户端--发送一个请求动作--服务器响应--返回客户端 客户端--发送一个请求动作--jmeter代理服务器---服务器--jmeter代理服务器--服务器 二、了解基础接口知识: 1、什么是接口:前端与后台之间的…

http post请求接口测试

http post请求接口测试 单纯的http post请求,请求参数为json格式的接口测试总结。 方法一Postman(推荐): 最简单的方法是用Postman (可做post请求模拟工具用)。真的超级简单,下面是操作方法&…

秒懂HTTPS接口(接口测试篇)

文章目录 一、前言二、具体实现1、引包2、采用绕过证书验证测试HTTPS接口3、采用设置信任自签名证书测试HTTPS接口4、验证数据库 三、完整项目结构 一、前言 下面我们来测试下我们秒懂HTTPS接口(实现篇)写的HTTPS接口(Java版) 技术选型&…

postman进行http接口测试

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。 HTTP的接口测试工具有很多&a…

【测试】详解接口测试(2)- HTTP接口用例设计与测试方法(拿B站练手)

文章目录 前言接口测试是什么HTTP接口的测试用例设计接口用例设计小结 HTTP接口的测试方法手工测试自动化测试 接口测试策略结束语 前言 大家好,我是洋子。在之前的文章《详解接口测试(1)-常见的网络通信协议》当中,我们介绍了接…

接口测试入门(一)-HTTP协议基础

- 接口功能测试算是测试工程师绕不过去的一个重要技能。 - 而掌握接口测试,需要先知道什么是HTTP协议。 - 原理虽然很枯燥,但是同时也很重要。打好基础的情况下,才能将知识体系建的更高、更扎实 目录 一、HTTP协议基础-定义与起源 二、HTTP…

接口测试(http协议,get和post请求和响应)

TCP/IP四层协议模型 HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网 络协议。是基于TCP/IP模型的应用层协议。 为什么叫超文本?不但可以传输文本数据,还可以传输音频、视频、超链接、…

HTTP接口测试

目录 一、什么是HTTP 1、定义 2、HTTP工作架构 3、结构(取自菜鸟网站) 3.1 客户端请求消息 3.2 服务端请求消息 二、如何进行HTTP接口测试 三、HTTP常用请求方式 1、GET请求 1.1 不带参数的GET请求 1.2 带参数的GET请求 2、POST请求 2.1 …