├── sparse2coarse.py ├── README.md └── cifar100coarse.py /sparse2coarse.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | def sparse2coarse(targets): 5 | """Convert Pytorch CIFAR100 sparse targets to coarse targets. 6 | 7 | Usage: 8 | trainset = torchvision.datasets.CIFAR100(path) 9 | trainset.targets = sparse2coarse(trainset.targets) 10 | """ 11 | coarse_labels = np.array([ 4, 1, 14, 8, 0, 6, 7, 7, 18, 3, 12 | 3, 14, 9, 18, 7, 11, 3, 9, 7, 11, 13 | 6, 11, 5, 10, 7, 6, 13, 15, 3, 15, 14 | 0, 11, 1, 10, 12, 14, 16, 9, 11, 5, 15 | 5, 19, 8, 8, 15, 13, 14, 17, 18, 10, 16 | 16, 4, 17, 4, 2, 0, 17, 4, 18, 17, 17 | 10, 3, 2, 12, 12, 16, 12, 1, 9, 19, 18 | 2, 10, 0, 1, 16, 12, 9, 13, 15, 13, 19 | 16, 19, 2, 4, 6, 19, 5, 5, 8, 19, 20 | 18, 1, 2, 15, 6, 0, 17, 8, 14, 13]) 21 | return coarse_labels[targets] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CIFAR100 Coarse 2 | Simple function that converts CIFAR100 in PyTorch from sparse labels to coarse labels based on superclass. 3 | 4 | ### Usage 1: Update using function `sparse2coarse` 5 | ``` 6 | trainset = torchvision.datasets.CIFAR100(root) 7 | trainset.targets = sparse2coarse(trainset.targets) # update labels 8 | ``` 9 | 10 | ### Usage 2: Import new dataset class `CIFAR100Coarse` 11 | Class defined in [`cifar100coarse.py`](./cifar100coarse.py). 12 | 13 | ``` 14 | from cifar100coarse import CIFAR100Coarse 15 | 16 | trainset = CIFAR100Coarse(root, train=True, transform=None, target_transform=None, download=False) 17 | ``` 18 | 19 | ### Superclasses 20 | ``` 21 | superclass = [['beaver', 'dolphin', 'otter', 'seal', 'whale'], 22 | ['aquarium_fish', 'flatfish', 'ray', 'shark', 'trout'], 23 | ['orchid', 'poppy', 'rose', 'sunflower', 'tulip'], 24 | ['bottle', 'bowl', 'can', 'cup', 'plate'], 25 | ['apple', 'mushroom', 'orange', 'pear', 'sweet_pepper'], 26 | ['clock', 'keyboard', 'lamp', 'telephone', 'television'], 27 | ['bed', 'chair', 'couch', 'table', 'wardrobe'], 28 | ['bee', 'beetle', 'butterfly', 'caterpillar', 'cockroach'], 29 | ['bear', 'leopard', 'lion', 'tiger', 'wolf'], 30 | ['bridge', 'castle', 'house', 'road', 'skyscraper'], 31 | ['cloud', 'forest', 'mountain', 'plain', 'sea'], 32 | ['camel', 'cattle', 'chimpanzee', 'elephant', 'kangaroo'], 33 | ['fox', 'porcupine', 'possum', 'raccoon', 'skunk'], 34 | ['crab', 'lobster', 'snail', 'spider', 'worm'], 35 | ['baby', 'boy', 'girl', 'man', 'woman'], 36 | ['crocodile', 'dinosaur', 'lizard', 'snake', 'turtle'], 37 | ['hamster', 'mouse', 'rabbit', 'shrew', 'squirrel'], 38 | ['maple_tree', 'oak_tree', 'palm_tree', 'pine_tree', 'willow_tree'], 39 | ['bicycle', 'bus', 'motorcycle', 'pickup_truck', 'train'], 40 | ['lawn_mower', 'rocket', 'streetcar', 'tank', 'tractor']] 41 | ``` 42 | 43 | 44 | ### Reference 45 | CIFAR10/100 website: `https://www.cs.toronto.edu/~kriz/cifar.html` 46 | -------------------------------------------------------------------------------- /cifar100coarse.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from torchvision.datasets import CIFAR100 3 | 4 | 5 | class CIFAR100Coarse(CIFAR100): 6 | def __init__(self, root, train=True, transform=None, target_transform=None, download=False): 7 | super(CIFAR100Coarse, self).__init__(root, train, transform, target_transform, download) 8 | 9 | # update labels 10 | coarse_labels = np.array([ 4, 1, 14, 8, 0, 6, 7, 7, 18, 3, 11 | 3, 14, 9, 18, 7, 11, 3, 9, 7, 11, 12 | 6, 11, 5, 10, 7, 6, 13, 15, 3, 15, 13 | 0, 11, 1, 10, 12, 14, 16, 9, 11, 5, 14 | 5, 19, 8, 8, 15, 13, 14, 17, 18, 10, 15 | 16, 4, 17, 4, 2, 0, 17, 4, 18, 17, 16 | 10, 3, 2, 12, 12, 16, 12, 1, 9, 19, 17 | 2, 10, 0, 1, 16, 12, 9, 13, 15, 13, 18 | 16, 19, 2, 4, 6, 19, 5, 5, 8, 19, 19 | 18, 1, 2, 15, 6, 0, 17, 8, 14, 13]) 20 | self.targets = coarse_labels[self.targets] 21 | 22 | # update classes 23 | self.classes = [['beaver', 'dolphin', 'otter', 'seal', 'whale'], 24 | ['aquarium_fish', 'flatfish', 'ray', 'shark', 'trout'], 25 | ['orchid', 'poppy', 'rose', 'sunflower', 'tulip'], 26 | ['bottle', 'bowl', 'can', 'cup', 'plate'], 27 | ['apple', 'mushroom', 'orange', 'pear', 'sweet_pepper'], 28 | ['clock', 'keyboard', 'lamp', 'telephone', 'television'], 29 | ['bed', 'chair', 'couch', 'table', 'wardrobe'], 30 | ['bee', 'beetle', 'butterfly', 'caterpillar', 'cockroach'], 31 | ['bear', 'leopard', 'lion', 'tiger', 'wolf'], 32 | ['bridge', 'castle', 'house', 'road', 'skyscraper'], 33 | ['cloud', 'forest', 'mountain', 'plain', 'sea'], 34 | ['camel', 'cattle', 'chimpanzee', 'elephant', 'kangaroo'], 35 | ['fox', 'porcupine', 'possum', 'raccoon', 'skunk'], 36 | ['crab', 'lobster', 'snail', 'spider', 'worm'], 37 | ['baby', 'boy', 'girl', 'man', 'woman'], 38 | ['crocodile', 'dinosaur', 'lizard', 'snake', 'turtle'], 39 | ['hamster', 'mouse', 'rabbit', 'shrew', 'squirrel'], 40 | ['maple_tree', 'oak_tree', 'palm_tree', 'pine_tree', 'willow_tree'], 41 | ['bicycle', 'bus', 'motorcycle', 'pickup_truck', 'train'], 42 | ['lawn_mower', 'rocket', 'streetcar', 'tank', 'tractor']] --------------------------------------------------------------------------------