《Multimodal Industrial Anomaly Detection via Hybrid Fusion》论文学习及代码复现

 代码:nomewang/M3DM (github.com)

原文:[2303.00601] Multimodal Industrial Anomaly Detection via Hybrid Fusion (arxiv.org)

数据集示意:

本文提出了一种新的混合融合的多模态异常检测方法M3DM,

背景

基于2D的工业异常检测已经得到了广泛的讨论研究,而基于3D点云和RGB图像的多模态工业异常检测仍然有许多未涉足的领域,现有的多模态工业缺陷检测方法直接将多模态特征连接起来,导致不同特征之间存在干扰,影响检测性能。本文提出的一种新的混合多模态异常检测方法

技术现状

工程场景目前缺陷样本较少,大多数工业异常检测都是基于无监督的方法。除了2D图像给的颜色信息,3D的形状信息也十分重要。

2D工业异常检测分类:

1、基于重建的方法(不适用于多模态)

2、基于预训练特征提取器的方法:将提取到的特征映射到正态分布,然后将分布外的特征作为异常。

包括

规范化基于流的方法,使用可逆变换直接构造正态分布;

基于记忆库的方法,存储一些代表性特征来隐式的构建特征分布。

存在问题:直接对多模态特征进行拼接,当特征维度高时,多模态特征之间的干扰是剧烈的,导致性能下降

贡献

1、提出一种新的混合特征融合多模态工业异常检测方法M3DM

2、提出具有patch-wise contrastive loss的 Unsupervised Feature Fusion模块

3、提出利用多个内存库进行决策的Decision Layer Fusion模块,

4、提出Point Feature Alignment操作,将point transformer 特征对齐到2D平面。

结构模块

1、PFA(点特征对齐):通过插值和投影操作将 Point Group特征转化为平面特征,PFS是最远点采样、Fpt是预训练的Point Transformer;

2、UFF(无监督特征融合):将点特征和图像特征融合在一起,补丁对比损失Lcon、Frgb是 VIT、Xrgb和Xpt是MLP层,σ 是单个全连接层。

Patch-wise contrastive loss:鼓励来自同一位置的不同模态的特征具有更多的对应信息,而不同位置的特征具有更少的对应信息。

3、DLP(决策层融合):将多模态信息和多个记忆库相结合,并使用2个可学习模块Da和Ds进行检测与分割,其中Mrgb、Mfs、Mpt是记忆库, Φ和ψ是单个记忆库检测和分割的得分函数、P是记忆库构建算法。(记忆库参考PatchCore)

代码复现(权重参考源代码)

git clone https://github.com/nomewang/M3DM.git
pip install -r requirement.txt
pip install ninja
# install knn_cuda
pip install --upgrade https://github.com/unlimblue/KNN_CUDA/releases/download/0.2/KNN_CUDA-0.2-py3-none-any.whl
# install pointnet2_ops_lib
pip install "git+http://github.com/erikwijmans/Pointnet2_PyTorch.git#egg=pointnet2_ops&subdirectory=pointnet2_ops_lib"
数据下载后(一定要一次性跑完)
python utils/preprocessing.py datasets/mvtec3d/
下载权重放入文件夹 /checkpoints
source /etc/network_turbo # 切换学术资源加速
unset http_proxy && unset https_proxy # 关闭学术资源加速
mkdir -p datasets/patch_lib 
#开始训练
python3 main.py \
--method_name DINO+Point_MAE \
--memory_bank multiple \
--rgb_backbone_name vit_base_patch8_224_dino \
--xyz_backbone_name Point_MAE \
--save_feature 
(注意需要较大磁盘空间)

最终文件结构目录如下:

完整环境如下
Package                        Version
------------------------------ ------------
absl-py                        1.0.0
addict                         2.4.0
ansi2html                      1.8.0
anyio                          3.4.0
argon2-cffi                    21.1.0
asciitree                      0.3.3
attrs                          21.2.0
Babel                          2.9.1
backcall                       0.2.0
bleach                         4.1.0
blinker                        1.6.3
brotlipy                       0.7.0
cachetools                     4.2.4
certifi                        2021.5.30
cffi                           1.14.6
chardet                        4.0.0
click                          8.1.7
comm                           0.1.4
conda                          4.10.3
conda-package-handling         1.7.3
ConfigArgParse                 1.7
cryptography                   3.4.7
cycler                         0.11.0
dash                           2.14.1
dash-core-components           2.0.0
dash-html-components           2.0.0
dash-table                     5.0.0
debugpy                        1.5.1
decorator                      5.1.0
defusedxml                     0.7.1
entrypoints                    0.3
fasteners                      0.19
fastjsonschema                 2.18.1
filelock                       3.13.1
flask                          3.0.0
fonttools                      4.28.2
fsspec                         2023.10.0
google-auth                    2.3.3
google-auth-oauthlib           0.4.6
grpcio                         1.42.0
huggingface-hub                0.18.0
idna                           2.10
imagecodecs                    2023.3.16
imageio                        2.31.6
importlib-metadata             4.8.2
importlib-resources            5.4.0
ipykernel                      6.5.1
ipython                        7.29.0
ipython-genutils               0.2.0
ipywidgets                     8.1.1
itsdangerous                   2.1.2
jedi                           0.18.1
Jinja2                         3.1.2
joblib                         1.3.2
json5                          0.9.6
jsonschema                     4.2.1
jupyter-client                 7.1.0
jupyter-core                   4.9.1
jupyter-server                 1.12.0
jupyterlab                     3.2.4
jupyterlab-language-pack-zh-CN 3.2.post2
jupyterlab-pygments            0.1.2
jupyterlab-server              2.8.2
jupyterlab-widgets             3.0.9
kiwisolver                     1.3.2
KNN-CUDA                       0.2
kornia                         0.7.0
lazy-loader                    0.3
lxml                           4.9.3
Markdown                       3.3.6
MarkupSafe                     2.1.3
matplotlib                     3.5.0
matplotlib-inline              0.1.3
mistune                        0.8.4
nbclassic                      0.3.4
nbclient                       0.5.9
nbconvert                      6.3.0
nbformat                       5.7.0
nest-asyncio                   1.5.1
networkx                       3.1
ninja                          1.11.1.1
notebook                       6.4.6
numcodecs                      0.12.1
numpy                          1.21.4
oauthlib                       3.1.1
open3d                         0.17.0
opencv-python                  4.8.1.78
packaging                      21.3
pandas                         2.0.3
pandocfilters                  1.5.0
parso                          0.8.2
pexpect                        4.8.0
pickleshare                    0.7.5
Pillow                         10.0.1
pip                            21.1.3
plotly                         5.18.0
pointnet2-ops                  3.0.0
prometheus-client              0.12.0
prompt-toolkit                 3.0.22
protobuf                       3.19.1
ptyprocess                     0.7.0
pyasn1                         0.4.8
pyasn1-modules                 0.2.8
pycosat                        0.6.3
pycparser                      2.20
Pygments                       2.10.0
pyOpenSSL                      20.0.1
pyparsing                      3.0.6
pyquaternion                   0.9.9
pyrsistent                     0.18.0
PySocks                        1.7.1
python-dateutil                2.8.2
pytz                           2021.3
PyWavelets                     1.4.1
PyYAML                         6.0.1
pyzmq                          22.3.0
requests                       2.25.1
requests-oauthlib              1.3.0
retrying                       1.3.4
rsa                            4.8
ruamel-yaml-conda              0.15.100
safetensors                    0.4.0
scikit-image                   0.21.0
scikit-learn                   1.3.2
scipy                          1.10.1
Send2Trash                     1.8.0
setuptools                     59.5.0
setuptools-scm                 6.3.2
six                            1.16.0
sniffio                        1.2.0
supervisor                     4.2.2
tenacity                       8.2.3
tensorboard                    2.7.0
tensorboard-data-server        0.6.1
tensorboard-plugin-wit         1.8.0
terminado                      0.12.1
testpath                       0.5.0
threadpoolctl                  3.2.0
tifffile                       2023.7.4
timm                           0.9.8
tomli                          1.2.2
torch                          1.10.0+cu113
torchvision                    0.11.1+cu113
tornado                        6.1
tqdm                           4.61.2
traitlets                      5.1.1
typing-extensions              4.8.0
tzdata                         2023.3
urllib3                        1.26.6
wcwidth                        0.2.5
webencodings                   0.5.1
websocket-client               1.2.1
werkzeug                       3.0.1
wget                           3.2
wheel                          0.36.2
widgetsnbextension             4.0.9
zarr                           2.16.1
zipp                           3.6.0

训练过程内存显存占用

权重推理结果:

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 49
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值