Hanxi Li, Jianfei Hu, Bo Li, Hao Chen, Yongbin Zheng, Chunhua Shen
In this work, by re-examining the "matching" nature of Anomaly Detection (AD), we propose a new AD framework that simultaneously enjoys new records of AD accuracy and dramatically high running speed. In this framework, the anomaly detection problem is solved via a cascade patch retrieval procedure that retrieves the nearest neighbors for each test image patch in a coarse-to-fine fashion. Given a test sample, the top-K most similar training images are first selected based on a robust histogram matching process. Secondly, the nearest neighbor of each test patch is retrieved over the similar geometrical locations on those "global nearest neighbors", by using a carefully trained local metric. Finally, the anomaly score of each test image patch is calculated based on the distance to its "local nearest neighbor" and the "non-background" probability. The proposed method is termed "Cascade Patch Retrieval" (CPR) in this work. Different from the conventional patch-matching-based AD algorithms, CPR selects proper "targets" (reference images and locations) before "shooting" (patch-matching). On the well-acknowledged MVTec AD, BTAD and MVTec-3D AD datasets, the proposed algorithm consistently outperforms all the comparing SOTA methods by remarkable margins, measured by various AD metrics. Furthermore, CPR is extremely efficient. It runs at the speed of 113 FPS with the standard setting while its simplified version only requires less than 1 ms to process an image at the cost of a trivial accuracy drop. The code of CPR is available at https://github.com/flyinghu123/CPR.
| Task | Dataset | Metric | Value | Model |
|---|---|---|---|---|
| Anomaly Detection | MVTec 3D-AD (RGB) | Detection AUROC | 88.5 | CPR |
| Anomaly Detection | MVTec 3D-AD (RGB) | Segmentation AP | 57.8 | CPR |
| Anomaly Detection | MVTec 3D-AD (RGB) | Segmentation AUPRO | 96.9 | CPR |
| Anomaly Detection | MVTec 3D-AD (RGB) | Segmentation AUROC | 99.1 | CPR |
| Anomaly Detection | BTAD | Detection AUROC | 94.8 | CPR |
| Anomaly Detection | BTAD | Segmentation AP | 70.3 | CPR |
| Anomaly Detection | BTAD | Segmentation AUPRO | 85.1 | CPR |
| Anomaly Detection | BTAD | Segmentation AUROC | 98.4 | CPR |
| Anomaly Detection | MVTec AD | Detection AUROC | 99.7 | CPR |
| Anomaly Detection | MVTec AD | FPS | 113 | CPR |
| Anomaly Detection | MVTec AD | Segmentation AP | 82.7 | CPR |
| Anomaly Detection | MVTec AD | Segmentation AUPRO | 97.8 | CPR |
| Anomaly Detection | MVTec AD | Segmentation AUROC | 99.2 | CPR |
| Anomaly Detection | MVTec AD | Detection AUROC | 99.7 | CPR-fast |
| Anomaly Detection | MVTec AD | FPS | 245 | CPR-fast |
| Anomaly Detection | MVTec AD | Segmentation AP | 82.3 | CPR-fast |
| Anomaly Detection | MVTec AD | Segmentation AUPRO | 97.7 | CPR-fast |
| Anomaly Detection | MVTec AD | Segmentation AUROC | 99.2 | CPR-fast |
| Anomaly Detection | MVTec AD | Detection AUROC | 99.4 | CPR-faster |
| Anomaly Detection | MVTec AD | FPS | 478 | CPR-faster |
| Anomaly Detection | MVTec AD | Segmentation AP | 80.6 | CPR-faster |
| Anomaly Detection | MVTec AD | Segmentation AUPRO | 97.3 | CPR-faster |
| Anomaly Detection | MVTec AD | Segmentation AUROC | 99 | CPR-faster |
| Anomaly Detection | MVTec AD | FPS | 1016 | CPR-faster(TensorRT) |
| Anomaly Detection | MVTec AD | FPS | 362 | CPR-fast(TensorRT) |
| Anomaly Detection | MVTec AD | FPS | 130 | CPR(TensorRT) |
| Anomaly Detection | BTAD | Detection AUROC | 98.3 | CPR |
| Anomaly Detection | BTAD | Segmentation AP | 84 | CPR |
| Anomaly Detection | BTAD | Segmentation AUPRO | 91.4 | CPR |
| Anomaly Detection | BTAD | Segmentation AUROC | 99.1 | CPR |
| Anomaly Detection | MVTec AD | Detection AUROC | 99.7 | CPR |
| Anomaly Detection | MVTec AD | Segmentation AP | 86 | CPR |
| Anomaly Detection | MVTec AD | Segmentation AUPRO | 98.3 | CPR |
| Anomaly Detection | MVTec AD | Segmentation AUROC | 99.6 | CPR |