Salient Object Detection 探索经历

发布于:2024-04-16 ⋅ 阅读:(26) ⋅ 点赞:(0)

概述

显著性目标检测也被称为显著性检测,旨在通过模拟人类视觉感知系统来检测自然场景图像中最显著的目标和区域。虽然,显著性目标检测听名字是一个检测任务,但是实际上是一个图像分割任务,即一个像素级分类任务,是一个数据所驱动的一个任务。是将自然图像中的显著目标分割出来,显著目标也可以理解为前景。如下图中给出了显著目标检测的示意图。从下图中可以看出显著性目标检测是一个像素级别的二分类任务。在早期的显著目标检测中是基于手工特征的传统方法。目前,随着深度学习的快速发展,基于卷积神经网络的方法取得了显著成绩。随着Transformer的发展,很多使用Transformer架构的算法取得了更好的结果。
在这里插入图片描述
在这里插入图片描述

显著性目标检测目前存在的问题(不限这几个方面)

  • 多尺度目标问题
    在不同场景中,不同的物体往往以不同的尺度存在于图像中。在下图中展示了不同尺度的显著目标。这些示例说明了显著目标检测在处理不同尺度目标时的挑战,对显著目标检测算法在捕捉多尺度特征方面提出了高要求。
    在这里插入图片描述
  • 背景误判问题
    在显著目标检测场景中存在场景复杂的情况,尤其是当前景区域和背景区域具有相似的特征时,很容易将背景像素点误判为前景像素,从而影响整个模型的检测结果。如下图所示,青蛙自身的颜色和周围的环境十分相似、鸭子的倒影和鸭子本身也十分相似、以及小狗周围的白雪和小狗的毛发具有相似特征。在这些场景下,增加了显著目标检测的难度,这就需要模型可以很好的区分前景特征和背景特征。
    在这里插入图片描述
  • 边缘复杂问题
    显著目标具有复杂轮廓和结构时,模型难以精确检测显著目标的边缘像素。如图下所展示的场景中,人物具有不规则的边缘,亭子也具有很多小孔呈现出复杂结构以及房子也同样具有复杂的结构。这就要求显著目标检测网络能很好地感知显著目标的边缘特征。
    在这里插入图片描述
  • 预测完整性问题
    显著目标内部存在较大变化,内部结构复杂不一致的时候,会导致显著目标检测模型在预测时出现不完整的情况。如图下所示,图中所展示的显著目标,其内部都存在着不同程度的变化,这就要求网络具有一致性感知的能力,从而可以生成具有完整性的预测图。
    在这里插入图片描述
    我们在设计显著目标检测模型的时候,我们可以从以上几个角度来进行模型所提创新点的描述,比如使用了多尺度特征融合模块,可以多尺度特征融合模块是为了解决显著目标检测中存在的多尺度目标所提出来的。或者是在网络的最深层次中添加了注意力机制, 这个注意力机制可以让网络更加关注前景以解决显著目标检测中存在的背景误判问题。其他的也是类似,在做任何创新的时候一定要背靠解决什么问题提出的,虽然我们很多人都是先魔改的模型,在想动机,很多时候我们可以去观察一下加入模块后的预测图,去看看其在哪些方面是有所改进的,可以依据这样一个点来写。然后,在最后的可视化上再将图片展示出来,说明我们的所提模块确实是这样的。写论文的基础还是说先把实验做起来,以实验为基础来展开描述。

数据集和评价指标

  • 数据集
    显著目标检测的基准数据集有ECSSD、PASCAL-S、HKU-IS、DUTS、DUT-OMRON这五个数据集。其中DUTS分为DUTS-TE和DUTS-TR,DUTS-TR是训练集其他的都是测试集。
  • 评价指标
    评价指标包括平均绝对误差(MAE)、精确率-召回率(PR)曲线、F-measure、F-measure曲线、S-measure以及E-measure。其中F-measure还可以分为最大F-measure和平均F-measure。PR曲线是需要有的,F-measure曲线看结果好就用不好就不放。剩下的最大F-measure、平均F-measure、S-measure、以及E-measure中选2-3个即可,同时最大F-measure、平均F-measure中选一个、S-measure和E-measure中选一个。MAE指标是必须要有的。。

目前已有方法改进的方向

  • 解码器

    • 单一解码器

      单一解码器,这类主要是在设计解码器中特征融合模块,旨在更高效地将不同尺度地特融合。这类改进有很多文章比如F3Net地分层融合,EDNet中的多尺度融合(空间金字塔卷积),MSNet 中通过NAS技术来自动搜索这个融合模块。目前对于特征融合地改进可以结合目前十分火的注意力机制来进行魔改特征融合模块。

    • 多分支解码器(多任务学习方法)

      多分支解码器一般都是基于多任务学习方法的,这类方法大多都是基于将显著目标检测任务解耦为目标预测,边缘预测以及骨架预测等。每一个分支都是去学习对于地任务,即显著目标检测分支就是去预测显著目标,边缘预测就是去预测目标边缘,最后骨架预测就是去预测目标地骨架。最后将每一个分支地预测结合起来以得到最终地显著目标预测。目前,基于多任务学习进行改进的模型,基本都是基于目标,边缘以及骨架进行解耦的,如果我们仅仅也是这样是没有办法创新的。但是,我们可以换个思路,再这些子任务的基础之上可以,引入一些任务交来显式地为不同任务之间建立联系,以提高模型地性能.比如骨架具有定位作用,可以再中间过程就将其信息传递到目标预测中而不是到最后阶段才进行结合,边缘预测也是如此。所以当我们再基于多任务学习方法进行改进的时候们需要关注特征交互模块的设计。当然,我们也可以思考除了上述几种任务解耦的方式外还有什么其他的方法。

  • 编码器和解码器的中间部分

    这一部分是为了将从骨干网络中得到的多层次特征进行初步的信息交互,以增强检测多尺度目标的能力。这一部分可以自上而下或者自下而上的将每一层的信息进行传递,这样的方式有点类似于做了两次解码,但是在这样的过程一般不需要做监督操作。还有一种方式就是将相邻的特征在中间过程进行交互。对这一类的改进也是比较多的比较经典的MINet就是这样多的。PFSNet做了一些改进。

  • 损失函数

    • 边界损失函数

      除了设计一个分支让网络进行学习,还可以通过设计损失函数的方式来对边界进行关注。F3Net中就提出了增加对边界像素点的损失来实现边界感知。BiconNet中通过连通性关系设计了一个边界模块,并且模块进行监督以感知边界。一般来说,对于边界损失函数,是比较难探索的,有点难想。实在想不到就可以在前人的基础上,增加一些超参数实验做的充分点,说明超参数的有效性。当然这也只能当作一个小的创新点。

    • 完整性损失函数

      目前探索完整性预测的方法还不是很多,ICON主要就是使用胶囊网络来衡量部分与整体的关系,以得到完整性预测。这种是模块来实现完整性,还有一些通过损失函数来实现的。EMNet中就使用S-measure指标中的部分作为目标级损失以实现完整性预测。完整性预测,我们在设计完整性损失的时候,就可以结合S-measure中的部分来进行改进,同时可以像S-measure中SSIM计算的方式一样将图像根据质心划分,先对每个预测进行损失计算,在对完整的图片进行损失计算。

  • 编码器

    • 对于编码器进行改进的论文不多,DPNet是2022年一篇通过引入注意力来改进编码器结构。这类一般比较费事,你把编码器改好还需要再ImageNet数据集上做预训练,然后训练好再在显著目标检测数据集上做训练。一般不建议对编码器做修改,一般编码器我们就使用resnet50,还可以增加VGG实验和swin Transformer实验。消融实验可以就在resnet上做。
    • 对编码器得到的最深层次的特征进行加强,以提高显著目标定位作用。一般来说浅层特征具有细节信息,深层特征具有丰富的语义信息,利于定位显著目标。这一块改进可以直接加注意力。或者可以参考EDNet中的极度下采样模块来进行使用。