(M3DM)RGB-D异常检测经典论文《Multimodal Industrial Anomaly Detection via Hybrid Fusion》阅读笔记-1

        1. 介绍

        这篇文章收录于2023年CVPR,文章下载链接,代码下载链接。文章的代码目前已经137星了,在异常检测领域尤其是RGB-D异常检测这个一个细分领域中应该是非常难得的高星代码了,其影响力和经典程度由此可见一斑。这篇文章提出了一个很新颖的多模态融合方式,取得了最高分数的同时也启发了很多其他同领域的学者,后续又出现了几篇对它的升级和完善的文章,我也会在随后的博客中逐一介绍并作出对比分析。

        文章所提出的模型的整体结构如下图:

        输入为RGB图像和点云。文章采用了DINO作为RGB的特征提取器,PointMAE作为点云的特征提取器。作者将M3DM划分为3大组成部分:(1)PFA: Point Feature Alignment,(2)UFF:Unsuperviesd Feature Fusion;(3)DLF:Decision Layer Fusion。这三部分正好对应图中的三层,下面依次对这三部分进行分析。

2. Point Feature Alignment

        文章的第一大部分是点云特征的对齐。因为点云所获得的特征是逐点的,在特征融合阶段,只有将三维点云中的点的特征和与之对应的二维图像中的像素点的特征融合在一起才是合理的,所以这里使用的方式具体如下:

  1. 点云特征提取:首先对点云进行farthest point sampling(最远点采样),具体来说就是随机选定一个点加入集合,之后再选择距离这个点最远的点加入集合,之后不断迭代,每次选择距离点云中剩下的点中距离集合中的所有点的距离最小值最大的那个点加入集合。经过迭代就得到了M个点。最大值采样的作用是能够大幅度的降低点云的规模,并保留充足的整体信息。当然文章中并没有将采样后剩余的点去掉,而是以这些点为中心将原始点云划分成了M个组。最远点采样的作用就是让组分布的均匀且覆盖完整的点云。Point Transformer提取每个组的特征,输出一个特征向量,并将这个向量视作是组中心点的特征向量;
  2. 特征插值:经过上述步骤,一个组的s个点中仅有中心点有对应的特征向量,其他点的特征需要进一步进行特征的插值得到。具体的,特征的权重根据根据这个点距离每个中心点的距离成反比;

  3. 特征投影:每个点都具有了特征向量后,根据相机的内外参将点投影至2D,找到点对应的像素。因为点云采集过程中不可避免的有值为Nan的位置,反应到图像上就是不是所有像素都有对应的点,这些像素的特征值被设置为0;得到了像素的特征后,使用平均值池化获得path的特征;
  4. 池化:将点的特征池化为28x28或56x56;

3. Unsupervised Feature Fusion

        特征融合是本文的最大创新点。在此之前的多数研究都只关注了多模态间的互补性,及一些缺陷在RGB中不可见但在PCD中可以检出,或者反之。但更多的缺陷是能够同时被RGB和PCD特征检出的,这时就体现出了模态的冗余性。过往的研究只是简单的将RGB的特征与PCD的特征进行拼接,这样得到的特征空间不够稳定,性能存在缺陷。本文通过对比学习的方式利用了模态的冗余性,简单来说就是训练两个MLP,将预训练特征提取器得到的特征映射到新的特征空间,在新特征空间中,同一patch通过RGB得到的特征与通过PCD得到的特征具有显著的一致性。后续多篇文章受此启发,使用了知识蒸馏的手段来利用模态冗余,取得了更好的效果。

        这个对比学习的过程中,loss采用InfoNCE损失,这是一个对比学习的常用损失函数,详细的介绍可以参考:InfoNCE Loss公式及源码理解-CSDN博客

        通过对比学习后,融合特征被定义为两种模态特征的相加,而不是连接,这就降低了特征空间的维度

4. Decision Layer Fusion

        在异常判断阶段,虽然融合的特征具有很好的效果,但部分异常确实仅出现在单一域,并且作者指出,融合特征虽然促进了多模态特征之间的互相作用,但也会损失一些信息。

        为了解决这个问题,最终的决策并非仅基于融合特征做出,而是使用了三个内存库,分别存储颜色、位置和融合特征。内存库的创建与patchCore一致。推理阶段,每个内存库给出一个异常评分和一个分割图,然后基于两个OCSVM分别输出最终的异常分数和分割图。

        其中的\phi \varphi与patch Core一致(Towards total recall in industrial anomaly detection)。

5. 实验

        数据集:MVTec 3D-AD;

        预处理:去除地面背景、尺寸224x224;

        RGB特征提取:ViTB/8 pretrained on ImageNet with DINO(意味着这个Vision Transformer (ViT)模型是在ImageNet数据集上用DINO方法进行了预训练。这种方法允许模型在大规模未标注的数据上学习有用的特征表示,从而可以在许多下游计算机视觉任务中表现得更好)。特征采用的是最后一层的输出特征,维度768,每个图片输出784个patch;

        PCD特征提取:Point Transformer,在ShapeNet上预训练,使用{3,7,11}层的输出特征。在本文的第2部分介绍过,Point Transformer将图像分成group,对每个group输出一个特征向量。作者测试了两组参数,M=784,S=64或M=1024,S=128。M指最远点采样形成的group的个数,S指每个group中的点的个数。

        特征融合模块:特征融合模块也就是公式中的x_{rgb}x_{pc}是2层的MLP,隐层的节点数被设置为输入层节点数的4倍。

6.指标

       可以从两个方面来分析上述指标:

        从单模态分析:在3D模态上取得了最高分数,作者认为是得益于Point Transformer的良好性能以及PFA模块;在RGB上取得了优于PatchCore的分数,由于RGB模态的推理过程与PatchCore几乎完全一致,作者认为提升是因为ViT性能优于WideResNet,并且删除了构筑特征库之前的池化操作。从这两个方面看,性能更好的特征提取器对整体性能具有显著的提升,之后的多篇文章也沿用了这两个特征提取器。

        从单模态与多模态的对比来分析:为了明显,这里从上表中单独把M3DM的指标列出来,从上至下分别为仅3D,仅RGB和RGB+3D。可以看到在多个应用场景中,并非所有场景都是融合模型取得最高分数,如Cable下RGB取得最高分、potato下3D取得最高分。这里我认为融合模态在某些场景下效果减弱的原因恰恰在于作者将两个模态的特征进行了叠加,某些异常仅在单个模态下比较显著,叠加上另一模态的比较正常的特征后导致融合特征异常分数下降了

        7. 消融实验

        作者进行非常详细的消融实验,具体设置如下:

        1)只有点云(Mpt)信息;

        2)只有RGB (Mrgb)信息;

        3)单存储器(Mfs)将点云特征和RGB特征直接连接在一起;

        4)利用UFF融合多模态特征的单记忆库(Mfs);

        5)分别建立两个记忆库(Mrgb、Mpt),直接将分数相加;

        6)分别构建两个存储库(Mrgb, Mpt),最终结果使用DLF;

        7)建立三个内存库(Mrgb, Mpt, Mfs) (our)。

        对比表中的第3行和第4行,我们可以发现,加入UFF后,三个指标(I-AUROC 4.1%↑,AURPO 1.2%↑,P-AUROC 0.3%↑)的结果都得到了极大的改善,这说明UFF在多模态交互中发挥了重要作用,有助于统一特征分布;比较第5行和第6行,我们证明DLF模型有助于提高异常检测和分割性能。但我认为DLF的作用是极其有限的,这篇文章的最大贡献即在于UFF.

        对于PFA的超参数作者也进行了详细的实验,这里不涉及大的创新,结论如下:1. 更多的组数和更大的组内点数量能够提供更多的信息,得到更精细的表示;2. group 与patches差别在于group直接将点云分组得到的特征存入内存库,patches先对点特征进行池化再进入内存库。最佳分数是在patches=56x56上取得的,作者认为这说明了PFA的作用。但这里我觉得group和patches实际的作用几乎是一致的,区别可能在于patches的划分更加的均匀。我认为真正的区别在于第5行的patches增多了,感受野尺寸变化引起的性能提升。

        作者使用了直方图和t-SNE来可视化特征的分布情况。点云的分布在b中出现了两个不连通的区域,这是因为点云中的一些Nan值和点进行池化产生的。经过融合变换的RGB特征和点特征具有显著相似的分布情况,使得将特征融合和使用Memory Bank更具有合理性。

        彩蛋:在完成上述工作后,作者大发神威,测试了5-shot,10-shot等小样本场景,居然得到很不错的成果,但这个与本文的主要内容无关,也就没有详细说明了。

        8.个人总结

        M3DM是多模态异常检测方向上的经典文章,几乎所有其他文章都会引用到它,其百星代码也足以说明其影响力。

        文章的最重要的工作就是将RGB模态和点云模态的冗余性加以利用,通过对比学习的方式获得了特征空间的一种有效的映射,比简单的连接两个特征取得了更高的性能。后续的多篇文章受此启发, 不仅学习特征的映射关系,还将点云与RGB的映射结果进行比较,更加充分的利用了特征的冗余性。

        文章的代码我会找时间测试并发布博客,欢迎大家持续关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值