当前位置: 首页 > article >正文

【2023工业3D异常检测文献】基于混合融合的多模态工业异常检测方法Multi-3D-Memory (M3DM)

Multimodal Industrial Anomaly Detection via Hybrid Fusion

1、Background

随着3D传感器的发展,最近发布了具有2D图像和3D点云数据的MVTec-3D AD数据集,促进了多模态工业异常检测的研究。

无监督异常检测的核心思想是找出正常表示与异常之间的差异。当前的2D工业异常检测方法可以分为两类:

(1)基于重建的方法。图像重建任务在异常检测方法中被广泛使用,以学习正常表示。对于单一模态输入(2D图像或3D点云),重建方法易于实现。但对于多模态输入,很难找到重建目标。

(2)基于预训练特征提取器的方法。直观的方法是将提取的特征映射到正常分布,并找到分布之外的一个作为异常。基于归一化流的方法使用可逆变换直接构建正常分布,记忆库方法存储一些代表性特征以隐式构建特征分布。

与基于重建的方法相比,直接使用预训练特征提取器不涉及设计多模态重建目标,对于多模态任务是更好的选择。此外,当前的多模态工业异常检测方法直接连接两种模态的特征。然而,当特征维度很高时,多模态特征之间的干扰将非常激烈,并导致性能下降。

为了解决上述问题,提出了一种基于RGB图像和3D点云的新型多模态异常检测方案Multi-3D-Memory (M3DM)。与现有方法直接连接两种模态的特征不同,提出了一种混合融合方案,以减少多模态特征之间的干扰并鼓励特征交互。

提出了无监督特征融合(UFF)来融合多模态特征,它使用分块对比损失进行训练,以学习相同位置的多模态特征块之间的固有关系。为了鼓励异常检测模型保持单一域推理能力,分别为RGB、3D和融合特征构建了三个记忆库。

对于最终决策,构建了决策层融合(DLF),以考虑所有记忆库进行异常检测和分割。异常检测需要包含全局和局部信息的特征,其中局部信息有助于检测小缺陷,全局信息关注所有部分之间的关系。基于这一观察,使用Point Transformer进行3D特征和Vision Transformer进行RGB特征。进一步提出了点特征对齐(PFA)操作,以更好地将3D和2D特征对齐。

2、Method

Multi-3D-Memory (M3DM)方法采用3D点云和RGB图像作为输入,进行3D异常检测和分割。

采用特征混合融合方案,以促进跨域信息交互,同时保持每个单一域的原始信息。

利用两个预训练的特征提取器,DINO用于RGB和PointMAE用于点云,分别提取颜色和3D表示。

M3DM由三个重要部分组成:

(1)点特征对齐(PFA):为了解决颜色特征和3D特征之间的位置信息不匹配问题,提出了点特征对齐,将3D特征对齐到2D空间,这有助于简化多模态交互并提高检测性能。

(2)无监督特征融合(UFF):由于多模态特征之间的交互可以产生对异常检测有帮助的新表示,提出了一个无监督特征融合模块,以帮助统一多模态特征的分布并学习它们之间的内在联系。

(3)决策层融合(DLF):尽管UFF有助于提高检测性能,但发现信息丢失是不可避免的,并提出使用多个记忆库进行最终决策。

在这里插入图片描述

算法流程:

  • 输入数据
    • 3D点云
    • RGB图像
  • 特征提取
    • 使用Point Transformer处理3D点云,提取每个点的特征(形状)
    • 使用Vision Transformer处理RGB图像,提取图像中每个块的特征(纹理和颜色)
  • 特征融合
    • 点特征对齐(PFA):因为3D点云和彩色图片的空间对应关系可能不一致,所以需要一个对齐过程,让3D形状信息和2D颜色信息能在同一个坐标系下比较。将3D点云特征投影到2D平面上,以便与RGB图像特征对齐。
    • 无监督特征融合(UFF):将对齐后的3D和2D特征进行融合,使用一种特殊的学习方法(分块对比学习),让两种特征互相学习,增强彼此的信息。
  • 决策层融合(DLF)
    • 首先,使用多个记忆库(Memory Bank)分别存储RGB特征、3D特征和融合后的特征。
    • 然后,对于每个记忆库,系统都会计算出一个异常分数和一个分割图,这些分数和图基于学习到的正常产品特征。
    • 最后,通过一个叫做One-Class SVM的模型,综合这些分数和图,给出最终的异常检测结果和异常区域的定位。

pseudo-code

# 定义函数进行特征提取
def extract_features(data):
    if isinstance(data, RGB_image):
        features = vision_transformer(data)
    elif isinstance(data, PointCloud):
        features = point_transformer(data)
    return features

# 定义函数进行无监督特征融合
def unsupervised_feature_fusion(rgb_features, point_features):
    fused_features = some_fusion_method(rgb_features, point_features)
    return fused_features

# 定义函数进行异常检测
def anomaly_detection(features, memory_bank):
    distances = calculate_distances(features, memory_bank)
    anomaly_score = sum(distances)  # 简化的异常评分计算
    return anomaly_score

# 主流程
def main(new_rgb_image, new_point_cloud, memory_bank_rgb, memory_bank_point, memory_bank_fused):
    # 特征提取
    rgb_features = extract_features(new_rgb_image)
    point_features = extract_features(new_point_cloud)
    
    # 特征融合
    fused_features = unsupervised_feature_fusion(rgb_features, point_features)
    
    # 异常检测
    score_rgb = anomaly_detection(rgb_features, memory_bank_rgb)
    score_point = anomaly_detection(point_features, memory_bank_point)
    score_fused = anomaly_detection(fused_features, memory_bank_fused)
    
    # 综合决策
    final_score = (score_rgb + score_point + score_fused) / 3
    if final_score > threshold:
        return "异常"
    else:
        return "正常"

# 假设的记忆库数据
memory_bank_rgb = ...
memory_bank_point = ...
memory_bank_fused = ...

# 新样本数据
new_rgb_image = ...
new_point_cloud = ...

# 调用主函数进行异常检测
result = main(new_rgb_image, new_point_cloud, memory_bank_rgb, memory_bank_point, memory_bank_fused)
print("检测结果:", result)

3、Experiments

🐂。。。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、Conclusion

提出了一种基于点云和 RGB 图像的 多模态混合特征融合 工业异常检测方法 Multi-3D-Memory 。


http://www.kler.cn/a/324247.html

相关文章:

  • Rust学习(五):泛型、trait
  • The 3rd Universal CupStage 15: Chengdu, November 2-3, 2024(2024ICPC 成都)
  • LogViewer NLog, Log4Net, Log4j 文本日志可视化
  • 从0开始学习机器学习--Day26--聚类算法
  • NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议
  • Elasticsearch retrievers 通常与 Elasticsearch 8.16.0 一起正式发布!
  • 图灵完备-奇数个信号
  • C++ | Leetcode C++题解之第441题排列硬币
  • FPGA在汽车电子中应用-ADAS
  • 基于 Debian 的系统(如 Ubuntu)上安装、启动和配置 SSH 服务的指令流
  • Redis篇(应用案例 - 商户查询缓存)
  • 深度学习反向传播-过程举例
  • opencv实战项目二十九:GrabCut分割人像
  • Kubernetes学习路线
  • 极狐GitLab 17.4 重点功能解读【一】
  • 基于php的酒店管理系
  • Arthas redefine(加载外部的.class文件,redefine到JVM里 )
  • C高级(Day22)
  • 前端学习笔记-JS进阶篇-02
  • Note2024092801_python 日历信息获取
  • 【算法题】5. 最长回文子串-力扣(LeetCode)
  • 小波去噪MATLAB实现
  • TLV解码 - 华为OD统一考试(E卷)
  • Linux网络:网络编程套接字
  • 努比亚 Z17 NX563J Root 教程三方REC刷写工具教程
  • 软件测试人员发现更多程序bug