Revisiting image pyramid structure for high resolution salient object detection

本文主要是介绍Revisiting image pyramid structure for high resolution salient object detection,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

accv2022的技术,在我测评的数据集上确实要明显好于basnet,rembg等一众方法。

1.Introduction

        使用LR数据集训练的方法通过调整输入尺寸可以在HR图像上产生不错的结果。本文主要关注仅使用LR数据集进行训练以产生高质量的HR预测。HR的有效感受野ERFs和LR图像不同。设计了逆显著性金字塔重建网络InSPyReNet,InSPyReNet来直接生成Image pyramid of saliency map,在推理时,重新设计了金字塔融合网络,将来自不同尺度的两个显著性地图图像金字塔重叠。

2.related works 

高分辨率图像的图像分割。像素级预测任务,如SOD,将输入图像调整为预定义的形状,如384x384,训练数据集的平均分辨率的宽高通常都在300-400之间,例如imagenet的平均分辨率为378x469,DUTS的平均分辨率为322x372,但是对大图像进行下采样会导致严重的信息丢失,特别是对高频细节。Inspyrenet在训练时不需要高分辨率数据集,但能够预测出细节,特别是物体边界上的细节。

3.Methodology

3.1 Model architecture

使用res2net或者swin transformer作为backbone,但对于HR预测,使用swin作为backbone。在多尺度编码器中使用了UACANet中的PAA-e来减少骨干特征图的通道数,并使用PAA-d在最小阶段(即stage3)上预测初始显著图。采用这两个模块是因为它们利用非局部操作捕捉全局上下文,并且效率高。

        从stage3开始构建图像金字塔已经足够,并应该一直重建直到遇到最低阶段stage-0以获得HR结果,在每个阶段上放置了一种基于自注意力的解码器,Scale Invariant context attention(SICA)用于预测显著图的拉普拉斯图像(Laplacian sailency map)。从预测的拉普拉斯显著图中,我们从较高的阶段向较低的阶段重建显著图。SICA的整体操作遵循OCRNet的方法。

        拉普拉斯金字塔存储了每个尺度中低通滤波图像与原始图像之间的差异,可以将拉普拉斯图像解释为低通滤波信号的余项,即高频细节,我们重新设计我们的网络,通过构建拉普拉斯金字塔,集中于边界细节并从最小的阶段到其原始大小重新构建显著图,从最上层的阶段stage-3开始,将初始显著性图作为输入,并从拉普拉斯显著图中聚合高频细节。那么拉普拉斯是在什么时候添加的呢?是在SICA之后添加的。

3.2 supervision strategy and loss functions

        在每个尺度上都用bce去监督。

3.3 推理

4.代码

下面主要来看看他的代码,主要还是在代码中实现的,inspyrenet

    def forward_inspyre(self, x):B, _, H, W = x.shapex1, x2, x3, x4, x5 = self.backbone(x)x1 = self.context1(x1) #4x2 = self.context2(x2) #4x3 = self.context3(x3) #8x4 = self.context4(x4) #16x5 = self.context5(x5) #32f3, d3 = self.decoder([x3, x4, x5]) #16f3 = self.res(f3, (H // 4,  W // 4 ))f2, p2 = self.attention2(torch.cat([x2, f3], dim=1), d3.detach())d2 = self.image_pyramid.reconstruct(d3.detach(), p2) #4x1 = self.res(x1, (H // 2, W // 2))f2 = self.res(f2, (H // 2, W // 2))f1, p1 = self.attention1(torch.cat([x1, f2], dim=1), d2.detach(), p2.detach()) #2d1 = self.image_pyramid.reconstruct(d2.detach(), p1) #2f1 = self.res(f1, (H, W))_, p0 = self.attention0(f1, d1.detach(), p1.detach()) #2d0 = self.image_pyramid.reconstruct(d1.detach(), p0) #2out = dict()out['saliency'] = [d3, d2, d1, d0]out['laplacian'] = [p2, p1, p0]return out

可以看到imagenet_pyramid的添加,为什么第一次输出总是拉普拉斯显著图就在这里。

这篇关于Revisiting image pyramid structure for high resolution salient object detection的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/669415

相关文章

深入探讨Java 中的 Object 类详解(一切类的根基)

《深入探讨Java中的Object类详解(一切类的根基)》本文详细介绍了Java中的Object类,作为所有类的根类,其重要性不言而喻,文章涵盖了Object类的主要方法,如toString()... 目录1. Object 类的基本概念1.1 Object 类的定义2. Object 类的主要方法3. O

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

时间序列|change point detection

change point detection 被称为变点检测,其基本定义是在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点受系统性因素而非偶然因素影响发生变化,我们就称该时间点为变点。变点识别即利用统计量或统计方法或机器学习方法将该变点位置估计出来。 Change Point Detection的类型 online 指连续观察某一随机过程,监测到变点时停止检验,不运用到

error while loading shared libraries: libnuma.so.1: cannot open shared object file:

腾讯云CentOS,安装Mysql时: 1.yum remove libnuma.so.1 2.yum install numactl.x86_64

java基础总结12-面向对象8(Object类)

1 Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗

MACS bdgdiff: Differential peak detection based on paired four bedGraph files.

参考原文地址:[http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html](http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html) 文章目录 一、MACS bdgdiff 简介DESCRIPTION 二、用法

王立平--Object-c

object-c通常写作objective-c或者obj-c,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。它主要使用于MacOSX和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。在MA

IMAGE LIST

   CImageList就是一个容器,用来存储图片资源,方便这些资源被CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl,CListCtrl等使用。      要使用CImgeList首先要使用它的create函数:      一般用的比较多的是这一个函数,当然,它还有很多重载,自己可以去翻阅msdn.       BOOL

Kafka【十一】数据一致性与高水位(HW :High Watermark)机制

【1】数据一致性 Kafka的设计目标是:高吞吐、高并发、高性能。为了做到以上三点,它必须设计成分布式的,多台机器可以同时提供读写,并且需要为数据的存储做冗余备份。 图中的主题有3个分区,每个分区有3个副本,这样数据可以冗余存储,提高了数据的可用性。并且3个副本有两种角色,Leader和Follower,Follower副本会同步Leader副本的数据。 一旦Leader副本挂了,Follo