【2022工业3D异常检测文献】BTF: 结合手工制作的3D描述和颜色特征的异常检测方法

news2024/11/20 18:24:16

BACK TO THE FEATURE: CLASSICAL 3D FEATURES ARE (ALMOST) ALL YOU NEED FOR 3D ANOMALY DETECTION

1、Background

BTF(Back to the Feature),一种 结合手工制作的3D表示(FPFH)和基于深度颜色特征提取(PatchCore) 的方法。

手工制作的3D点云异常检测方法是 基于预先定义的几何规则和手工编码的算法来从3D点云数据中识别异常模式 的技术。这些方法不依赖于数据驱动的模型(如深度学习算法),而是使用数学和几何原理来提取特征并识别异常。

手工制作的异常检测方法首先需要从3D点云中提取出有助于异常识别的特征。这些特征通常包括:

  • 几何特征:如点云的曲率、法线(垂直于局部表面的向量)、局部凹凸性等。
  • 拓扑特征:考虑点云中点与点之间的空间关系,如点的邻域结构。
  • 描述符:如FPFH(Fast Point Feature Histograms),它综合了点的位置、法线和曲率等信息,生成一个可用于后续处理的描述符。

手工制作的3D点云异常检测可以很好的利用 旋转不变特性

在3D异常检测和分割中,旋转不变性是指算法能够识别和处理的3D形状特征与对象的方向无关。换句话说,不论对象如何旋转,算法都能够以相同的方式识别出对象的特征。这对于3D点云异常检测具有以下几个优势:

  • 鲁棒性:旋转不变性使得异常检测算法对对象的方向变化不敏感,因此可以在不同方向的多个视图中可靠地识别出相同的特征。
  • 简化计算:由于算法不需要考虑每个可能的方向,因此可以减少计算量,提高算法的处理速度。
  • 提高准确性:在异常检测中,我们通常关心的是局部的几何变化,如凹陷或凸起,这些变化与方向无关。旋转不变的特征允许算法集中于这些局部特征,而不是背景噪声或非相关的变化。
  • 泛化能力:旋转不变的特征有助于算法更好地泛化到新的、未见过的数据。因为训练时学到的特征在新数据的不同方向上仍然有效。
  • 减少假阳性:在异常分割任务中,旋转不变性有助于减少由于对象方向变化导致的假阳性检测。例如,如果算法仅对特定方向的特征敏感,那么在其他方向上可能会出现误报。
  • 特征比较:在比较测试样本和训练样本时,旋转不变性允许直接比较特征,而无需复杂的对齐或归一化步骤。
  • 数据增强:在训练机器学习模型时,可以通过旋转训练数据来增强数据集,而不用担心影响模型的性能。

FPFH(Fast Point Feature Histograms)就是一种旋转不变的3D点云描述符。它通过计算点云中每个点周围的几何特征,并将这些特征量化到一个直方图中,来实现对3D形状的描述。由于FPFH描述符与点云的旋转无关,因此它在3D异常检测中非常有用,能够提供一种有效的方式来识别和分割异常。

手工制作的3D点云异常检测方法的优势和局限

  • 优势:计算效率高,易于理解和解释,不需要大量的训练数据。
  • 局限: 可能不如数据驱动的方法灵活,对于复杂的异常模式可能不够敏感。

2、Method

算法流程:

  • 预处理
    • 对点云和RGB图像进行下采样以降低计算复杂度。
    • 对点云执行背景移除,以减少无关信息的干扰。
  • 特征提取
    • 提取3D形状特征(例如FPFH)以捕捉几何信息。
    • 提取颜色特征(使用预训练的CNN模型如PatchCore)以捕捉颜色和纹理信息。
  • 特征融合
    • 将3D形状特征和颜色特征进行拼接,形成综合特征向量。
  • 异常检测
    • 使用k-最近邻(kNN)或其他方法计算测试样本的综合特征向量与训练样本特征向量之间的距离。
    • 根据距离计算异常得分,得分越高表示异常的可能性越大。
  • 异常分割
    • 根据异常得分对测试样本进行像素级的异常分割,将超过阈值的像素标记为异常。

pseudo-code

# 输入:训练集点云和RGB图像,测试集点云和RGB图像
# 输出:测试样本的异常分割结果

# 步骤1:预处理
function preprocess(point_cloud, rgb_image):
    # 下采样点云和图像
    downsampled_point_cloud = downsample(point_cloud)
    downsampled_rgb_image = downsample(rgb_image)
    
    # 移除点云背景
    processed_point_cloud = remove_background(downsampled_point_cloud)
    
    return processed_point_cloud, downsampled_rgb_image

# 步骤2:特征提取
function extract_features(point_cloud, rgb_image):
    # 提取3D形状特征
    shape_features = extract_3d_features(point_cloud)
    
    # 提取颜色特征
    color_features = extract_color_features(rgb_image)
    
    return shape_features, color_features

# 步骤3:特征融合
function fuse_features(shape_features, color_features):
    # 融合3D形状特征和颜色特征
    fused_features = concatenate(shape_features, color_features)
    return fused_features

# 步骤4:异常检测
function anomaly_detection(fused_features, train_features):
    # 计算测试样本与训练样本之间的距离
    distances = compute_distances(fused_features, train_features)
    
    # 计算异常得分
    anomaly_scores = compute_anomaly_scores(distances)
    
    return anomaly_scores

# 主流程
function BTF(train_point_clouds, train_rgb_images, test_point_cloud, test_rgb_image):
    # 预处理
    processed_test_point_cloud, test_rgb_image = preprocess(test_point_cloud, test_rgb_image)
    
    # 特征提取
    test_shape_features, test_color_features = extract_features(processed_test_point_cloud, test_rgb_image)
    
    # 特征融合
    test_fused_features = fuse_features(test_shape_features, test_color_features)
    
    # 训练特征融合(假设已经完成特征提取和融合)
    train_fused_features = fuse_features(extract_features(train_point_clouds), extract_features(train_rgb_images))
    
    # 异常检测
    anomaly_scores = anomaly_detection(test_fused_features, train_fused_features)
    
    # 根据得分进行异常分割
    segmented_result = segment_anomalies(anomaly_scores)
    
    return segmented_result

3、Experiments

在这里插入图片描述

在这里插入图片描述

4、Conclusion

提出了BTF,一种 结合手工制作的3D表示(FPFH)和基于深度的颜色特征提取(PatchCore) 的方法。

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

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

相关文章

关于未知物检测设备和方法(测未知物成分含量)

未知物检测是一项涉及多个学科和技术的复杂工作,它对于新材料的研究、开发、生产以及质量控制具有重要意义。以下是一些常用的未知物检测方法和设备: 光谱分析:包括红外光谱(IR)、核磁共振(NMR)…

【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-2

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

无源码实现免登录功能

因项目要求需要对一个没有源代码的老旧系统实现免登录功能,系统采用前后端分离的方式部署,登录时前端调用后台的认证接口,认证接口返回token信息,然后将token以json的方式存储到cookie中,格式如下: 这里有…

10月1日星期二今日早报简报微语报早读

10月1日星期二,国庆节🇨🇳,农历八月廿九,早报#微语早读。 1、A股暴涨刷新多项历史纪录:两市成交总额近2.6万亿元,创指涨逾15%; 2、文旅部:常年不超过最高承载量的旅游景…

Docker 安装 Citus 单节点集群:全面指南与详细操作

Docker 安装 Citus 单节点集群:全面指南与详细操作 文章目录 Docker 安装 Citus 单节点集群:全面指南与详细操作一 服务器资源二 部署图三 安装部署1 创建网络2 运行脚本1)docker-compose.cituscd1.yml2)docker-compose.cituswk1.…

zi2zi-chain: 中国书法字体图片生成和字体制作的一站式开发

在zi2zi-pytorch的基础上,做了进一步的修复和完善。本项目github对应网址为https://github.com/not-bald-owl/zi2zi-chain/tree/master。 修复部分为:针对预处理部分的函数弃用、生僻字无法生成、训练和推理部分单卡支持改为多卡并行、以及扩展从本地的…

过去8年,编程语言的流行度发生了哪些变化?PHP下降,Objective-C已过时

前天有一个汇总9个不同排名数据的“地表最强”编程语言排行榜,为了更好地理解语言流行度的变化,作者将2016年的类似调查结果与2024年的数据进行了比较。 虽然2016年的调查只包含6个排名,但它仍然提供了宝贵的参考数据。 我们来看看详细的情…

C++之String类(下)

片头 嗨喽~ 我们又见面啦,在上一篇C之String类(上)中,我们对string类的函数有了一个初步的认识,这一篇中,我们将继续学习string类的相关知识。准备好了吗?咱们开始咯~ 二、标准库中的string类 …

业务封装与映射 -- AMP BMP GMP

概述 不同单板支持不同的封装模式,主要包括: AMP (Asynchronous Mapping Procedure,异步映射规程)BMP (Bit-synchronous Mapping Procedure,比特同步映射规程)GMP (Generic Mapping Procedure,通用映射规程) AMP/BMP&#xff1a…

Qt_绘图

目录 1、绘图核心类 2、QPainter类的使用 2.1 绘制线段 2.2 绘制矩形 2.3 绘制圆形 2.4 绘制文本 3、QPen类的使用 3.1 使用画笔 4、QBrush类的使用 4.1 使用画刷 5、绘制图片 5.1 测试QPixmap 5.1.1 图片移动 5.1.2 图标缩小 5.1.3 旋转图片 5.1.4 将…

【逐行注释】MATLAB下的粒子滤波代码(三维状态与观测,可直接复制粘贴到MATLAB上面运行)

文章目录 程序设计1. 介绍2. 系统模型3. 算法步骤源代码(直接复制到MATLAB上面可以运行)运行结果程序设计 1. 介绍 粒子滤波(Particle Filter, PF)是一种基于贝叶斯理论的递归估计方法,广泛用于动态系统状态的估计和跟踪。该方法通过一组粒子(即假设的状态)及其权重来…

【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-1

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

5款惊艳全网的AI写作论文神器!从此告别写作烦恼!

在当今的学术研究和写作领域,撰写高质量的论文是一项挑战性的任务。幸运的是,随着人工智能技术的发展,AI论文写作工具逐渐成为帮助学者和学生提高写作效率的重要工具。这些工具不仅能够提高写作效率,还能帮助研究者生成高质量的论…

ECharts 快速使用

最终效果 使用介绍 echarts图表的绘制,大体分为三步: 根据 DOM实例,通过 echarts.init方法,生成 echarts实例构建 options配置对象,整个echarts的样式,皆有该对象决定最后通过实例.setOption方法&#xf…

【测试-BUG篇】软件测试的BUG知识你了解多少呢?

文章目录 1. 软件测试的生命周期2. BUG3. BUG的生命周期4. 与开发人员起争执怎么办 1. 软件测试的生命周期 🍎软件测试 贯穿整个软件的生命周期; 🍎软件测试的生命周期是指测试流程; ①需求分析 用户角度:软件需求是…

C++:一文搞懂友元类(friend class)

C的友元(friend)是个很重要的概念,好些朋友对此却很迷惑,本文将对友元类(friend class)详细讲解,一文搞懂。 友元的特性: 1、使用friend修饰的友元类可以访问本类的私有成员(priva…

中国电信解锁万亿参数大模型:TeleAI的创新与突破

首个由万卡集群训练出来的万亿参数大模型,已被一家央企解锁。 具体而言,为了推动纯国产人工智能的探索,带来这条新路径的正是中国电信人工智能研究院(TeleAI)。 该研究院由中国电信集团的CTO、首席科学家兼院长李学龙…

坡印廷矢量(也叫功率流密度,对面积积分就是功率)

坡印廷矢量在静电场,静磁场,恒定电流的电场,和时变电磁场中的表达式不同。 我们看时变电磁场的坡印廷矢量 坡印廷矢量就等于这个,其中的电场和磁场是实数表示的 坡印廷矢量用复数形式的场求 这里的E和H是复数表示的场&#xff0…

电影票接口api对接有哪些优势?

一、业务功能拓展方面的优势 多平台整合可以整合多个影院票务系统,通过一个接口获取众多影院的信息,包括影院、影厅、座位、影片、场次、日期及票价等信息,方便在自己的应用程序中展示这些信息,从而实现电影票的在线预订、支付和…

人工智能价格战——如何降低成本让人工智能更易于普及

十年前,开发人工智能 (AI) 是只有大公司和资金充足的研究机构才能负担得起的事情。必要的硬件、软件和数据存储成本非常高。但从那时起,情况发生了很大变化。一切始于 2012 年的 AlexNet,这是一种深度学习模型,展示了神经网络的真…