论文笔记

《Concealed Object Detection》

  1. 这篇论文是2021TPAMI的论文,也是2020年CVPR的oral论文Camouflaged Object Detection的改进。本文首先回顾一下其前身SINet,以及作者的另一篇用于息肉分割的伪装目标检测论文PraNet,最后再介绍SINet-V2。

  2. SINet。生物学研究表明,捕食者在狩猎时,首先会判断潜在猎物是否存在,即会搜索猎物;然后,捕食者可以识别目标动物并进行捕食。 基于这个事实,作者提出了SINet——它包括两个主要模块:搜索模块( search module,SM)和识别模块( identification module,IM),前者负责寻找伪装的物体,而后者则用来精确地检测它。SINet的网络结构如下所示。

    SINet

    实验早已证明浅层的低级特征保留空间细节,用于构建目标边界,而深层的高级特征保留语义信息,用于定位目标。 由于神经网络的这种固有特性,作者将提取的特征划分为低级(2层),中级(1层),高级(2层); 并通过拼接,上采样和下采样操作将它们组合起来。

    在SM模块中,在5层卷积的基础上,将[X0,X1],[X2,X3,X4],[X3,X4]以及[X4]送入四个RF模块,最后做一个PDC,也就是一个解码器,便可以得到粗糙的预测图作为SM模块的输出。此处所谓的RF(reception field)和Google的Inception v3系列网络很像,都是通过1x1卷积与双串联式的架构来减少网络参数,从而达到瓶颈训练的效果,同时也是增大感受野的一种方式,而在COD或者其他的一些显著目标检测上,增大感受野是提高预测精度的一种常用方式。

    在IM模块中,用SM模块输出的粗糙特征和第三层的特征做一次search attention来消除无关特征,这个attention也是对第三层特征使用高斯滤波器再和粗糙预测图取max得到的。做完attention之后再次送入RF增大感受野,最后送入PDC进行解码即可得到最终预测。

  3. PraNet。PraNet的网络结构如下所示。PraNet的贡献主要有两个:首先采用了部分解码器模块,以深三层特征图为输入得到初始的预测图,并以其为引导逐步精细化,最终得到预测图。其次,采用了反向注意力模块,逐步擦除确定的显著性区域,将擦除后的结果和上一层的特征图相加,这样就可以加强不确定的边界附近区域,促使模型获得更精确的分割结果。

    PraNet

  4. SINet-V2。SINet-V2同样采用了先搜索后识别的流程。它主要有三个模块: 纹理增强模块(texture enhanced module,TEM),近邻连接解码器模块(neighbor connection decoder,NCD),级联组反转注意力模块( cascaded group-reversal attention,GRA)。网络的结构如下所示。

    SINet-V2

  5. 搜索阶段。首先使用Res2Net-50作为主干网络进行特征提取。接着,将深3层的特征送入TEM模块(使用扩大的上下文线索来捕获细粒度纹理)来增大感受野(如SINet中的RF一样)。然后将增强后的特征送入NCD模块(提供位置信息)来进行粗糙预测(如SINet中的PDC一样)。

  6. 识别阶段。这是SINet-V2相比于SINet的主要改进之处。SINet在识别阶段使用搜索阶段的输出作为引导,借助PDC模块生成最终预测,而SINet-V2却并非如此,而是采用了PraNet中使用的反转注意力、目标擦除策略以及PGNet中的分组引导策略。GRA模块(从更深的层中细化粗糙的预测)的具体操作是:首先将特征图沿通道维度进行分组(如4个通道作为一组,这样32个通道可以分为8组),然后将粗糙预测进行sigmoid激活并用1减得到反转预测,接着在每个组后面插入一张反转预测,再进行通道维度的拼接,相比PraNet中将粗糙预测直接作为先验引导进行像素级乘法的操作,SINet-V2避免了引入错误引导而累积放大错误的可能性。最后,作者采用了残差学习策略,每个GRA模块都有三次残差学习操作:产生本迭代粗糙预测时的残差学习、产生下一迭代反转引导时的残差学习、产生本阶段粗糙预测时的残差学习。

    GRA

  7. loss。模型使用的loss是weighted IoU loss与weighted BCE loss之和,采用了深度监督的思想,因此模型的总loss是4次loss之和。