【2024工业3D异常检测文献】CMDIAD: 基于跨模态蒸馏驱动的多模态工业异常检测

news2024/10/1 0:01:30

Incomplete Multimodal Industrial Anomaly Detection via Cross-Modal Distillation

1、Background

近年来,基于3D点云和RGB图像的多模态工业异常检测(IAD)研究强调了利用模态间的冗余性和互补性对于精确分类和分割的重要性。

在项目中,提出了CMDIAD方法,一个用于IAD的跨模态蒸馏框架,以证明多模态训练、少模态推理(Multi-modal Training, Few-modal Inference,MTFI)流程的可行性。

与典型的知识蒸馏(KD)方法不同,传统的方法涉及接受相同模态输入的教师和学生网络,而跨模态KD的学生网络试图基于额外的模态生成与教师相同的输出。

换句话说,跨模态KD能够通过建立一种模态与另一种模态之间的映射来估计缺失的信息。

通过跨模态KD来增强无监督IAD方法,开发一个多模态训练、少模态推理(MTFI)流程,使模型能够用多种检查方法的数据进行训练,但只使用其中一种方法进行推理。

CMDIAD基于IAD的跨模态蒸馏框架,学习生成缺失模态的跨模态幻觉,目标是调查MTFI流程的可行性以及可以跨模态传输的信息,并采用了基于无监督记忆库方法。

CMDIAD框架的 核心思想是训练可学习的跨模态KD网络,以模拟在训练阶段仅出现的给定模态的特权信息,如特征或输入,然后尝试在推理阶段生成其缺失的信息。

Supplement

跨模态KD网络(Cross-Modal Knowledge Distillation,简称KD)是指一种特殊的知识蒸馏方法,它用于处理多模态学习中缺失模态的情况。在多模态学习中,数据通常包含来自不同源(如视觉、声音、文本等)的多种类型的信息。理想情况下,模型训练和推理都希望能够利用所有这些模态的信息。然而,在现实世界的应用中,某些模态的数据可能不可用或不完整。

跨模态KD网络的核心思想是 利用一种模态的已知信息来估计或生成另一种模态的缺失信息。 这样,即使在缺少某些模态数据的情况下,模型也能够进行有效的推理。具体来说,跨模态KD网络通过以下步骤实现:

  • 教师网络和学生网络:在传统的知识蒸馏中,教师网络通常是预训练的深度神经网络,它能够处理完整的模态数据;学生网络则尝试学习教师网络的知识,但学生网络可能只接触到部分模态的数据。
  • 模态融合:在跨模态KD中,学生网络被训练来预测或生成那些在推理时可能不可用的模态的信息。这通常涉及到从一种模态(如RGB图像)生成另一种模态(如3D点云)的特征表示。
  • 蒸馏:通过训练,学生网络学习到了如何从一种模态映射到另一种模态。这种映射可以是直接的(如特征到特征的映射),也可以是间接的(如输入到输入的映射)。
  • 损失函数:在训练过程中,通常会定义一个损失函数来衡量学生网络生成的模态信息与真实模态信息之间的差异。通过最小化这个损失,学生网络能够学习到如何更好地估计或生成缺失的模态信息。
  • 推理:在推理阶段,即使某些模态的数据不可用,学生网络也能够利用它在训练阶段学到的知识来生成缺失模态的估计,从而进行有效的异常检测。

2、Method

核心思想:

  • 多模态训练,少模态推理(MTFI):模型在训练时使用来自多个检查方法的数据(多模态),但在推理时仅使用其中一种模态的数据。这样可以在实际应用中节省成本和时间,因为不是所有样本都需要通过所有检查方法进行评估。
  • 跨模态知识蒸馏(KD):通过跨模态KD,模型能够利用一种模态的信息来估计或生成另一种缺失模态的信息。例如,使用RGB图像信息来生成对应的3D点云信息。
  • 记忆库方法:使用记忆库来存储正常样本的特征,并在推理时比较测试样本与这些正常特征的差异,以识别异常。

在这里插入图片描述

MTFI流程(只使用PCs进行推理):

  • 多模态训练阶段:
    • 在这个阶段,模型使用来自多个模态(例如,RGB图像和点云)的数据进行训练。
    • 利用跨模态知识蒸馏技术,模型学习如何从一种模态(如RGB图像)生成另一种模态(如点云)的特征表示。
    • 通过这种方式,模型能够理解不同模态之间的关系,并学习如何利用一种模态的信息来补充另一种模态的缺失信息。
  • 少模态推理阶段:
    • 在这个阶段,模型仅使用一种模态的数据(在Figure 2的情况下,只使用点云数据)来进行推理。
    • 即使在训练时使用了多模态数据,模型也能够在推理时只使用点云数据来检测异常。
    • 通过在训练阶段学习的跨模态映射,模型能够生成缺失模态(如RGB图像)的幻觉,并利用这些幻觉来进行有效的异常检测。

直观解释:

  • 训练阶段:模型像“学生”一样学习如何从多种类型的数据中提取和生成有用的特征。
  • 推理阶段:模型像“老师”一样应用学到的知识,即使在缺少某些数据类型的情况下也能做出决策。

pseudo-code

# point_cloud_feature_extractor 和 rgb_feature_extractor 是预训练的模型,用于从点云和RGB图像中提取特征。
# F2F_network、F2I_network 和 I2F_network 是跨模态蒸馏网络,用于不同模态间的特征转换。
# select_coreset 是一个函数,用于从正常样本特征中选择一个代表性的子集来构建记忆库。
# compute_anomaly_score 是一个函数,用于计算给定测试样本相对于记忆库的异常分数。
# fuse_scores 是一个函数,用于融合不同模态的异常分数,以得到一个综合的异常检测结果。
# threshold 是一个阈值,用于判断测试样本是否异常。

# 步骤1: 特征提取
def feature_extraction(PCs, RGB_image):
    FP_C = point_cloud_feature_extractor(PCs)  # 使用Point-MAE
    FRGB = rgb_feature_extractor(RGB_image)  # 使用DINO
    return FP_C, FRGB

# 步骤2: 跨模态蒸馏
def cross_modal_distillation(FP_C, FRGB):
    # 特征到特征蒸馏
    H_fRGB = F2F_network(FP_C)
    H_FP_C = F2F_network(FRGB)
    
    # 特征到输入蒸馏
    HiRGB = F2I_network(FP_C)
    HfRGB = RGB_feature_extractor(HiRGB)
    
    # 输入到特征蒸馏
    HfRGB = I2F_network(PCs)
    
    return H_fRGB, H_FP_C, HfRGB

# 步骤3: 记忆库构建
def build_memory_bank(FP_C, FRGB, normal_samples):
    M_P_C = select_coreset(FP_C, normal_samples)
    M_RGB = select_coreset(FRGB, normal_samples)
    return M_P_C, M_RGB

# 步骤4: 推理与异常检测
def anomaly_detection(FP_C, M_P_C, H_fRGB, M_RGB):
    # 计算异常分数
    anomaly_score_PCs = compute_anomaly_score(FP_C, M_P_C)
    anomaly_score_RGB = compute_anomaly_score(H_fRGB, M_RGB)
    
    # 融合异常分数
    final_score = fuse_scores(anomaly_score_PCs, anomaly_score_RGB)
    
    # 阈值判断异常
    return final_score > threshold

# 主流程
def main(PCs, RGB_image, normal_samples):
    FP_C, FRGB = feature_extraction(PCs, RGB_image)
    H_fRGB, H_FP_C, HfRGB = cross_modal_distillation(FP_C, FRGB)
    M_P_C, M_RGB = build_memory_bank(FP_C, FRGB, normal_samples)
    anomaly_detected = anomaly_detection(FP_C, M_P_C, H_fRGB, M_RGB)
    return anomaly_detected

算法流程:

  • 特征提取
    • 使用预训练的深度学习模型(如DINO和Point-MAE)分别对RGB图像和3D点云进行特征提取。
  • 跨模态蒸馏
    • 特征到特征蒸馏(F2F):直接从一种模态的特征图生成另一种模态的特征图。
    • 特征到输入蒸馏(F2I):从一种模态的特征图中生成另一种模态的输入数据。
    • 输入到特征蒸馏(I2F):从一种模态的输入数据生成另一种模态的特征图。
  • 优化
    • 通过最小化真实特征和生成特征之间的距离来训练跨模态蒸馏网络。
  • 记忆库构建
    • 使用核心集选择方法来构建记忆库,确保记忆库尽可能全面且不包含重复特征。
  • 决策层融合
    • 在推理时,使用单类支持向量机(OCSVM)比较测试样本的特征与记忆库中的特征,以计算异常分数。
  • 推理
    • 根据计算出的异常分数,模型对测试样本进行分类和分割,以识别异常。

3、Experiments

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、Conclusion

开发了一个基于跨模态蒸馏驱动的多模态工业异常检测(IAD)的有效框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2181062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20240930编译orangepi5的Android12使用HDMI0输出

20240930编译orangepi5的Android12使用HDMI0输出 2024/9/30 9:44 缘起,3月份的时候,看PDD拼多多的优惠券给力! 就入手了香橙派Orange Pi 5。 自从制作TF卡的启动卡的时候,坏了一张SanDisk的32GB的TF卡。 从此就对TF卡启动无比抵触…

【微信小程序前端开发】入门Day01 —— 小程序页面组成、组件使用及协同开发发布指南

小程序的项目结构 pages 用来存放所有小程序的页面 utils 用来存放工具性质的模块(例如:格式化时间的自定义模块) app.js 小程序项目的入口文件 app.json 小程序项目的全局配置文件 app.wxss 小程序项目的全局样式文件 project.config.json 项…

理解线程库和线程排斥(锁)

理解线程库 线程要有独立属性 a.独立栈结构 b.寄存器中的上下文 在进程地址库内,维护栈的设备只有一套,如何保证线程都有独立栈? 每个新线程的栈由库维护,库会在堆上开辟一段空间。 默认地址空间的栈由主线程使用 如何理解pt…

SpringBoot框架下体育馆管理系统的构建

1引言 1.1课题背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其…

被Karpathy誉为“蕴藏着类似ChatGPT的机会的AI产品Notebook LM”,它到底做对了什么?

就在昨天,Karpathy在X上连续发布了多条安利帖,强烈地给大家推荐一个AI产品NotebookLM。 嘶~给周围人疯狂种草并不稀奇,但Karpathy的推荐理由给NotebookLM戴了一个高帽子-他提到这款产品让人联想到ChatGPT。 这种就令人好奇&#…

线性模型到神经网络

🚀 在初始神经网络那一节(链接如下:初始神经网络)的最后,我们通过加大考虑的天数使得我们最后得到的模型Loss最终停留在了0.32k,当我们在想让模型更加准确的时候,是做不到的,因为我们…

论文的研究工具有什么?推荐5款AI论文写作网站

在当今的学术研究和写作领域,AI工具已经成为不可或缺的助手。这些工具不仅能够提高写作效率,还能帮助研究者生成高质量的论文。以下是一些值得推荐的AI论文写作工具: 千笔-AIPassPaper 千笔-AIPassPaper是一款基于深度学习和自然语言处理技…

太速科技-FMCJ457-基于JESD204B的2路2Gsps AD 2路2Gsps DA FMC子卡

FMCJ457-基于JESD204B的2路2Gsps AD 2路2Gsps DA FMC子卡 一、板卡概述 该子卡是高速AD9172 DAC和AD9689 ADC的FMC板。为客户提供高达2 GHz 的可用模拟带宽以及 JESD204B 接口,以快速地对各种宽带 RF 应用进行原型制作。 AD芯片AD9689,AD9689-2…

【技能提升get!技术策划进阶指南】

** 技能提升get! 技术策划进阶指南 ** 技术策划扮演着游戏开发团队中的关键角色,需要在复杂的系统中找到最优的技术方案。 本文将全面介绍技术策划的职位定义、日常工作、重要作用以及成长路径,让大家全方位了解这个影响游戏质量的重要岗位。 点击蓝链领取游戏…

golang小项目1-家庭收支记账系统

项目地址:golang小项目 参考资料:尚硅谷golang教程P229 家庭收支记账系统 1. 系统简介 1.1 项目背景 在现代社会中,家庭的财务管理显得尤为重要。随着生活成本的不断上升,家庭需要有效地记录和分析收支情况,以确保…

【Linux】进程概念-2

文章目录 1.环境变量1.1 基本概念1.2 常见环境变量1.3 查看环境变量方法1.4 测试PATH1.5 测试HOME1.6 和环境变量相关的命令1.7 环境变量的组织方式1.8 通过代码如何获取环境变量1.9 通过系统调用获取或设置环境变量1.10 环境变量通常是具有全局属性的 1.环境变量 1.1 基本概念…

李宏毅机器学习2023-HW10-Adversarial Attack

文章目录 TaskBaselineFGSM (Fast Gradient Sign Method (FGSM)I-FGSM(Iterative Fast Gradient Sign Method)MI-FGSM(Momentum Iterative Fast Gradient Sign Method)M-DI2-FGSM(Diverse Input Momentum Iterative Fast Gradient Sign Method) Reportfgsm attackJepg Compress…

【LeetCode HOT 100】详细题解之链表篇

LeetCode HOT 100题解之链表篇 160 相交链表题目分析代码 206 反转链表方法一:迭代 234 回文链表方法一:将值复制到数组中方法二:快慢指针 141 环形链表方法一:哈希表方法二:快慢指针 142 环形链表II方法一&#xff1a…

读代码UNET

这个后面这个大小怎么算的,这参数怎么填,怎么来的? 这是怎么看怎么算的? 这些参数设置怎么设置?卷积多大,有什么讲究?

机器学习:opencv--摄像头OCR

目录 前言 一、三个函数 1.显示图像 2.点排序 3.透视变换 二、代码实例 1.打开摄像头 2.图像预处理 3.检测特定轮廓 4.对轮廓进行处理 5.释放资源 前言 摄像头OCR指的是利用摄像头捕捉图像中的文字信息,并通过光学字符识别(OCR)技…

遥感图像文本检索

遥感图像文本检索是一种通过自然语言描述,从大量遥感图像中搜索与之相关的图像的技术。它用于遥感解释任务中,帮助用户根据文字描述快速找到符合条件的遥感图像,这在城市规划、环境监测、灾害管理等领域具有重要应用意义。 实现这一技术的核…

【刷点笔试面试题试试水】#ifndef和#ifdef有什么区别?

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> using namespace std;#define DEBUGint…

828华为云征文|华为云Flexus X实例性能实测:速度与稳定性的完美结合

828华为云征文&#xff5c;华为云Flexus X实例性能实测&#xff1a;速度与稳定性的完美结合 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、实践环境介绍2.1 本次实践环境规划2.2 本次实践介绍 …

828华为云征文|华为云Flexus云服务器X实例部署——盲盒抽奖商城系统以及编译发布小程序

盲盒抽奖商城系统使用 thinkphp6.0 uniapp 开发&#xff0c;做到了全移动端兼容。一个系统不仅可以打包 小程序 还可以 打包APP &#xff0c;H5 华为云Flexus云服务器X实例在安装搭建盲盒商城小程序方面具有显著优势&#xff0c;这些优势主要体现在以下几个方面&#xff1a; …

OpenGL ES 着色器(5)

OpenGL ES 着色器(5) 简述 着色器是在GPU上运行的程序&#xff0c;它会对每一个点都执行一次程序&#xff0c;并且计算出每个像素需要渲染的颜色&#xff0c;我们主要关注着色器的怎么传递数据&#xff0c;在OpenGL ES中&#xff0c;着色器传递数据分几种场景&#xff0c;一种…