Official PyTorch implementation of CPR
We use the MVTec AD dataset for experiments. And use DTD data set to simulate anomalous image.
The data directory is as follows:
data
├── dtd
│ ├── images
│ ├── imdb
│ └── labels
└── mvtec
├── bottle
│ ├── ground_truth
│ ├── license.txt
│ ├── readme.txt
│ ├── test
│ └── train
...
└── zipper
├── ground_truth
├── license.txt
├── readme.txt
├── test
└── train
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install -r requirements.txt
python tools/generate_foreground.py
python tools/generate_retrieval.py
generate synthetic data
python tools/generate_synthetic_data.py -fd log/foreground_mvtec_DenseNet_features.denseblock1_320
bash train.sh
python test.py -fd log/foreground_mvtec_DenseNet_features.denseblock1_320/ --checkpoints weights/{category}.pth
Download pretrained checkpoints here and put the checkpoints under <project_dir>/weights/.
Baidu Netdisk: https://pan.baidu.com/s/1FTE4b2G8nVZt4lUyaP-kIQ?pwd=ky7j
We borrow some codes from PatchCore, MemSeg and SuperPoint
@ARTICLE{10678861,
author={Li, Hanxi and Hu, Jianfei and Li, Bo and Chen, Hao and Zheng, Yongbin and Shen, Chunhua},
journal={IEEE Transactions on Image Processing},
title={Target Before Shooting: Accurate Anomaly Detection and Localization Under One Millisecond via Cascade Patch Retrieval},
year={2024},
volume={33},
number={},
pages={5606-5621},
keywords={Accuracy;Anomaly detection;Measurement;Standards;Prototypes;Image retrieval;Image reconstruction;Anomaly detection;image patch retrieval;metric learning},
doi={10.1109/TIP.2024.3448263}
}