Multimodal Industrial Anomaly Detection by Crossmodal Feature Mapping (CVPR 2024)在TITAN上曲折复现-笔记

参考文献

wandb快速上手、使用心得(超好用的Tensorboard高替品)

按给出的 requirements.txt建立(失败)

创建环境conda create -n zgp_crosspy311 python=3.10

网络(能连网省略)

(zgp_crosspy311) ~ cd /home/cszx/PySocks
python setup.py install
python D:\ssh-reverse-socket-master\socket5_proxy.py --ssh_cmd “cszx@172.29.6.20 -p 22” --socket5_port 8080

安装wandb

pip install wandb -i https://pypi.tuna.tsinghua.edu.cn/simple

注册

wandb官网
在这里插入图片描述

登录wandb login
wandb: Logging into wandb.ai. (Learn how to deploy a W&B server locally: https://wandb.me/wandb-server)
wandb: You can find your API key in your browser here: https://wandb.ai/authorize
wandb: Paste an API key from your profile and hit enter, or press ctrl+c to quit: 
wandb: Appending key for api.wandb.ai to your netrc file: /home/cszx/.netrc

可以了

pip install -r requirements.txt

注释掉重复的
在这里插入图片描述

Could not find a version that satisfies the requirement open3d==0.18.0 (from versions: none)
取消版本指定,放到最后
报错

ERROR: Ignored the following versions that require a different python version: 1.6.2 Requires-Python >=3.7,<3.10; 1.6.3 Requires-Python >=3.7,<3.10; 1.7.0 Requires-Python >=3.7,<3.10; 1.7.1 Requires-Python >=3.7,<3.10
ERROR: Could not find a version that satisfies the requirement open3d (from versions: none)
ERROR: No matching distribution found for open3d

删除环境,重建py3.9(误判,没什么用)

conda deactivate
conda remove --name zgp_crosspy311 --all
conda create -n zgp_crosspy39 python=3.9

再次pip install -r requirements.txt,又报错需要Python >=3.10

ERROR: Ignored the following versions that require a different python version: 1.14.0 Requires-Python >=3.10; 1.14.0rc1 Requires-Python >=3.10; 1.14.0rc2 Requires-Python >=3.10; 1.14.1 Requires-Python >=3.10; 2.1.0 Requires-Python >=3.10; 2.1.0rc1 Requires-Python >=3.10; 2.1.1 Requires-Python >=3.10
ERROR: Could not find a version that satisfies the requirement open3d==0.18.0 (from versions: none)
ERROR: No matching distribution found for open3d==0.18.0

醉了,取消对 open3d版本指定,再次pip install -r requirements.txt
还是一样
发现open3d只在预处理代码中使用,放弃安装open3d

Installing collected packages: scikit_learn, pandas, matplotlib, huggingface_hub, GitPython, wandb, torchvision, timm
Successfully installed GitPython-3.1.43 huggingface_hub-0.25.0 matplotlib-3.8.3 pandas-1.5.3 scikit_learn-1.2.1 timm-1.0.3 torchvision-0.14.1 wandb-0.15.5

pip install “git+git://github.com/erikwijmans/Pointnet2_PyTorch.git#egg=pointnet2_ops&subdirectory=pointnet2_ops_lib”

报错

× git clone --quiet git://github.com/erikwijmans/Pointnet2_PyTorch.git /tmp/pip-install-9tay989u/pointnet2-ops_f7333ff17ba744cf9583c9079b60f683 did not run successfully.
│ exit code: 128
╰─> See above for output.
改为pip install “git+https://github.com/erikwijmans/Pointnet2_PyTorch.git#egg=pointnet2_ops&subdirectory=pointnet2_ops_lib”

报错

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [10 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-gexgid8e/pointnet2-ops_880964657f81407eb85e9d7551af7160/pointnet2_ops_lib/setup.py", line 6, in <module>
          from torch.utils.cpp_extension import BuildExtension, CUDAExtension
        File "/home/cszx/miniconda3/envs/zgp_crosspy39/lib/python3.9/site-packages/torch/utils/__init__.py", line 4, in <module>
          from .throughput_benchmark import ThroughputBenchmark
        File "/home/cszx/miniconda3/envs/zgp_crosspy39/lib/python3.9/site-packages/torch/utils/throughput_benchmark.py", line 2, in <module>
          import torch._C
      ModuleNotFoundError: No module named 'torch._C'
      [end of output]
      ```
离线安装python3 -m pip install /home/cszx/c1/zgp/crossfm/Pointnet2_PyTorch-master/Pointnet2_PyTorch-master/pointnet2_ops_lib
也一样

直接运行
报错

Traceback (most recent call last):
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 4, in <module>
    from torchvision import transforms
  File "/home/cszx/miniconda3/envs/zgp_crosspy39/lib/python3.9/site-packages/torchvision/__init__.py", line 5, in <module>
    from torchvision import datasets, io, models, ops, transforms, utils
  File "/home/cszx/miniconda3/envs/zgp_crosspy39/lib/python3.9/site-packages/torchvision/datasets/__init__.py", line 1, in <module>
    from ._optical_flow import FlyingChairs, FlyingThings3D, HD1K, KittiFlow, Sintel
  File "/home/cszx/miniconda3/envs/zgp_crosspy39/lib/python3.9/site-packages/torchvision/datasets/_optical_flow.py", line 11, in <module>
    from ..io.image import _read_png_16
  File "/home/cszx/miniconda3/envs/zgp_crosspy39/lib/python3.9/site-packages/torchvision/io/__init__.py", line 5, in <module>
    from ..utils import _log_api_usage_once
  File "/home/cszx/miniconda3/envs/zgp_crosspy39/lib/python3.9/site-packages/torchvision/utils.py", line 23, in <module>
    @torch.no_grad()
AttributeError: module 'torch' has no attribute 'no_grad'

不太行

鉴于作者致谢了M3DM,放弃安装其 requirements.txt环境,改为使用M3DM环境

conda create -n zgp_cross_fm3dm38 --clone zgp_m3dm

安装wandb

pip install wandb -i https://pypi.tuna.tsinghua.edu.cn/simple

wandb login --relogin

后续会提示链接地址

设置远程编译路径

在这里插入图片描述

如果无法设置,先从Develop处设置好连接

cfm_inference.py 测试,生成anomaly maps

设置参数
–dataset_path:数据集根目录/home/cszx/c1/zgp/mvtec3d
–checkpoint_folder: 原checkpoints/checkpoints_CFM_mvtec.
–class_name:原
–epochs_no: 50改为5
–batch_size: 4
–qualitative_folder: 建立results/qualitatives_mvtec文件夹
–quantitative_folder: 建立results/quantitatives_mvtec文件夹
–visualize_plot: False
–produce_qualitatives: False
Checkpoints放好
在这里插入图片描述
修改02_eval_mvtec.sh
250轮改为2

sh 02_eval_mvtec.sh
报错

sh 02_eval_mvtec.sh
Traceback (most recent call last):
  File "/home/cszx/miniconda3/envs/zgp_m3dm/lib/python3.8/site-packages/PySocks-1.7.1-py3.8.egg/socks.py", line 809, in connect
  File "/home/cszx/miniconda3/envs/zgp_m3dm/lib/python3.8/site-packages/PySocks-1.7.1-py3.8.egg/socks.py", line 443, in _negotiate_SOCKS5
  File "/home/cszx/miniconda3/envs/zgp_m3dm/lib/python3.8/site-packages/PySocks-1.7.1-py3.8.egg/socks.py", line 524, in _SOCKS5_request
  File "/home/cszx/miniconda3/envs/zgp_m3dm/lib/python3.8/site-packages/PySocks-1.7.1-py3.8.egg/socks.py", line 276, in _readall
  File "/home/cszx/miniconda3/envs/zgp_m3dm/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

直接运行
报错

Traceback (most recent call last):
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 225, in <module>
    infer_CFM(args)
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 33, in infer_CFM
    test_loader = get_data_loader("test", class_name = args.class_name, img_size = 224, dataset_path = args.dataset_path)
  File "/home/cszx/c1/zgp/crossfm/models/dataset.py", line 173, in get_data_loader
    dataset = TestDataset(class_name = class_name, img_size = img_size, dataset_path = dataset_path)
  File "/home/cszx/c1/zgp/crossfm/models/dataset.py", line 98, in __init__
    super().__init__(split = "test", class_name = class_name, img_size = img_size, dataset_path = dataset_path)
  File "/home/cszx/c1/zgp/crossfm/models/dataset.py", line 48, in __init__
    self.img_path = os.path.join(dataset_path, self.cls, split)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/posixpath.py", line 90, in join
    genericpath._check_arg_types('join', a, *p)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/genericpath.py", line 152, in _check_arg_types
    raise TypeError(f'{funcname}() argument must be str, bytes, or '
TypeError: join() argument must be str, bytes, or os.PathLike object, not 'NoneType'
ssh://cszx@172.29.6.20:22/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/bin/python3.8 -u /home/cszx/c1/zgp/crossfm/cfm_inference.py
Traceback (most recent call last):
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 225, in <module>
    infer_CFM(args)
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 33, in infer_CFM
    test_loader = get_data_loader("test", class_name = args.class_name, img_size = 224, dataset_path = args.dataset_path)
  File "/home/cszx/c1/zgp/crossfm/models/dataset.py", line 173, in get_data_loader
    dataset = TestDataset(class_name = class_name, img_size = img_size, dataset_path = dataset_path)
  File "/home/cszx/c1/zgp/crossfm/models/dataset.py", line 98, in __init__
    super().__init__(split = "test", class_name = class_name, img_size = img_size, dataset_path = dataset_path)
  File "/home/cszx/c1/zgp/crossfm/models/dataset.py", line 48, in __init__
    self.img_path = os.path.join(dataset_path, self.cls, split)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/posixpath.py", line 90, in join
    genericpath._check_arg_types('join', a, *p)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/genericpath.py", line 152, in _check_arg_types
    raise TypeError(f'{funcname}() argument must be str, bytes, or '
TypeError: join() argument must be str, bytes, or os.PathLike object, not 'NoneType'

参数问题
数据集路径改正
将class_name由None改为parser.add_argument(‘–class_name’, default = “bagel”,
报错

ssh://cszx@172.29.6.20:22/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/bin/python3.8 -u /home/cszx/c1/zgp/crossfm/cfm_inference.py
Traceback (most recent call last):
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/connection.py", line 198, in _new_conn
    sock = connection.create_connection(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/util/connection.py", line 60, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/connectionpool.py", line 793, in urlopen
    response = self._make_request(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/connectionpool.py", line 491, in _make_request
    raise new_e
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/connectionpool.py", line 467, in _make_request
    self._validate_conn(conn)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/connectionpool.py", line 1099, in _validate_conn
    conn.connect()
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/connection.py", line 616, in connect
    self.sock = sock = self._new_conn()
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/connection.py", line 205, in _new_conn
    raise NameResolutionError(self.host, self, e) from e
urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0x7f0eeeb4cc10>: Failed to resolve 'huggingface.co' ([Errno -2] Name or service not known)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/requests/adapters.py", line 589, in send
    resp = conn.urlopen(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/connectionpool.py", line 847, in urlopen
    retries = retries.increment(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/urllib3/util/retry.py", line 515, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /timm/vit_base_patch8_224.dino/resolve/main/pytorch_model.bin (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f0eeeb4cc10>: Failed to resolve 'huggingface.co' ([Errno -2] Name or service not known)"))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/file_download.py", line 1722, in _get_metadata_or_catch_error
    metadata = get_hf_file_metadata(url=url, proxies=proxies, timeout=etag_timeout, headers=headers)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/utils/_validators.py", line 114, in _inner_fn
    return fn(*args, **kwargs)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/file_download.py", line 1645, in get_hf_file_metadata
    r = _request_wrapper(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/file_download.py", line 372, in _request_wrapper
    response = _request_wrapper(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/file_download.py", line 395, in _request_wrapper
    response = get_session().request(method=method, url=url, **params)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/utils/_http.py", line 66, in send
    return super().send(request, *args, **kwargs)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/requests/adapters.py", line 622, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: (MaxRetryError('HTTPSConnectionPool(host=\'huggingface.co\', port=443): Max retries exceeded with url: /timm/vit_base_patch8_224.dino/resolve/main/pytorch_model.bin (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f0eeeb4cc10>: Failed to resolve \'huggingface.co\' ([Errno -2] Name or service not known)"))'), '(Request ID: 41b259f8-838f-467f-88c7-74491b49fe8a)')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 226, in <module>
    infer_CFM(args)
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 37, in infer_CFM
    feature_extractor = MultimodalFeatures()
  File "/home/cszx/c1/zgp/crossfm/models/features.py", line 20, in __init__
    self.deep_feature_extractor = FeatureExtractors(device = self.device, 
  File "/home/cszx/c1/zgp/crossfm/models/full_models.py", line 24, in __init__
    self.rgb_backbone = timm.create_model(model_name = rgb_backbone_name, pretrained = True, **kwargs)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/_factory.py", line 117, in create_model
    model = create_fn(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/vision_transformer.py", line 2066, in vit_base_patch8_224
    model = _create_vision_transformer('vit_base_patch8_224', pretrained=pretrained, **dict(model_args, **kwargs))
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/vision_transformer.py", line 1946, in _create_vision_transformer
    return build_model_with_cfg(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/_builder.py", line 418, in build_model_with_cfg
    load_pretrained(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/_builder.py", line 196, in load_pretrained
    state_dict = load_state_dict_from_hf(pretrained_loc)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/_hub.py", line 188, in load_state_dict_from_hf
    cached_file = hf_hub_download(hf_model_id, filename=filename, revision=hf_revision)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/utils/_validators.py", line 114, in _inner_fn
    return fn(*args, **kwargs)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/file_download.py", line 1221, in hf_hub_download
    return _hf_hub_download_to_cache_dir(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/file_download.py", line 1325, in _hf_hub_download_to_cache_dir
    _raise_on_head_call_error(head_call_error, force_download, local_files_only)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/huggingface_hub/file_download.py", line 1826, in _raise_on_head_call_error
    raise LocalEntryNotFoundError(
huggingface_hub.utils._errors.LocalEntryNotFoundError: An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on.

Process finished with exit code 1
设置网络后仍找不到
 raise LocalEntryNotFoundError(
huggingface_hub.utils._errors.LocalEntryNotFoundError: An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on.

改为使用下载的

    #self.rgb_backbone = timm.create_model(model_name = rgb_backbone_name, pretrained = True, **kwargs)
    self.rgb_backbone = timm.create_model(model_name=rgb_backbone_name, pretrained=True, pretrained_cfg_overlay=dict( file='dino_vitbase8_pretrain.pth'),
                                       **kwargs)

No such file or directory: ‘./checkpoints/checkpoints_CFM_mvtec/bagel/CFM_2Dto3D_bagel_5ep_4bs.pth’

改为
parser.add_argument(‘–epochs_no’, default = 50, type = int,
help = ‘Number of epochs to train the CFMs.’)
成功了

ssh://cszx@172.29.6.20:22/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/bin/python3.8 -u /home/cszx/c1/zgp/crossfm/cfm_inference.py
Extracting feature from class: bagel.: 100%|██| 110/110 [00:19<00:00,  5.68it/s]
Metrics for class bagel with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.980   |   0.942   |   0.885  |   0.473  |   0.997 |   0.988

Process finished with exit code 0

三次相同

批量运行

No such file or directory: ‘./checkpoints/checkpoints_CFM_mvtec/carrot/CFM_2Dto3D_carrot_2ep_4bs.pth’
设置epochs=50
batch_size=4

 sh 02_eval_mvtec.sh
Extracting feature from class: bagel.: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 110/110 [00:19<00:00,  5.72it/s]
Metrics for class bagel with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.980   |   0.942   |   0.885  |   0.473  |   0.997 |   0.988
Extracting feature from class: cable_gland.: 100%|█████████████████████████████████████████████████████████████████████████████████████| 108/108 [00:15<00:00,  7.09it/s]
Metrics for class cable_gland with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.954   |   0.866   |   0.765  |   0.368  |   0.986 |   0.871
Extracting feature from class: carrot.: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 159/159 [00:20<00:00,  7.67it/s]
Metrics for class carrot with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.982   |   0.946   |   0.893  |   0.486  |   0.998 |   0.942
Extracting feature from class: cookie.: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 131/131 [00:22<00:00,  5.73it/s]
Metrics for class cookie with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.946   |   0.901   |   0.845  |   0.477  |   0.972 |   0.990
Extracting feature from class: dowel.: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 130/130 [00:16<00:00,  7.66it/s]
Metrics for class dowel with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.930   |   0.800   |   0.699  |   0.347  |   0.978 |   0.815
Extracting feature from class: foam.: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:17<00:00,  5.82it/s]
Metrics for class foam with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.937   |   0.830   |   0.723  |   0.342  |   0.984 |   0.795
Extracting feature from class: peach.: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 132/132 [00:19<00:00,  6.84it/s]
Metrics for class peach with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.980   |   0.940   |   0.880  |   0.461  |   0.998 |   0.939
Extracting feature from class: potato.: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 114/114 [00:15<00:00,  7.47it/s]
Metrics for class potato with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.982   |   0.946   |   0.892  |   0.480  |   0.997 |   0.896
Extracting feature from class: rope.: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 101/101 [00:13<00:00,  7.57it/s]
Metrics for class rope with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.952   |   0.859   |   0.757  |   0.356  |   0.994 |   0.591
Extracting feature from class: tire.: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 112/112 [00:15<00:00,  7.24it/s]
Metrics for class tire with 50ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
  0.969   |   0.906   |   0.819  |   0.392  |   0.991 |   0.703

设置epochs=250
batch_size=4
python /home/cszx/c1/zgp/crossfm/cfm_inference.py

报错

No checkpoint found at 'checkpoints/dino_vitbase8_pretrain.pth'
Traceback (most recent call last):
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 226, in <module>
    infer_CFM(args)
  File "/home/cszx/c1/zgp/crossfm/cfm_inference.py", line 37, in infer_CFM
    feature_extractor = MultimodalFeatures()
  File "/home/cszx/c1/zgp/crossfm/models/features.py", line 20, in __init__
    self.deep_feature_extractor = FeatureExtractors(device = self.device, 
  File "/home/cszx/c1/zgp/crossfm/models/full_models.py", line 25, in __init__
    self.rgb_backbone = timm.create_model(model_name=rgb_backbone_name, pretrained=True, pretrained_cfg_overlay=dict( file='checkpoints/dino_vitbase8_pretrain.pth'),
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/_factory.py", line 117, in create_model
    model = create_fn(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/vision_transformer.py", line 2066, in vit_base_patch8_224
    model = _create_vision_transformer('vit_base_patch8_224', pretrained=pretrained, **dict(model_args, **kwargs))
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/vision_transformer.py", line 1946, in _create_vision_transformer
    return build_model_with_cfg(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/_builder.py", line 418, in build_model_with_cfg
    load_pretrained(
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/_builder.py", line 168, in load_pretrained
    state_dict = load_state_dict(pretrained_loc)
  File "/home/cszx/miniconda3/envs/zgp_cross_fm3dm38/lib/python3.8/site-packages/timm/models/_helpers.py", line 59, in load_state_dict
    raise FileNotFoundError()
FileNotFoundError

cd /home/cszx/c1/zgp/crossfm
(zgp_cross_fm3dm38) ~/c1/zgp/crossfm python /home/cszx/c1/zgp/crossfm/cfm_inference.py
Metrics for class bagel with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.981 | 0.942 | 0.885 | 0.476 | 0.997 | 0.992

sh 02_eval_mvtec.sh
Extracting feature from class: bagel.: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 110/110 [00:19<00:00, 5.77it/s]
Metrics for class bagel with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.981 | 0.942 | 0.885 | 0.476 | 0.997 | 0.992
Extracting feature from class: cable_gland.: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 108/108 [00:15<00:00, 7.19it/s]
Metrics for class cable_gland with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.958 | 0.878 | 0.785 | 0.385 | 0.987 | 0.896
Extracting feature from class: carrot.: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 159/159 [00:20<00:00, 7.74it/s]
Metrics for class carrot with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.982 | 0.946 | 0.893 | 0.484 | 0.998 | 0.947
Extracting feature from class: cookie.: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 131/131 [00:22<00:00, 5.72it/s]
Metrics for class cookie with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.946 | 0.902 | 0.847 | 0.485 | 0.972 | 0.990
Extracting feature from class: dowel.: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 130/130 [00:16<00:00, 7.68it/s]
Metrics for class dowel with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.935 | 0.812 | 0.713 | 0.353 | 0.980 | 0.771
Extracting feature from class: foam.: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:17<00:00, 5.84it/s]
Metrics for class foam with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.936 | 0.827 | 0.725 | 0.342 | 0.984 | 0.796
Extracting feature from class: peach.: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 132/132 [00:19<00:00, 6.82it/s]
Metrics for class peach with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.980 | 0.941 | 0.883 | 0.464 | 0.998 | 0.944
Extracting feature from class: potato.: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 114/114 [00:15<00:00, 7.48it/s]
Metrics for class potato with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.982 | 0.947 | 0.894 | 0.483 | 0.998 | 0.913
Extracting feature from class: rope.: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 101/101 [00:13<00:00, 7.63it/s]
Metrics for class rope with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.946 | 0.843 | 0.737 | 0.339 | 0.992 | 0.637
Extracting feature from class: tire.: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 112/112 [00:15<00:00, 7.23it/s]
Metrics for class tire with 250ep_4bs
AUPRO@30% | AUPRO@10% | AUPRO@5% | AUPRO@1% | P-AUROC | I-AUROC
0.972 | 0.916 | 0.838 | 0.415 | 0.993 | 0.783

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值