本文已参与「新人创作礼」活动,一起开启掘金创作之路。
BASNet: Boundary-Aware Salient Object Detection
ieeexplore.ieee.org/document/89…
openaccess.thecvf.com/content_CVP…
本文贡献
- 提出一个预测-细化结构:BASNet,由密集监督的编码-解码网络和残差细化模块构成。
- 提出混合损失,由交叉熵损失(BCE)、结构相似性损失(SSIM)、交并比损失(IOU)构成,从像素级、pach级和map级三个层次结构中学习输入图像和真值标签之间的变换。
BASNet
预测模块是类似U-Net的密集监督编码-解码网络,从输入图像中学习预测显著图。多尺度残差优化模块通过学习显著图与真实值之间的残差来优化预测模块的显著图。
预测模块
受U-Net和SegNet掐,才用编码器-解码器网络,因为这种结构能同时捕获高级全局上下文和低级细节。
为了减少过拟合,每个解码器最后一层由HED启发的真值标签监督(??)
编码器部分有一个输入卷积层和由基本残差模块组成的六个阶段组成,输入卷积和前四个阶段才用ResNet-34,区别是输入层有64个卷积滤波器,大小为3×3,步幅为1,而不是大小为7×7,步幅为2。在输入层后没有池化操作。意味着第二阶段之前的特征图与输入图像具有相同的空间分辨率。原本的ResNet-34第一个特征图分辨率为原图大小的。这种改进使网络在较早的层中获得更高分辨率的特征图,但减少了整体的感受野。为了获得与ResNet-34相同的感受野,在第4阶段后再增加两个阶段,这两个阶段都包含3个基本的残差模块,在不重叠最大池化层后有512个滤波器。
为了进一步捕获全局信息,在编码器和解码器之间添加了一个桥接阶段(??)。它由三个卷积组成,每个卷积是512个大小3×3膨胀为2的滤波器(空洞卷积),每个卷积之后有BN和ReLU激活函数。
解码器和编码器几乎是对称的。每个阶段由三个卷积组成,然后是BN和ReLU激活函数。每个阶段的输入是由前一阶段输出的上采样和编码器相应阶段拼接成的特征图。为了实现侧输出显著图,桥接阶段和每个解码器的多级通道输出被送到一个普通的3×3卷积层,然后是双线性插值上采样和一个Sigmoid激活函数(??)。因此给定一个输入图像,预测模块在训练过程产生7个显著图。尽管每个显著图都被上采样到输入图像大小,但最后一个精读最高,作为预测模块最终输出,被传给细化模块。
细化模块
细化模块通常被设计为一个残差块,通过学习显著图与真值之间的残差,来对预测的粗显著图进行细化。
“粗”包括两个方面:
- 模糊和有噪声的边界(图3(b))
- 不均匀预测的区域概率(图3(c))
真是预测通常包含这两种情况。
基于局部信息的残差优化模块(图4a)首次提出是用于边界优化[50]上。由于它的感受野比较小,Islam等人[22]和Deng等人[6]迭代式或递归式地将之在多个尺度上用于特征图优化。Wang等人[64]利用[15]里的金字塔池化模块,将三个尺度的金字塔池化特征拼接起来。为了避免因为池化操作而丢失细节信息,RRM_MS(图4b)利用卷积核大小和膨胀不同的卷积,来获取多层级信息。但是,这些模块都比较浅,很难获取用于细化的高级信息。
为了优化粗略的特征图中存在的区域和边界缺陷,我们设计了一个新的残差优化模块。该RRM利用残差编码器-解码器架构,RRM_Ours(图2和图4c)。它主要的架构和预测模块的架构类似,但是要简单些。它包括一个输入层、编码器、桥接(bridge)、解码器和输出层。和预测模块不同,编码器和解码器有4个阶段。每个阶段只有一个卷积层,每一层有64个滤波器,大小是3 × 3,后面跟着一个BN层和一个ReLU层。桥接阶段有一个有64个滤波器的卷积层,大小是3 × 3,后面跟着一个BN层和ReLU层。编码器才用非重叠最大池化进行下采样,在解码器使用双线性插值进行上采样。这个RM模块的输出就是我们模型最终的特征图输出。
混合损失
是第k个侧输出,K是总的输出个数,
是每个损失的权重。我们的显著性检测模型由8个输出深度监督,即K=8,包含7个来自预测模型的输出和一个来自细化模块的输出。
为了获得高质量区域分割和清晰的边界,我们将定义为混合损失:
BCE损失是在二分类和分割中应用最广泛的损失:
是像素(r, c)的真值标签,
是预测成为显著对象的概率。
SSIM最初被用于图像质量评估,它捕获图像的结构信息。我们将它整合在损失函数中,学习显著物体真值标签的结构信息。分别是从预测概率图S和二元真值掩码G上裁剪得到的两个对应区块的像素值(大小为N × N),x和y的SSIM定义为:
作为结构相似性理论的实现,结构相似度指数从图像组成的角度将结构信息定义为独立于亮度、对比度的,反映场景中物体结构的属性,并将失真建模为亮度、对比度和结构三个不同因素的组合。用均值作为亮度的估计,标准差作为对比度的估计,协方差作为结构相似程度的度量。
其中,和
分别是x , y的均值和标准方差。
是它们的协方差,
是为了避免分母为0。
IoU最开始是用于计算两个集合的相似度,然后被用作为目标检测和分割的标准评估方法。最近,它也开始应用在训练损失函数中[56,42]。为了确保其可微性,我们使用了如下的IoU损失[42]:
其中,是像素点(r, c)的真值标签,
是其为显著类别的预测概率。
我们在图5中展示了三种损失各自的作用。这些热力图显示了在训练过程中,每个像素点上损失的变化。三排分别对应于交叉熵损失、SSIM损失、IoU损失。三列表示不同阶段的训练过程。
交叉熵损失是逐个像素点的。它没有考虑临近区域的标签,它视前景和背景像素点同等重要,有助于所有像素点的收敛。
SSIM 损失是一个区块级的测度,考虑每个像素点的局部临近区域。它给边界赋予较高的权重,也就是在边界附近损失较高,即使当边界的预测概率和前景其余部分的概率是一样的。开始训练时,边界上的损失值是最大的(图5第2排)。它有助于优化过程关注在边界上。随着训练的继续,前景的SSIM损失逐渐降低,背景损失逐渐重要。但是,得等到背景像素点的预测非常接近真值标签了(预测值迅速地由1跌为0),背景损失才会在训练中发挥作用。这非常有帮助,因为只有在训练的后半段时(交叉熵损失变得非常平稳了),预测结果才会趋近于0。SSIM损失确保我们仍有足够的梯度来让模型学习。背景预测看上去更干净一些,因为概率值逐渐会变成0。
IoU损失是一个特征图级别的测度。但是出于展示目的,我们依据上面的等式将每个像素点的IoU画了出来。随着前景网络预测置信度的上升,前景损失逐渐降至0。当我们将这三个损失结合起来时,我们利用交叉熵损失来对所有像素点保持其梯度平滑,用IoU损失来更多的关注在前景上。SSIM用于确保预测结果是符合原始图像结构的,在边界位置的损失较大。
实验结果
可以看到图5的这三行热力图变化,颜色越红代表损失对待该像素点的权重越大,也就是越重视该点,越蓝表示权重对待越小。从第一行的BCE损失变化可以看出,BCE损失是pixel-wise的,它是一个非常公平的损失函数,对待前景和背景一开始区别不大,训练过程中几乎达到了任何像素点都一视同仁。
而第二行关于结构相似性损失的变化,可以看到无论和
怎么变化都是对显著物体边界赋予较高的权重。