Towards Generalizable 3D Anomaly Detection via Relational Inconsistency Modeling
Organizations: Kyung Hee University
Abstract
3D anomaly detection (3DAD) aims to identify defective regions in point cloud data, serving as a critical component in industrial inspection systems. Existing methods are normality-centered -- learning the distribution of normal samples and treating deviations as anomalies -- without explicitly modeling what constitutes a defect. This leads to ambiguous decision boundaries with increased false positives and negatives, particularly in unified and cross-domain settings where diverse normal distributions further blur the boundaries. We propose a relational inconsistency modeling framework that characterizes defects as violations of geometric consistency among neighboring structures. Our approach learns category-agnostic defect cues through pseudo-anomalies designed as controlled relational violations, instantiated by two key modules: Edge-aware Graph Refinement (EGR) for encoding geometric relationships among local regions, and Cluster-Deviation Modeling (CDM) for identifying regions that are relationally incompatible within their structural peer group. Extensive experiments on Anomaly-ShapeNet and Real3D-AD demonstrate consistent improvements over prior state-of-the-art methods in both in-domain and cross-domain settings, validating the effectiveness of learning an explicit, relation-based defect criterion for 3D anomaly detection. Project page: https://visualsciencelab-khu.github.io/GRIM_project/.
Figures & tables
| Method | Anomaly-ShapeNet | Real3D-AD | |||
|---|---|---|---|---|---|
| O-AUROC( ) | P-AUROC( ) | O-AUROC( ) | P-AUROC( ) | ||
| Category- Specific | BTF(Raw) ({\small{\color[rgb]{0.2344,0.2734,0.4492}\text{CVPR'23}}}) Horwitz and Hoshen (2023) | 49.3 | 55.0 | 63.5 | 57.1 |
| BTF(FPFH) Horwitz and Hoshen (2023) | 52.8 | 62.8 | 60.3 | 73.3 | |
| M3DM ({\small{\color[rgb]{0.2344,0.2734,0.4492}\text{CVPR'23}}}) Wang et al. (2023) | 55.2 | 61.6 | 59.4 | 62.0 | |
| PatchCore(FPFH) ({\small{\color[rgb]{0.2344,0.2734,0.4492}\text{CVPR'22}}}) Roth et al. (2022) | 56.8 | 58.0 | 59.3 | 68.2 | |
| PatchCore(PointMAE) Roth et al. (2022) | 56.2 | 57.7 | 59.4 | 62.0 | |
| Method | Anomaly-ShapeNet Real3D-AD | Real3D-AD Anomaly-ShapeNet | ||||||
|---|---|---|---|---|---|---|---|---|
| O-AUROC( ) | ( ) | P-AUROC( ) | ( ) | O-AUROC( ) | ( ) | P-AUROC( ) | ( ) | |
| MC3D-AD | 55.4 (78.2) | 22.8 | 38.3 (76.8) | 38.5 | 78.3 (84.2) | 5.9 | 48.8 (75.9) | 27.1 |
| GRIM (Ours) | 83.6 (87.2) | 3.6 | 89.6 (91.3) | 1.7 | 91.7 (97.4) | 5.7 | 78.9 (94.5) | 15.6 |
| EGR | CDM | In-Domain (A A) | Cross-Domain (A R) | ||
|---|---|---|---|---|---|
| O-R( ) | P-R( ) | O-R( ) | P-R( ) | ||
| 89.5 | 58.1 | 56.9 | 42.8 | ||
| ✓ | 94.3 | 86.4 | 59.4 | 53.0 | |
| ✓ | 96.6 | 79.8 | 62.3 | 64.9 | |
| ✓ | ✓ | 97.4 | 94.5 | 83.6 | 89.6 |
| Bulge | Sink | Hole | In-Domain (A A) | Cross-Domain (A R) | ||
| O-R( ) | P-R( ) | O-R( ) | P-R( ) | |||
| ✓ | 96.9 | 94.1 | 77.8 | 88.0 | ||
| ✓ | 98.5 | 95.9 | 81.2 | 81.8 | ||
| ✓ | 95.9 | 93.9 | 78.4 | 86.8 | ||
| ✓ | ✓ | 96.9 | 94.1 | 81.8 | 89.0 | |
| ✓ | ✓ | 98.6 | 96.0 | 80.3 | 87.9 | |
| In-Domain (A A) | Cross-Domain (A R) | |||
| O-AUROC( ) | P-AUROC( ) | O-AUROC( ) | P-AUROC( ) | |
| 16 | 96.1 | 89.9 | 63.8 | 73.3 |
| 32 | 96.8 | 92.5 | 68.4 | 79.0 |
| 64 | 97.4 | 94.5 | 83.6 | 89.6 |
| In-Domain (A A) | Cross-Domain (A R) | |||
| O-AUROC( ) | P-AUROC( ) | O-AUROC( ) | P-AUROC( ) | |
| 0.5 | 96.5 | 93.1 | 81.6 | 88.4 |
| 1.0 | 97.3 | 94.5 | 81.8 | 86.7 |
| 1.5 | 97.4 | 94.5 | 83.6 | 89.6 |
| Method | AIT | FPS | #Params | FLOPs | |
|---|---|---|---|---|---|
| Category- Specific | PO3AD | 0.31s | 3.23 | 433.6M | 399 |
| PASDF | 0.92s | 1.09 | 15.9M | 624 | |
| Reg2Inv | 0.78s | 1.28 | 85.3M | 815 | |
| Unified | MC3D-AD | 0.84s | 1.19 | 34.2M | 417 |
| GRIM (Ours) | 0.35s | 2.86 | 34.0M | 371 | |
| Metric | Bulge | Concavity | Hole | Broken | Bending | Scratch |
|---|---|---|---|---|---|---|
| O-AUROC( ) | 96.1 | 95.9 | 97.0 | 96.9 | 96.6 | 97.7 |
| P-AUROC( ) | 94.2 | 94.6 | 93.3 | 93.8 | 94.8 | 95.3 |
| Training pseudo-anomalies | O-AUROC | P-AUROC |
|---|---|---|
| Hole | 87.1 | 89.2 |
| Bulge, Sink, Hole | 87.2 | 91.3 |
| Configuration | In-Domain ( ) | Cross-Domain ( ) | ||
|---|---|---|---|---|
| O-AUROC | P-AUROC | O-AUROC | P-AUROC | |
| Full CDM | 97.4 | 94.5 | 83.6 | 89.6 |
| w/o | 96.6 | 92.1 | 79.3 | 84.1 |
| w/o deviation emb. | 94.9 | 88.7 | 68.5 | 66.8 |
| w/o both | 94.3 | 86.4 | 59.4 | 53.0 |
| Real3D-AD | Anomaly-ShapeNet | |||
|---|---|---|---|---|
| Method | O-AUROC | P-AUROC | O-AUROC | P-AUROC |
| PO3AD (C) | 76.5 | 65.0 | 83.9 | 89.8 |
| PO3AD (U) | 54.7 | 62.2 | 72.3 | 75.1 |
| PASDF (C) | 80.2 | 74.5 | 90.0 | 89.7 |
| PASDF (U) | 64.7 | 58.4 | 77.5 | 73.6 |
| Method | O-AUROC | P-AUROC |
|---|---|---|
| PO3AD (U) | 52.2 | 48.7 |
| PASDF (U) | 50.8 | 43.4 |
| Ours | 83.6 | 89.6 |
| O-AUROC( ) | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | ashtray0 | bag0 | bottle0 | bottle1 | bottle3 | bowl0 | bowl1 | bowl2 | bowl3 | bowl4 | bowl5 | bucket0 | bucket1 | cap0 | |
| Category- Specific | BTF(Raw) | 57.8 | 41.0 | 59.7 | 51.0 | 56.8 | 56.4 | 26.4 | 52.5 | 38.5 | 66.4 | 41.7 | 61.7 | 32.1 | 66.8 |
| BTF(FPFH) | 42.0 | 54.6 | 34.4 | 54.6 | 32.2 | 50.9 | 66.8 | 51.0 | 49.0 | 60.9 | 69.9 | 40.1 | 63.3 | 61.8 | |
| M3DM | 57.7 | 53.7 | 57.4 | 63.7 | 54.1 | 63.4 | 66.3 | 68.4 | 61.7 | 46.4 | 40.9 | 30.9 | 50.1 | 55.7 | |
| PatchCore(FPFH) | 58.7 | 57.1 | 60.4 | 66.7 | 57.2 | 50.4 | 63.9 | 61.5 | 53.7 | 49.4 | 55.8 | 46.9 | 55.1 | 58.0 | |
| PatchCore(PointMAE) | 59.1 | 60.1 | 51.3 | 60.1 | 65.0 | 52.3 | 62.9 | 45.8 | 57.9 | 50.1 | 59.3 | 59.3 | 56.1 | 58.9 | |
| P-AUROC( ) | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | ashtray0 | bag0 | bottle0 | bottle1 | bottle3 | bowl0 | bowl1 | bowl2 | bowl3 | bowl4 | bowl5 | bucket0 | bucket1 | |
| Category- Specific | BTF(Raw) | 51.2 | 43.0 | 55.1 | 49.1 | 72.0 | 52.4 | 46.4 | 42.6 | 68.5 | 56.3 | 51.7 | 61.7 | 68.6 |
| BTF(FPFH) | 62.4 | 74.6 | 64.1 | 54.9 | 62.2 | 71.0 | 76.8 | 51.8 | 59.0 | 67.9 | 69.9 | 40.1 | 63.3 | |
| M3DM | 57.7 | 63.7 | 66.3 | 63.7 | 53.2 | 65.8 | 66.3 | 69.4 | 65.7 | 62.4 | 48.9 | 69.8 | 69.9 | |
| PatchCore(FPFH) | 59.7 | 57.4 | 65.4 | 68.7 | 51.2 | 52.4 | 53.1 | 62.5 | 32.7 | 72.0 | 35.8 | 45.9 | 57.1 | |
| PatchCore(PointMAE) | 49.5 | 67.4 | 55.3 | 60.6 | 65.3 | 52.7 | 52.4 | 51.5 | 58.1 | 50.1 | 56.2 | 58.6 | 57.4 | |
| O-AUROC( ) | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | Airplane | Car | Candybar | Chicken | Diamond | Duck | Fish | Gemstone | Seahorse | Shell | Starfish | Toffees | Mean | |
| Category- Specific | BTF(Raw) | 73.0 | 64.7 | 53.9 | 78.9 | 70.7 | 69.1 | 60.2 | 68.6 | 59.6 | 39.6 | 53.0 | 70.3 | 63.5 |
| BTF(FPFH) | 52.0 | 56.0 | 63.0 | 43.2 | 54.5 | 78.4 | 54.9 | 64.8 | 77.9 | 75.4 | 57.5 | 46.2 | 60.3 | |
| M3DM | 43.4 | 54.1 | 55.2 | 68.3 | 60.2 | 43.3 | 54.0 | 64.4 | 49.5 | 69.4 | 55.1 | 45.0 | 59.4 | |
| PatchCore(FPFH) | 88.2 | 59.0 | 54.1 | 83.7 | 57.4 | 54.6 | 67.5 | 37.0 | 50.5 | 58.9 | 44.1 | 56.5 | 59.3 | |
| PatchCore(PointMAE) | 72.6 | 49.8 | 66.3 | 82.7 | 78.3 | 48.9 | 63.0 | 37.4 | 53.9 | 50.1 | 51.9 | 58.5 | 59.4 | |
| P-AUROC( ) | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | Airplane | Car | Candybar | Chicken | Diamond | Duck | Fish | Gemstone | Seahorse | Shell | Starfish | Toffees | Mean | |
| Category- Specific | BTF(Raw) | 56.4 | 64.7 | 73.5 | 60.9 | 56.3 | 60.1 | 51.4 | 59.7 | 52.0 | 48.9 | 39.2 | 62.3 | 57.1 |
| BTF(FPFH) | 73.8 | 70.8 | 86.4 | 73.5 | 88.2 | 87.5 | 70.9 | 89.1 | 51.2 | 57.1 | 50.1 | 81.5 | 73.3 | |
| M3DM | 54.7 | 60.2 | 67.9 | 67.8 | 60.8 | 66.7 | 60.6 | 67.4 | 56.0 | 73.8 | 53.2 | 68.2 | 62.0 | |
| PatchCore(FPFH) | 56.2 | 75.4 | 78.0 | 42.9 | 82.8 | 26.4 | 82.9 | 91.0 | 73.9 | 73.9 | 60.6 | 74.7 | 68.2 | |
| PatchCore(PointMAE) | 56.9 | 60.9 | 62.7 | 72.9 | 71.8 | 52.8 | 71.7 | 44.4 | 63.3 | 70.9 | 58.0 | 58.0 | 62.0 | |
| O-AUROC( ) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | Airplane | Car | Candybar | Chicken | Diamond | Duck | Fish | Gemstone | Seahorse | Shell | Starfish | Toffees | Mean |
| MC3D-AD | 42.8 | 48.2 | 58.8 | 50.5 | 67.0 | 63.3 | 49.5 | 57.1 | 57.8 | 59.4 | 65.6 | 45.4 | 55.4 |
| GRIM (Ours) | 78.0 | 70.2 | 76.4 | 81.2 | 96.2 | 85.9 | 81.6 | 81.0 | 92.8 | 97.1 | 88.0 | 74.6 | 83.6 |
| P-AUROC( ) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | Airplane | Car | Candybar | Chicken | Diamond | Duck | Fish | Gemstone | Seahorse | Shell | Starfish | Toffees | Mean |
| MC3D-AD | 38.5 | 25.0 | 32.1 | 44.1 | 37.4 | 36.5 | 35.9 | 41.2 | 36.3 | 53.8 | 50.1 | 29.1 | 38.3 |
| GRIM (Ours) | 76.3 | 87.0 | 92.0 | 84.6 | 93.9 | 90.1 | 95.2 | 92.2 | 86.1 | 97.3 | 89.6 | 91.3 | 89.6 |
| O-AUROC( ) | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | ashtray0 | bag0 | bottle0 | bottle1 | bottle3 | bowl0 | bowl1 | bowl2 | bowl3 | bowl4 | bowl5 | bucket0 | bucket1 | cap0 | cap3 | cap4 | cap5 | cup0 | cup1 | eraser0 |
| MC3D-AD | 62.9 | 68.1 | 77.6 | 80.0 | 78.1 | 97.8 | 73.7 | 75.2 | 74.1 | 78.5 | 76.1 | 74.6 | 75.2 | 61.9 | 89.8 | 87.0 | 80.4 | 74.8 | 86.2 | 80.0 |
| GRIM (Ours) | 96.2 | 79.0 | 85.7 | 82.8 | 99.7 | 97.0 | 91.1 | 100.0 | 93.7 | 91.5 | 95.4 | 94.0 | 85.1 | 87.0 | 100.0 | 100.0 | 95.4 | 91.0 | 91.4 | 80.0 |
| P-AUROC( ) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | ashtray0 | bag0 | bottle0 | bottle1 | bottle3 | bowl0 | bowl1 | bowl2 | bowl3 | bowl4 | bowl5 | bucket0 | bucket1 |
| MC3D-AD | 48.6 | 51.3 | 56.2 | 62.7 | 48.5 | 49.5 | 43.4 | 48.6 | 43.1 | 50.3 | 43.6 | 55.3 | 47.3 |
| GRIM (Ours) | 82.1 | 85.6 | 86.5 | 78.6 | 84.9 | 75.6 | 61.7 | 84.6 | 77.0 | 79.3 | 81.6 | 77.1 | 80.8 |
| O-AUPR( ) | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | ashtray0 | bag0 | bottle0 | bottle1 | bottle3 | bowl0 | bowl1 | bowl2 | bowl3 | bowl4 | bowl5 | bucket0 | bucket1 | |
| Category- Specific | BTF(Raw) | 57.8 | 45.8 | 46.6 | 57.3 | 54.3 | 58.8 | 46.4 | 57.6 | 65.4 | 60.1 | 61.5 | 65.2 | 62.0 |
| BTF(FPFH) | 65.1 | 55.1 | 64.4 | 62.5 | 60.2 | 57.6 | 64.8 | 51.5 | 49.9 | 63.2 | 69.9 | 48.3 | 64.8 | |
| M3DM | 63.2 | 64.2 | 76.3 | 67.4 | 45.1 | 52.5 | 51.5 | 63.0 | 63.5 | 57.1 | 60.1 | 60.9 | 50.7 | |
| PatchCore(FPFH) | 44.5 | 60.8 | 61.5 | 67.7 | 57.9 | 54.8 | 54.5 | 61.1 | 62.0 | 57.5 | 54.1 | 60.4 | 56.5 | |
| PatchCore(PointMAE) | 67.9 | 60.1 | 54.5 | 64.5 | 65.1 | 56.2 | 61.1 | 45.6 | 55.6 | 60.1 | 58.5 | 54.1 | 64.2 | |