Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection
1、Background
早期的点云异常检测(PCD)表示是手工制作的,依赖于启发式设计。随着深度学习的发展,最近的方法采用了基于学习的PCD特征。尽管与基线相比有相当大的改进,但其性能仍然很差。BTF揭示了PCD异常检测中特征描述性的重要性。与预期相反,结果表明,经典的手工制作PCD描述符优于基于学习的预训练特征。
BTF将这种现象归因于目标对象和预训练数据集之间的域分布差距,导致预训练的PCD特征转移能力低。然而,尽管经典的手工特征取得了令人印象深刻的性能,但它们仅限于使用局部结构信息,无法访问全局语义上下文。由于全局语义上下文在检测语义异常中至关重要,将其与手工特征的几何建模能力结合起来可能会带来改进。
本研究提出了一种统一的PCD表示方法,即互补的伪多模态特征(CPMF),以充分利用PCD中的局部几何结构和全局语义上下文。该方法基于手工制作的PCD描述符,进一步利用生成的伪2D模态中的描述性预训练2D神经网络来丰富PCD描述符的语义内容。
在技术上,对于3D模态特征提取,CPMF利用经典的手工描述符来捕获PCD中的精确局部几何信息。进一步结合了2D模态特征提取模块,该模块利用预训练的2D神经网络的高级描述能力来开发和补充PCD中隐藏的语义信息。具体来说,该模块利用3D到2D的投影和渲染将原始3D PCD转换为包含多视图2D图像的伪2D模态。然后该模块利用预训练的2D神经网络来提取这些多视图图像的强大语义特征图。随后,在2D到3D的对齐和聚合过程中,根据各个视图中的2D-3D投影对应关系,将特征图映射到点状特征。这些单视图点状特征进一步聚合以获得最终的2D模态点状特征,这些特征来自不同视图的线索。
提取的3D和2D模态特征具有高度的互补性,因为1) 3D手工特征擅长描述局部结构,但不能利用全局语义信息。2) 2D预训练网络包含来自大规模图像数据集的深刻知识,并且能够捕获语义属性,但无法精确表示局部结构。因此,CPMF开发了一个聚合模块来融合3D和2D模态特征,并获得了包含全局语义和局部几何信息的特征。
2、Method
CPMF算法框架:
- 3D模态特征提取器
- 使用手工制作的描述符(如FPFH)直接从3D点云中提取局部几何信息。这些描述符能够捕捉点云中每个点周围的局部结构特征。
- 2D模态特征提取器
- 3D到2D投影和渲染:将原始的3D点云从不同角度投影并渲染成多视图2D图像。
- 预训练特征图提取:利用预训练的2D神经网络(如ResNet)提取这些多视图图像的特征图。
- 2D到3D对齐和聚合:将2D特征图映射回3D空间,得到点状的2D模态特征。然后,对不同视图的点状特征进行聚合,得到最终的2D模态特征。
- 特征聚合
- 将3D模态特征和2D模态特征进行归一化处理,然后进行融合,得到互补的伪多模态特征。这样,特征既包含了局部的几何信息,又包含了全局的语义信息。
- 异常检测
- 使用PatchCore方法,通过最近邻搜索来计算测试点云的异常分数。
- 训练阶段:使用正常点云数据构建记忆库,存储训练数据的CPMF特征。
- 测试阶段:提取测试点云的CPMF特征,并通过与记忆库中的特征进行比较,计算每个点的异常分数。
pseudo-code
# 输入:点云数据 PCD
# 输出:异常分数列表 anomaly_scores
# 步骤1:预处理点云数据
def preprocess(PCD):
# 去除背景和噪声
cleaned_PCD = remove_background_and_noise(PCD)
return cleaned_PCD
# 步骤2:3D模态特征提取
def extract_3D_features(PCD):
# 使用手工制作的3D点云描述符提取特征
return handcrafted_descriptors(PCD)
# 步骤3:2D模态特征提取
def extract_2D_features(PCD):
# 渲染点云为多视图2D图像
multiview_images = render_multiview(PCD)
# 使用预训练的2D神经网络提取语义特征
semantic_features = extract_semantic_features(multiview_images)
return semantic_features
# 步骤4:特征聚合
def aggregate_features(geo_features, semantic_features):
# 归一化并聚合3D和2D模态特征
normalized_geo_features = normalize(geo_features)
normalized_semantic_features = normalize(semantic_features)
# 融合特征
aggregated_features = concatenate(normalized_geo_features, normalized_semantic_features)
return aggregated_features
# 步骤5:异常检测
def anomaly_detection(aggregated_features, memory_bank):
# 使用最近邻搜索计算异常分数
anomaly_scores = calculate_anomaly_scores(aggregated_features, memory_bank)
return anomaly_scores
# 主流程
def CPMF(PCD):
cleaned_PCD = preprocess(PCD)
# 提取3D和2D模态特征
geo_features = extract_3D_features(cleaned_PCD)
semantic_features = extract_2D_features(cleaned_PCD)
# 聚合特征
aggregated_features = aggregate_features(geo_features, semantic_features)
# 训练阶段:构建记忆库
memory_bank = build_memory_bank(geo_features)
# 测试阶段:异常检测
anomaly_scores = anomaly_detection(aggregated_features, memory_bank)
return anomaly_scores
# 使用CPMF方法进行异常检测
anomaly_scores = CPMF(raw_PCD_data)
3、Experiments
🐂🐎。。。
4、Conclusion
提出了互补的伪多模态特征(CPMF)的点云异常检测方法,CPMF结合了复杂的手工制作的PCD描述符和最近开发的预训练2D神经网络的描述性特征,以全面描述PCD数据。
具体来说,手工制作的PCD描述符直接应用于3D模态以提取局部几何信息。为了利用预训练的2D神经网络,CPMF开发了一个2D模态特征提取模块。该模块通过3D到2D的投影和渲染将PCD数据渲染成多视图图像。然后它使用预训练的2D神经网络提取图像特征图,这些特征图随后被对齐和聚合以获得最终的2D模态特征,包含丰富的全局语义。由3D和2D模态特征组成的CPMF特征利用了局部几何和全局语义线索,提供了更好的描述性。