Example 3: Deal with Categorical Data

The full program can be found here. Several techniques are list below:

  • We can create multiple data.Dataset object with different augmentation sequence. For example, for the usual image:
img_dataset = sunnerData.ImageDataset(
    root = [
        ['./Datasets/Ear-Pen/train/img'], 
    ],
    transforms = transforms.Compose([
        sunnertransforms.Resize((260, 195)),
        sunnertransforms.ToTensor(),
        sunnertransforms.ToFloat(),
        sunnertransforms.Normalize(mean = [0.5, 0.5, 0.5], std = [0.5, 0.5, 0.5]),
    ]), save_file = False
)

However, we can add CategoricalTranspose for the label domain:

tag_dataset = sunnerData.ImageDataset(
    root = [
        ['./Dataset/Ear-Pen/train/tag']
    ],
    transforms = transforms.Compose([
        sunnertransforms.Resize((260, 195)),
        sunnertransforms.ToTensor(),
        sunnertransforms.ToFloat(),
        sunnertransforms.Normalize(mean = [0.5, 0.5, 0.5], std = [0.5, 0.5, 0.5]),

        # Add the new augmentation method
        sunnertransforms.CategoricalTranspose(
            pallete = pallete, 
            direction = sunnertransforms.COLOR2INDEX, 
            index_default = 0
        )
    ])
)
  • The MultiLoader can combine different datasets as single loader:
loader = sunnerData.MultiLoader(
    datasets = [img_dataset, tag_dataset], 
    batch_size = 1, 
    shuffle = False, 
    num_workers = 2
)