Title:PoolNet:A Simple Pooling-Based Design for Real-Time Salient Object Detection
Note data:2019/05/16
Abstract:基于U型结构构建了全局引导模块(GGM )与特征聚合模块(FAM),使得粗糙的语义信息与自上而下的路径中的精细特征融合,在处理300*400图像时可以超过30FPS的速度运行!
Code :pytorch
目录
PoolNet论文解读
1 Abstract
2 Introduction
3 Related work
4 Architecture
4.1 网络概况
4.2 Global Guidance Module
4.3 Feature Aggregation Module
4.4 Joint Training with Edge Detection
5 Experiment
5.1 实验参数的设置
5.2 探索GGM与FAMs
6 Conclution
论文复现
论文提出一种实时Object Detectino模型
网络结构:在U型结构基础上提出全局引导模块与特征聚合模块
创新:扩展卷积神经网络中池化(pooling)的作用来解决显著目标检测问题。
动机:解决显著目标检测问题
我们通过研究如何扩展卷积神经网络中池化(pooling)的作用来解决显著目标检测问题。基于U形结构,我们首先在自下而上的路径上构建全局引导模块(GGM),旨在为不同特征层提供潜在显著目标的位置信息。我们进一步设计了一个特征聚合模块(FAM),使粗级语义信息与自上而下的路径中的精细级别特征完美融合。通过在自上而下路径中的融合操作之后添加FAM,来自GGM的粗略特征可以与各种尺度的特征无缝地合并。这两个基于池化的模块允许逐步细化高级语义特征,从而产生细节丰富的显著性映射。实验结果表明,我们提出的方法可以更精确地定位具有锐化细节的显著对象,因此与先前的现有技术相比显著改善了性能。我们的方法也很快,并且在处理300×400图像时可以以超过30 FPS的速度运行。
效果图:
显著性目标检测在计算机视觉领域扮演着非常重要的地位,传统的方法主要使用人工提取特征或同时捕捉局部细节和全局背景,但缺乏高级语义信息限制了它们检测 复杂场景中的整体显着对象。卷积神经网络在多尺度空间下可以提取高级语义信息与低层细节特征能力大大促进了显著性目标检测的能力!由于CNN的金字塔状结构特征,浅层通常具有较大的空间大小并保持丰富,详细的低级信息,而较深的阶段包含更多的高级别语义知识,更好地定位显著性目标的确切位置。基于U形的结构能够通过在分类网络上构建自上而下的路径来构建丰富的特征图,因此受到最多的关注。
尽管有很好的表现,但U型结构还存在着以下两种问题:
现有的一些方法通过在U型结构的基础上引入attention mechanisms,还有一些方法以循环细化特征图结合多尺度特征信息解决问题,也有添加一些额外的约束如添加边界损失来解决上述问题。
本篇论文解决扩展卷积神经网络中池化(pooling)的作用来解决显著目标检测问题。
我们的模型基于特征金字塔网络(FPNs)两个主要的模块组成:
GGM由金字塔池模块(PPM)的修改版本和一系列全局引导流程(GGF)组成。 与直接将PPM插入U形网络]不同,我们的GGM是一个单独的模块。 更具体地说,PPM被放置在主干的顶部以捕获全局指导信息(显着对象所在的位置)。 通过引入GGF,PPM收集的高级语义信息可以传递给特征图论文。考虑到GGF的粗糙特征图与金字塔不同尺度的特征图的融合问题,提出了FAM
以上的两种模块都是基于池化,论文命名为PoolNet。该网络在一块titan xp上输入一张300*400可以达到超过30FPS,训练5000张图片只需要6个小时。大大优于现有的其他模型,因此PoolNet可以被视为一个基线,有助于简化未来的显着物体检测研究。
由于CNN在视觉领域的强大能力,大多数传统显著性检测的方法都已逐渐被超越。相关的一些工作主要有以下几项:
所有这些方法都将图像补丁作为CNN的输入,因此非常耗时。此外,他们忽略了整个输入图像的基本空间信息。为了克服上述问题,在完全卷积网络的启发下,更多的研究注意力被用于预测像素显着性图。
PoolNet提出了全新的方法,将简单的池化应用于CNN,而不是探索新的网络结构,一样可以提高性能,最近加快运行速度。(现在整个计算机视觉的顶会都以提出新的网络结构为目的,反而忽视很多东西啊!)
在以往的研究中发现高级语义特征有助于显著性目标检测。 同时低级和中级特征对于改进从深层提取的从粗糙级到精细级的特征也是必不可少的。基于以上知识,论文提出了两个能够准确捕获的互补模块(在上文已有提及)。 突出物体的确切位置,同时锐化细节。
论文基于经典的U型架构(特征金字塔FPN),以一种自上而下和自上而下的方式设计,结构如图:
由于结合分类网络的多级特征的强大能力,这种类型的体系结构已被广泛用于许多视觉任务,包括显着对象检测。论文引入了一个建立在自下而上路径顶部的全局指导模块(GGM)(红色线框)。通过将GGM提取的高级信息聚合到每个要素级别的要素图中,我们的目标是明确注意显着对象所在的不同要素级别的图层。
在GGM的指导信息与不同级别的特征合并之后,我们进一步引入特征聚合模块(FAM),以确保可以无缝合并不同规模的特征映射。在下文中,我们描述了上述两个模块的结构并详细解释了它们的功能。(FAM模块)
FPN提供了一种经典架构,用于组合分类主干的多级功能。然而,由于自上而下的路径建立在自下而上的主干上,这种类型的U形结构的问题之一是当高级特征传输到较低层时,它们将逐渐被稀释。CNN的经验感受野远小于理论上的感知域,特别是对于更深的层,因此整个网络的感受域不足以捕获输入图像的全局信息。 对此的直接影响是只能发现部分显著物体,如图所示。
关于自上而下路径中精细特征映射缺乏高级语义信息,由此论文引入了一个全局指导模块GGM,其中包含金字塔池模块(PPM)的修改版本和一系列全局引导流(GGF)明确地使每个级别的特征图知道显著目标的位置。更具体地说GGM中的PPM由四个子分支组成,以捕获输入图像的上下文信息。第一个和最后一个子分支分别是标识映射层和全局平均池化层。对于两个中间子分支,我们采用自适应平均池化层,以确保它们的输出特征图分别具有3×3和5×5的空间大小。
论文中GGM独立于U形结构。通过引入一系列全局引导流程(标识映射),将高级语义信息传递到各个级别的特征映射。(绿色箭头)通过这种方式,我们明确增加了自上而下路径的每个部分中的全局指导信息的权重,以确保在构建FPN时不会稀释位置信息。
图二的可视化实验可以证明GGM的重要性!
GGM将全局指导信息传递到不同金字塔等级的特征图。如何使GGM的粗级特征映射与特征映射无缝地合并在一起成为了新的问题!
不同尺度的金字塔。以VGGNet版本的FPN为例,金字塔中对应于C = {C 2,C 3,C 4,C 5}的特征映射具有{2,4,8,16}的下采样率,与分别是输入图像。在FPN的原始自上而下路径中,具有较粗糙分辨率的特征映射被上采样2倍。因此,在合并操作之后添加具有3×3内核大小的卷积层可以有效地减小上采样的混叠效应。但是,我们的GGF需要更大的上采样率。有效和高效地弥合GGF与不同尺度特征图之间的巨大差距至关重要。为此提出了一系列特征聚合模块,每个模块包含四个子支路,如图3所示。
在前向传递中,输入特征图首先通过将其馈入具有不同下采样率的verage池层来转换为不同的比例空间。然后将来自不同子分支的上采样特征映射合并在一起,接着是3×3卷积层。
FAM有两个优点:
FAM有助于减少上采样混叠效应。为了验证FAM的有效性,可视化图4中FAM附近的特征图。通过比较左侧部分(w / FAMs)和右侧部分(w / oFAMs),特征图之后的FAMs(Columna)可以捕获显着的对象比那些没有FAM的人(Columnc)。除了可视化中间特征图之外,我们还展示了由图2中具有不同设置的模型产生的一些显着性图。通过比较列f(没有FAM)和列g(带有FAM)的结果
发现多次引入FAM可以让网络更好地锐化显着对象的细节。通过观察图2的第二行,这种现象尤为明显。所有上述讨论都验证了我FAM对不同尺度下更好的融合特征图的显着影响。
通过添加额外的预测分支来估计显著性目标边界。 在FAM之后在自上而下路径中的三个特征级别添加三个残差块,用于信息转换,并且从精细水平到粗略水平的通道数为{128,256,512}。 每个残差块之后是16通道3×3卷积层,用于特征压缩,加上一个通道1×1卷积层,用于边缘预测。 我们还连接这三个16通道3×3卷积层,并将它们馈送到具有48个通道的三个连续3×3卷积层,以将捕获的边缘信息发送到显着对象检测分支以进行细节增强。
在训练阶段,我们使用显着对象的边界作为联合训练的基本事实。但是,此过程不会带来任何性能提升,并且某些结果仍然缺少对象边界的详细信息。对于前景和背景之间具有低对比度的场景,所得到的显着图和边界图仍然是模糊的。其原因可能是从显着对象得到的地面实况边缘图仍然缺少显着对象的大部分详细信息。它们只是告诉我们显着对象的最外边界在哪里,特别是对于显着对象之间存在重叠的情况。
考虑到上述论点,尝试使用边缘检测数据集进行边缘检测任务的联合训练。在训练期间,来自显着对象检测数据集的图像和边缘检测数据集交替输入。从图5中可以看出,利用边缘检测任务的联合训练极大地改善了检测到的显着对象的细节。我们将在实验部分提供更多的定量分析。
论文中所有实验代码都是基于Pytorch实现的,文末我会将论文复现的结果贴出来!
项目 | 属性 |
预训练模型 | VGG16/ResNet-50 |
优化器 | Adam |
权重衰减 | 5e-4 |
损失函数 | cross entropy loss |
初始化学习率 | 5e-5 |
训练周期 | 24 epochs |
数据集与数据增强 | ECSSD/PASCAL-S/DUT-OMRON/HKU-IS/SOD/DUTS(horizontal flipping) |
评价指标 | PR,F-measure score,MAE,F-measure |
实现工具 | pytorch |
需要注意的是预训练模型是在ImageNet数据集上训练的!同时引入了一个新的评价指标
mean absolute error (MAE):
我们使用VGG-16骨架进行基于FPN基线的消融实验。
在DUT-O/SOD数据上的表现如下表格所示:
由上表可以看出
GGM影响
为了了解GGM模块中PPM与GGF的作用,分别设计了两次消融实验,选择性地移除PPM和GGF中的一个,同时保持另一个不变。 可以看出,与两个操作相比,两个操作都会使性能下降(第4行)。 这些数值结果表明PPM和GGFs在我们的GGM中起着重要作用。
联合训练的影响
论文中尝试以联合训练方式将边缘检测与显着对象检测相结合提高显著性图质量。 从下表可以看出联合训练的方式会提升网络性能!
5.3 与其他方法的比较
从论文的实验结果可以看出,基于池化方法的两种模块大大提升了网络的性能,在实时性与其他相应指标上有了极大的提升。
使用作者提供的pytorch源码进行论文复现,对DUTS数据集进行训练,预训练网络使用的是Resnet-50,训练出模型大小约220M,作者在源码中贴出了最优的模型,大约411M,可能使用了更加复杂的网络模型!
数据集下载
链接:https://pan.baidu.com/s/1KSroh1mLJLXzyWJcRzsGWQ
提取码:j08c
论文中数据集测试结果:
自己数据集测试结果: