
摘要
在本工作中,通过对异常检测(Anomaly Detection, AD)中“匹配”机制的本质重新审视,我们提出了一种全新的AD框架,该框架在保持异常检测精度达到新纪录的同时,实现了显著提升的运行速度。在该框架中,异常检测问题通过一种级联式图像块检索(patch retrieval)流程得以解决,该流程以粗到精的方式为每个测试图像块检索其最近邻样本。具体而言,给定一个测试样本,首先基于一种鲁棒的直方图匹配过程,从训练集中选出与之最相似的前K个图像(即“全局最近邻”)。随后,利用一个经过精心训练的局部度量(local metric),在这些“全局最近邻”图像中对应几何位置上,进一步检索每个测试图像块的最近邻(即“局部最近邻”)。最终,每个测试图像块的异常得分,根据其与“局部最近邻”的距离以及“非背景”概率进行综合计算。本文提出的该方法被命名为“级联图像块检索”(Cascade Patch Retrieval, CPR)。与传统的基于图像块匹配的AD算法不同,CPR在执行“匹配”(即“射击”)之前,先选择合适的“目标”(即参考图像及其对应位置),从而显著提升了匹配的效率与准确性。在广泛认可的MVTec AD、BTAD以及MVTec-3D AD数据集上,所提出的CPR算法在多种AD评估指标下,均显著优于所有对比的最先进(SOTA)方法。此外,CPR具有极高的运行效率:在标准配置下,其处理速度可达113 FPS;而其简化版本仅需不到1毫秒即可完成单张图像的处理,仅带来可忽略的精度损失。CPR的代码已开源,可访问 https://github.com/flyinghu123/CPR 获取。
代码仓库
flyinghu123/cpr
官方
pytorch
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| anomaly-detection-on-btad | CPR | Detection AUROC: 94.8 Segmentation AP: 70.3 Segmentation AUPRO: 85.1 Segmentation AUROC: 98.4 |
| anomaly-detection-on-mvtec-3d-ad-rgb | CPR | Detection AUROC: 88.5 Segmentation AP: 57.8 Segmentation AUPRO: 96.9 Segmentation AUROC: 99.1 |
| anomaly-detection-on-mvtec-ad | CPR-faster | Detection AUROC: 99.4 FPS: 478 Segmentation AP: 80.6 Segmentation AUPRO: 97.3 Segmentation AUROC: 99.0 |
| anomaly-detection-on-mvtec-ad | CPR-fast(TensorRT) | FPS: 362 |
| anomaly-detection-on-mvtec-ad | CPR(TensorRT) | FPS: 130 |
| anomaly-detection-on-mvtec-ad | CPR-fast | Detection AUROC: 99.7 FPS: 245 Segmentation AP: 82.3 Segmentation AUPRO: 97.7 Segmentation AUROC: 99.2 |
| anomaly-detection-on-mvtec-ad | CPR-faster(TensorRT) | FPS: 1016 |
| anomaly-detection-on-mvtec-ad | CPR | Detection AUROC: 99.7 FPS: 113 Segmentation AP: 82.7 Segmentation AUPRO: 97.8 Segmentation AUROC: 99.2 |
| supervised-anomaly-detection-on-btad | CPR | Detection AUROC: 98.3 Segmentation AP: 84.0 Segmentation AUPRO: 91.4 Segmentation AUROC: 99.1 |
| supervised-anomaly-detection-on-mvtec-ad | CPR | Detection AUROC: 99.7 Segmentation AP: 86.0 Segmentation AUPRO: 98.3 Segmentation AUROC: 99.6 |