Home

Awesome

PWC

CPR

Official PyTorch implementation of CPR

Datasets

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

Installation

pytorch

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

pip install -r requirements.txt

generate foreground and global retrieval result

python tools/generate_foreground.py
python tools/generate_retrieval.py

Training

generate synthetic data

python tools/generate_synthetic_data.py -fd log/foreground_mvtec_DenseNet_features.denseblock1_320

bash train.sh

Testing

python test.py -fd log/foreground_mvtec_DenseNet_features.denseblock1_320/ --checkpoints weights/{category}.pth

Pretrained Checkpoints

Download pretrained checkpoints here and put the checkpoints under <project_dir>/weights/.

Baidu Netdisk: https://pan.baidu.com/s/1FTE4b2G8nVZt4lUyaP-kIQ?pwd=ky7j

Acknowledgement

We borrow some codes from PatchCore, MemSeg and SuperPoint

Citation

@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}
}