MSP

Uses MSP based on a pre-trained model from the Hendrycks baseline paper.

 9 from torch.utils.data import DataLoader
10 from torchvision.datasets import CIFAR10
11
12 from pytorch_ood.dataset.img import Textures
13 from pytorch_ood.detector import MaxSoftmax
14 from pytorch_ood.model import WideResNet
15 from pytorch_ood.utils import OODMetrics, ToUnknown, fix_random_seed
16
17 fix_random_seed(123)
18 device = "cuda:0"
19
20 trans = WideResNet.transform_for("cifar10-pt")
21
22 # setup ID test data
23 dataset_in_test = CIFAR10(root="data", train=False, download=True, transform=trans)
24 # setup OOD test data
25 dataset_out_test = Textures(
26     root="data", download=True, transform=trans, target_transform=ToUnknown()
27 )
28
29 # merge dataset and create data loaders
30 test_loader = DataLoader(dataset_in_test + dataset_out_test, batch_size=128)
31
32 # Stage 1: Create DNN
33 model = WideResNet(num_classes=10, pretrained="cifar10-pt").to(device).eval()
34
35 # Stage 2: Create Detector
36 detector = MaxSoftmax(model)
37
38 # Stage 3: Evaluate Detectors
39 metrics = OODMetrics()
40
41 for x, y in test_loader:
42     metrics.update(detector(x.to(device)), y)
43
44 print(metrics.compute())

{‘AUROC’: 0.8851456642150879, ‘AUPR-IN’: 0.7850020527839661, ‘AUPR-OUT’: 0.9299277067184448, ‘FPR95TPR’: 0.40860000252723694}

Gallery generated by Sphinx-Gallery