Home

Awesome

Real3D-AD: A Dataset of Point Cloud Anomaly Detection

Jiaqi Liu*, Guoyang Xie*, Ruitao Chen*, Xinpeng Li, Jinbao Wang†, Yong Liu, Chengjie Wang, and Feng Zheng†

(* Equal contribution; † Corresponding authors)

Our paper has been accepted by NeurIPS 2023 Datasets & Benchmarks Track. [Paper]

Overview

This project aims to construct a new dataset of high-resolution 3D point clouds for anomaly detection tasks in real-world scenes.

Real3D-AD can be used for training and testing 3D anonmaly detection algorithms.

Note that different from RGB + Depth patterns, we only provide 3D point clouds for users.

Real3D-AD

<img src="./doc/real3d.png" width=900 alt="Real3D Dataset" align=center>

Summary

Real3D-AD comprises a total of 1,254 samples that are distributed across 12 distinct categories. These categories include Airplane, Car, Candybar, Chicken, Diamond, Duck, Fish, Gemstone, Seahorse, Shell, Starfish, and Toffees.

Download

Data preparation

data
├── airplane
    ├── train
        ├── 1_prototype.pcd
        ├── 2_prototype.pcd
        ...
    ├── test
        ├── 1_bulge.pcd
        ├── 2_sink.pcd
        ...
    ├── gt
        ├── 1_bulge.txt
        ├── 2_sink.txt
        ... 
├── car
...

Checkpoint preparation

BackbonePretrain Method
Point TransformerPoint-MAE
Point TransformerPoint-Bert

Dataset Statistic

SourceClassReal Size [mm] (length/width/height)TransparencyTrainingNum (good)TestNum (good)TestNum (defect)TotalNumTrainingPoints (min/max/mean)TestPoints (min/max/mean)AnomalyProportion Δ
1Airplane34.0/14.2/31.7Yes45050104383k/ 413k/ 400k168k/ 773k/351k1.17%
2Car35.0/29.0/12.5Yes45050104566k/1296k/1097k90k/ 149k/131k1.98%
3Candybar33.0/20.0/ 8.0Yes45050104339k/1183k/ 553k149k/ 180k/157k2.36%
4Chicken25.0/14.0/20.0No (white)45254110217k/1631k/1157k87k/1645k/356k4.46%
5Diamond29.0/29.0/18.7Yes450501041477k/2146k/1972k66k/ 84k/ 75k5.40%
6Duck30.0/22.2/29.4Yes45050104545k/2675k/1750k155k/ 784k/216k1.99%
7Fish37.7/24.0/ 4.0Yes45050104230k/ 251k/ 240k104k/ 117k/110k2.85%
8Gemstone22.5/18.8/17.0Yes45050104169k/1819k/ 835k43k/ 645k/104k2.06%
9Seahorse38.0/11.2/ 3.5Yes45050104189k/ 203k/ 194k74k/ 90k/ 83k4.57%
10Shell21.7/22.0/ 7.7Yes45248104280k/ 316k/ 295k110k/ 144k/125k2.25%
11Starfish27.4/27.4/ 4.8Yes45050104198k/ 209k/ 202k74k/ 116k/ 88k4.46%
12Toffees38.0/12.0/10.0Yes45050104178k/1001k/ 385k78k/ 97k/ 88k2.46%

(Δ: Mean proportion of abnormal point clouds in Test set)

Data Collection

<img src="./doc/instruments.png" width=300 alt="instruments" align=center> The PMAX-S130 optical system comprises a pair of lenses with low distortion properties, a high luminance LED, and a blue-ray filter. The blue light scanner is equipped with a lens filter that selectively allows only the blue light of a specific wavelength to pass through. The filter effectively screens the majority of blue light due to its relatively low concentration in both natural and artificial lighting. Nevertheless, using blue light-emitting light sources could pose a unique obstacle in this context. The image sensor can collect light using the lens aperture. Hence, the influence exerted by ambient light is vastly reduced. <img src="./doc/make_prototypes.png" width=900 alt="make prototype" align=center> Initially, the stationary object undergoes scanning while the turntable completes a full revolution of 360°, enabling the scanner to capture images of the various facets of the object. Subsequently, the object undergoes reversal, and the process of rotation and scanning is reiterated. Following the manual calibration of the front and back scanning outcomes, the algorithm performs a precise calibration of the stitching process. If there are any gaps in the stitching outcome, the scan stitching process is reiterated until the point cloud is rendered.

The anomalies pertaining to point clouds can be classified into two categories: incompleteness and redundancy. In the dataset, we named them bulge and sink. Besides, more samples are made by copying and cutting edges.

Annotation

The collected point clouds are annotated using CloudCompare software CloudCompare is a 3D point cloud (grid) editing and processing software. Originally, it was designed to directly compare dense three-dimensional point clouds. It relies on a specific octree structure and provides excellent performance for tasks such as point cloud comparison. The anotation process of point cloud is shown in the figure below.

<!-- ![image-20230605141032952](https://github.com/M-3LAB/H3D-AD/blob/main/doc/anotation.png) --> <img src="./doc/annotation.png" width=900 alt="Anotation phase" align=center>

Benchmark

We take BTF and M3DM as basic baseline methods, and improve baseline using PatchCore.

We choose AUROC and AUPU as metric for object level and point level anomaly detection.

Other methods on Real3D-AD

Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection [paper 2023][code] Towards Scalable 3D Anomaly Detection and Localization: A Benchmark via 3D Anomaly Synthesis and A Self-Supervised Learning Network [paper 2023][code]

Object AUROCPoint AUROCMax F1 PointPoint AP
airplane0.6320.6180.0230.010
candybar0.5180.8360.1350.064
car0.7180.7340.1070.050
chicken0.6400.5590.0710.031
diamond0.6400.7530.1490.074
duck0.5540.7190.0420.018
fish0.8400.9880.5820.559
gemstone0.3490.4490.0200.007
seahorse0.8430.9620.6150.636
shell0.3930.7250.0520.025
starfish0.5260.8000.2020.128
toffees0.8450.9590.4600.391
MEAN0.6250.7580.2050.166

Towards Scalable 3D Anomaly Detection and Localization: A Benchmark via 3D Anomaly Synthesis and A Self-Supervised Learning Network [paper][code]

The 3D anomaly detection performance when using 4 prototypes for training.

Object AUROCBTF_FPFHBTF_RawM3DM_PointMAEM3DM_PointBERTPatchCore+FPFHPatchCore+FPFH+rawPatchCore+PointMAEOur baseline
airplane0.7300.5200.4340.4070.8820.8480.7260.716
car0.6470.5600.5410.5060.5900.7770.4980.697
candybar0.7030.4620.4500.4420.5650.6260.5850.827
chicken0.7890.4320.6830.6730.8370.8530.8270.852
diamond0.7070.5450.6020.6270.5740.7840.7830.900
duck0.6910.7840.4330.4660.5460.6280.4890.584
fish0.6020.5490.5400.5560.6750.8370.6300.915
gemstone0.6860.6480.6440.6170.3700.3590.3740.417
seahorse0.5960.7790.4950.4940.5050.7670.5390.762
shell0.3960.7540.6940.5770.5890.6630.5010.583
starfish0.5300.5750.5510.5280.4410.4710.5190.506
toffees0.5390.6300.5520.5620.5410.5700.6630.685
Average0.6350.6030.5520.5380.5930.6820.5940.704
Object AUPRBTF_FPFHBTF_RawM3DM_PointMAEM3DM_PointBERTPatchCore+FPFHPatchCore+FPFH+rawPatchCore+PointMAEOur baseline
airplane0.6590.5060.4790.4970.8520.8070.7470.703
car0.6530.5230.5080.5170.6110.7660.5550.753
candybar0.6380.4900.4980.4800.5530.6110.5760.824
chicken0.8140.4640.7390.7160.8720.8850.8640.884
diamond0.6770.5350.6200.6610.5690.7670.8010.884
duck0.6200.7600.5330.5690.5060.5600.4880.588
fish0.6380.6330.5250.6280.6420.8440.7200.939
gemstone0.6030.5980.6630.6280.4110.4110.4440.454
seahorse0.5670.7930.5180.4910.5080.7630.5460.787
shell0.4340.7510.6160.6380.5730.5530.5900.646
starfish0.5570.5790.5730.5730.4910.4730.5610.491
toffees0.5050.7000.5930.5690.5060.5590.7080.721
Average0.6140.6110.5720.5810.5910.6670.6330.723
Point AUROCBTF_FPFHBTF_RawM3DM_PointMAEM3DM_PointBERTPatchCore+FPFHPatchCore+FPFH+rawPatchCore+PointMAEOur baseline
airplane0.7380.5640.5300.5230.4710.5560.5790.631
car0.7080.6470.6070.5930.6430.7400.6100.718
candybar0.8640.7350.6830.6820.6370.7490.6350.724
chicken0.6930.6080.7350.7900.6180.5580.6830.676
diamond0.8820.5630.6180.5940.7600.8540.7760.835
duck0.8750.6010.6780.6680.4300.6580.4390.503
fish0.7090.5140.6000.5890.4640.7810.7140.826
gemstone0.8910.5970.6540.6460.8300.5390.5140.545
seahorse0.5120.5200.5610.5740.5440.8080.6600.817
shell0.5710.4890.7480.7320.5960.7530.7250.811
starfish0.5010.3920.5550.5630.5220.6130.6410.617
toffees0.8150.6230.6790.6770.4110.5490.7270.759
Average0.7300.5710.6370.6360.5770.6800.6420.705
Point AUPRBTF_FPFHBTF_RawM3DM_PointMAEM3DM_PointBERTPatchCore+FPFHPatchCore+FPFH+rawPatchCore+PointMAEOur baseline
airplane0.0270.0120.0070.0070.0270.0160.0160.017
car0.0280.0140.0180.0170.0340.1600.0690.135
candybar0.1180.0250.0160.0160.1420.0920.0200.109
chicken0.0440.0490.3100.3770.0400.0450.0520.044
diamond0.2390.0320.0330.0380.2730.3630.1070.191
duck0.0680.0200.0110.0110.0550.0340.0080.010
fish0.0360.0170.0250.0390.0520.2660.2010.437
gemstone0.0750.0140.0180.0170.0930.0660.0080.016
seahorse0.0270.0310.0300.0280.0310.2910.0710.182
shell0.0180.0110.0220.0210.0310.0490.0430.065
starfish0.0340.0170.0400.0400.0370.0350.0460.039
toffees0.0550.0160.0210.0180.0400.0550.0550.067
Average0.0640.0220.0460.0520.0710.1230.0580.109
<!-- ### The 3D anomaly detection performance when using 8 prototypes for training. | Object AUROC | BTF_FPFH | BTF_Raw | M3DM_PointMAE | M3DM_PointBERT | PatchCore+FPFH | PatchCore+FPFH+raw | PatchCore+PointMAE | Our baseline | | ------------ | -------- | ----------- | ------------- | -------------- | -------------- | ------------------ | ------------------ | ------------ | | airplane | 0.714 | 0.518 | 0.408 | 0.377 | 0.873 | 0.843 | 0.691 | 0.744 | | car | 0.66 | 0.575 | 0.57 | 0.472 | 0.613 | 0.733 | 0.677 | 0.619 | | candybar | 0.701 | 0.485 | 0.432 | 0.449 | 0.562 | 0.642 | 0.487 | 0.793 | | chicken | 0.572 | 0.542 | 0.542 | 0.537 | 0.605 | 0.615 | 0.65 | 0.653 | | diamond | 0.689 | 0.585 | 0.59 | 0.614 | 0.680 | 0.820 | 0.729 | 0.789 | | duck | 0.731 | 0.469 | 0.428 | 0.482 | 0.523 | 0.595 | 0.543 | 0.638 | | fish | 0.546 | 0.396 | 0.558 | 0.566 | 0.674 | 0.819 | 0.644 | 0.880 | | gemstone | 0.658 | 0.514 | 0.575 | 0.547 | 0.363 | 0.377 | 0.41 | 0.450 | | seahorse | 0.571 | 0.685 | 0.458 | 0.531 | 0.482 | 0.768 | 0.516 | 0.765 | | shell | 0.433 | 0.746 | 0.641 | 0.457 | 0.631 | 0.639 | 0.506 | 0.588 | | starfish | 0.541 | 0.573 | 0.572 | 0.514 | 0.423 | 0.474 | 0.529 | 0.512 | | toffees | 0.567 | 0.513 | 0.531 | 0.515 | 0.563 | 0.558 | 0.64 | 0.700 | | Average | 0.615 | 0.550 | 0.525 | 0.505 | 0.583 | 0.657 | 0.585 | 0.678 | | Object AUPR | BTF_FPFH | BTF_Raw | M3DM_PointMAE | M3DM_PointBERT | PatchCore+FPFH | PatchCore+FPFH+raw | PatchCore+PointMAE | Our baseline | | ----------- | ----------- | ----------- | ------------- | -------------- | -------------- | ------------------ | ------------------ | ------------ | | airplane | 0.649 | 0.533 | 0.49 | 0.487 | 0.823 | 0.796 | 0.703 | 0.672 | | car | 0.685 | 0.528 | 0.521 | 0.486 | 0.597 | 0.711 | 0.601 | 0.65 | | candybar | 0.632 | 0.534 | 0.489 | 0.504 | 0.538 | 0.655 | 0.517 | 0.816 | | chicken | 0.581 | 0.543 | 0.539 | 0.565 | 0.598 | 0.626 | 0.643 | 0.645 | | diamond | 0.619 | 0.546 | 0.604 | 0.664 | 0.663 | 0.851 | 0.729 | 0.785 | | duck | 0.697 | 0.538 | 0.509 | 0.574 | 0.501 | 0.541 | 0.535 | 0.614 | | fish | 0.605 | 0.518 | 0.551 | 0.653 | 0.637 | 0.818 | 0.726 | 0.910 | | gemstone | 0.594 | 0.564 | 0.598 | 0.557 | 0.407 | 0.419 | 0.459 | 0.465 | | seahorse | 0.551 | 0.694 | 0.468 | 0.520 | 0.487 | 0.765 | 0.594 | 0.809 | | shell | 0.446 | 0.758 | 0.557 | 0.464 | 0.587 | 0.552 | 0.613 | 0.646 | | starfish | 0.558 | 0.591 | 0.582 | 0.566 | 0.475 | 0.469 | 0.541 | 0.510 | | toffees | 0.536 | 0.606 | 0.556 | 0.551 | 0.517 | 0.580 | 0.730 | 0.755 | | Average | 0.596 | 0.579 | 0.539 | 0.549 | 0.569 | 0.649 | 0.616 | 0.690 | | Point AUROC | BTF_FPFH | BTF_Raw | M3DM_PointMAE | M3DM_PointBERT | PatchCore+FPFH | PatchCore+FPFH+raw | PatchCore+PointMAE | Our baseline | | ----------- | -------- | ------- | ------------- | -------------- | -------------- | ------------------ | ------------------ | ------------ | | airplane | 0.74 | 0.561 | 0.545 | 0.506 | 0.403 | 0.536 | 0.561 | 0.627 | | car | 0.709 | 0.69 | 0.586 | 0.573 | 0.508 | 0.74 | 0.646 | 0.672 | | candybar | 0.864 | 0.629 | 0.668 | 0.583 | 0.604 | 0.742 | 0.595 | 0.667 | | chicken | 0.735 | 0.594 | 0.679 | 0.67 | 0.458 | 0.422 | 0.684 | 0.712 | | diamond | 0.884 | 0.56 | 0.625 | 0.606 | 0.572 | 0.78 | 0.675 | 0.731 | | duck | 0.876 | 0.499 | 0.655 | 0.639 | 0.316 | 0.54 | 0.503 | 0.565 | | fish | 0.705 | 0.518 | 0.585 | 0.589 | 0.738 | 0.772 | 0.727 | 0.797 | | gemstone | 0.892 | 0.632 | 0.696 | 0.692 | 0.783 | 0.382 | 0.564 | 0.551 | | seahorse | 0.510 | 0.517 | 0.587 | 0.568 | 0.537 | 0.714 | 0.600 | 0.776 | | shell | 0.570 | 0.461 | 0.74 | 0.722 | 0.609 | 0.767 | 0.728 | 0.784 | | starfish | 0.505 | 0.401 | 0.531 | 0.534 | 0.557 | 0.564 | 0.581 | 0.613 | | toffees | 0.815 | 0.574 | 0.633 | 0.668 | 0.754 | 0.808 | 0.707 | 0.729 | | Average | 0.734 | 0.553 | 0.628 | 0.613 | 0.570 | 0.647 | 0.631 | 0.685 | | Point AUPR | BTF_FPFH | BTF_Raw | M3DM_PointMAE | M3DM_PointBERT | PatchCore+FPFH | PatchCore+FPFH+raw | PatchCore+PointMAE | Our baseline | | ---------- | ----------- | ----------- | ------------- | -------------- | -------------- | ------------------ | ------------------ | ------------ | | airplane | 0.027 | 0.013 | 0.008 | 0.007 | 0.021 | 0.015 | 0.01 | 0.013 | | car | 0.029 | 0.022 | 0.013 | 0.013 | 0.027 | 0.146 | 0.019 | 0.123 | | candybar | 0.12 | 0.02 | 0.015 | 0.016 | 0.130 | 0.08 | 0.057 | 0.073 | | chicken | 0.075 | 0.048 | 0.048 | 0.047 | 0.043 | 0.04 | 0.064 | 0.075 | | diamond | 0.246 | 0.032 | 0.034 | 0.036 | 0.221 | 0.278 | 0.059 | 0.092 | | duck | 0.066 | 0.009 | 0.010 | 0.010 | 0.032 | 0.024 | 0.009 | 0.013 | | fish | 0.037 | 0.014 | 0.023 | 0.034 | 0.065 | 0.246 | 0.224 | 0.387 | | gemstone | 0.077 | 0.012 | 0.016 | 0.016 | 0.090 | 0.039 | 0.034 | 0.015 | | seahorse | 0.027 | 0.023 | 0.03 | 0.027 | 0.030 | 0.131 | 0.067 | 0.214 | | shell | 0.017 | 0.009 | 0.022 | 0.021 | 0.032 | 0.044 | 0.039 | 0.042 | | starfish | 0.036 | 0.017 | 0.036 | 0.043 | 0.040 | 0.030 | 0.049 | 0.048 | | toffees | 0.052 | 0.017 | 0.021 | 0.021 | 0.065 | 0.068 | 0.070 | 0.072 | | Average | 0.067 | 0.020 | 0.023 | 0.024 | 0.066 | 0.095 | 0.058 | 0.097 | ### The 3D anomaly detection performance when using 16 prototypes for training. | Object AUROC | BTF_FPFH | BTF_Raw | M3DM_PointMAE | M3DM_PointBERT | PatchCore+FPFH | PatchCore+FPFH+raw | PatchCore+PointMAE | Our baseline | | ------------ | ----------- | ----------- | ------------- | -------------- | -------------- | ------------------ | ------------------ | ------------ | | airplane | 0.719 | 0.506 | 0.44 | 0.411 | 0.878 | 0.842 | 0.718 | 0.753 | | car | 0.624 | 0.55 | 0.563 | 0.507 | 0.615 | 0.71 | 0.579 | 0.659 | | candybar | 0.609 | 0.46 | 0.462 | 0.471 | 0.533 | 0.641 | 0.502 | 0.836 | | chicken | 0.598 | 0.525 | 0.559 | 0.567 | 0.602 | 0.632 | 0.624 | 0.631 | | diamond | 0.657 | 0.584 | 0.583 | 0.633 | 0.519 | 0.811 | 0.765 | 0.926 | | duck | 0.701 | 0.542 | 0.424 | 0.498 | 0.525 | 0.549 | 0.579 | 0.654 | | fish | 0.604 | 0.397 | 0.570 | 0.549 | 0.678 | 0.808 | 0.599 | 0.845 | | gemstone | 0.669 | 0.53 | 0.567 | 0.572 | 0.385 | 0.394 | 0.426 | 0.429 | | seahorse | 0.600 | 0.64 | 0.453 | 0.499 | 0.536 | 0.736 | 0.512 | 0.771 | | shell | 0.369 | 0.481 | 0.627 | 0.495 | 0.605 | 0.629 | 0.522 | 0.534 | | starfish | 0.509 | 0.537 | 0.529 | 0.464 | 0.478 | 0.460 | 0.543 | 0.516 | | toffees | 0.5 | 0.573 | 0.522 | 0.499 | 0.620 | 0.638 | 0.651 | 0.702 | | Average | 0.597 | 0.527 | 0.525 | 0.514 | 0.581 | 0.654 | 0.585 | 0.688 | | Object AUPR | BTF_FPFH | BTF_Raw | M3DM_PointMAE | M3DM_PointBERT | PatchCore+FPFH | PatchCore+FPFH+raw | PatchCore+PointMAE | Our baseline | | ----------- | ----------- | ----------- | ------------- | -------------- | -------------- | ------------------ | ------------------ | ------------ | | airplane | 0.703 | 0.545 | 0.504 | 0.492 | 0.844 | 0.773 | 0.752 | 0.714 | | car | 0.641 | 0.545 | 0.512 | 0.519 | 0.604 | 0.707 | 0.604 | 0.69 | | candybar | 0.616 | 0.53 | 0.528 | 0.513 | 0.497 | 0.642 | 0.53 | 0.806 | | chicken | 0.592 | 0.536 | 0.55 | 0.561 | 0.601 | 0.633 | 0.606 | 0.621 | | diamond | 0.588 | 0.547 | 0.568 | 0.700 | 0.525 | 0.827 | 0.798 | 0.938 | | duck | 0.674 | 0.564 | 0.509 | 0.599 | 0.511 | 0.510 | 0.538 | 0.618 | | fish | 0.638 | 0.442 | 0.594 | 0.630 | 0.648 | 0.826 | 0.6985 | 0.973 | | gemstone | 0.682 | 0.571 | 0.584 | 0.568 | 0.416 | 0.424 | 0.454 | 0.457 | | seahorse | 0.584 | 0.641 | 0.467 | 0.495 | 0.517 | 0.749 | 0.541 | 0.800 | | shell | 0.429 | 0.504 | 0.554 | 0.515 | 0.585 | 0.551 | 0.591 | 0.582 | | starfish | 0.530 | 0.528 | 0.593 | 0.563 | 0.486 | 0.476 | 0.593 | 0.490 | | toffees | 0.488 | 0.643 | 0.590 | 0.498 | 0.560 | 0.600 | 0.702 | 0.737 | | Average | 0.597 | 0.550 | 0.546 | 0.554 | 0.566 | 0.643 | 0.617 | 0.702 | | Point AUROC | BTF_FPFH | BTF_Raw | M3DM_PointMAE | M3DM_PointBERT | PatchCore+FPFH | PatchCore+FPFH+raw | PatchCore+PointMAE | Our baseline | | ----------- | ----------- | ----------- | ------------- | -------------- | -------------- | ------------------ | ------------------ | ------------ | | airplane | 0.739 | 0.577 | 0.521 | 0.504 | 0.698 | 0.667 | 0.57 | 0.615 | | car | 0.711 | 0.652 | 0.582 | 0.571 | 0.661 | 0.754 | 0.648 | 0.643 | | candybar | 0.865 | 0.568 | 0.667 | 0.663 | 0.614 | 0.615 | 0.594 | 0.631 | | chicken | 0.736 | 0.615 | 0.661 | 0.545 | 0.323 | 0.435 | 0.602 | 0.515 | | diamond | 0.886 | 0.555 | 0.627 | 0.617 | 0.550 | 0.691 | 0.719 | 0.788 | | duck | 0.878 | 0.475 | 0.653 | 0.640 | 0.246 | 0.433 | 0.501 | 0.578 | | fish | 0.707 | 0.506 | 0.611 | 0.601 | 0.481 | 0.740 | 0.715 | 0.721 | | gemstone | 0.893 | 0.623 | 0.689 | 0.686 | 0.311 | 0.493 | 0.500 | 0.509 | | seahorse | 0.516 | 0.518 | 0.581 | 0.578 | 0.557 | 0.704 | 0.632 | 0.706 | | shell | 0.579 | 0.441 | 0.738 | 0.718 | 0.627 | 0.744 | 0.743 | 0.774 | | starfish | 0.513 | 0.424 | 0.573 | 0.572 | 0.522 | 0.544 | 0.597 | 0.623 | | toffees | 0.817 | 0.554 | 0.632 | 0.646 | 0.602 | 0.742 | 0.699 | 0.726 | | Average | 0.737 | 0.542 | 0.628 | 0.612 | 0.516 | 0.630 | 0.627 | 0.652 | | Point AUPR | BTF_FPFH | BTF_Raw | M3DM_PointMAE | M3DM_PointBERT | PatchCore+FPFH | PatchCore+FPFH+raw | PatchCore+PointMAE | Our baseline | | ---------- | ----------- | ----------- | ------------- | -------------- | -------------- | ------------------ | ------------------ | ------------ | | airplane | 0.028 | 0.014 | 0.007 | 0.007 | 0.035 | 0.017 | 0.011 | 0.014 | | car | 0.03 | 0.017 | 0.014 | 0.013 | 0.034 | 0.113 | 0.019 | 0.114 | | candybar | 0.0114 | 0.017 | 0.015 | 0.015 | 0.123 | 0.052 | 0.05 | 0.03 | | chicken | 0.075 | 0.052 | 0.046 | 0.045 | 0.021 | 0.037 | 0.036 | 0.036 | | diamond | 0.249 | 0.035 | 0.033 | 0.038 | 0.208 | 0.199 | 0.081 | 0.189 | | duck | 0.072 | 0.008 | 0.01 | 0.010 | 0.019 | 0.018 | 0.009 | 0.012 | | fish | 0.038 | 0.014 | 0.025 | 0.038 | 0.053 | 0.256 | 0.232 | 0.298 | | gemstone | 0.082 | 0.012 | 0.017 | 0.017 | 0.028 | 0.062 | 0.008 | 0.014 | | seahorse | 0.028 | 0.023 | 0.03 | 0.028 | 0.031 | 0.203 | 0.069 | 0.143 | | shell | 0.021 | 0.01 | 0.021 | 0.021 | 0.033 | 0.058 | 0.039 | 0.040 | | starfish | 0.038 | 0.019 | 0.04 | 0.037 | 0.039 | 0.031 | 0.047 | 0.053 | | toffees | 0.054 | 0.017 | 0.021 | 0.019 | 0.058 | 0.062 | 0.061 | 0.065 | | Average | 0.0605 | 0.0198 | 0.023 | 0.024 | 0.0568 | 0.092 | 0.055 | 0.084 | -->

How to reproduce our benchmark

We implement benchmark under CUDA 11.3 Our environment can be reproduced by the following command:

conda env create -f real3dad.yaml
# Note that point2_ops_lib may need to be installed by the following command:
pip install "git+git://github.com/erikwijmans/Pointnet2_PyTorch.git#egg=pointnet2_ops&subdirectory=pointnet2_ops_lib"

Note: Although we have fixed the random seed, slight variations in the results may still occur due to other random factors. We will try to address this issue in future work.

sh start.sh

The result will output four different metrics (Object/Point AUROC/AUPR).

In util.visualization.py, we provide the function ''vis_pointcloud_gt'' to visualize ground truth with our gt files. Also, with a saved anomaly map xx.npy(n values between 0 and 1) and the corresponding pcd file(n xyz points), you can use "vis_pointcloud_anomalymap(point_cloud, anomaly_map)" to visualize anomaly regions.

Acknowledgments.

This work is supported by the National Key R&D Program of China (Grant NO. 2022YFF1202903) and the National Natural Science Foundation of China (Grant NO. 62122035, 62206122).

Our benchmark is built on BTF and M3DM and PatchCore, thanks their extraordinary works!

Thanks to all the people who worked hard to capture the data, especially Xinyu Tang for his efforts.

License

The dataset is released under the CC BY 4.0 license.

BibTex Citation

If you find this paper and repository useful, please cite our paper☺️.

@inproceedings{liu2023real3d,
  title={Real3D-AD: A Dataset of Point Cloud Anomaly Detection},
  author={Liu, Jiaqi and Xie, Guoyang and Li, Xinpeng and Wang, Jinbao and Liu, Yong and Wang, Chengjie and Zheng, Feng and others},
  booktitle={Thirty-seventh Conference on Neural Information Processing Systems Datasets and Benchmarks Track},
  year={2023}
}