FUSION Dataset Classes

An auxillary addition to the fusion-tools package is the deployment of dataset classes which enable iteration of annotated structures or regions of images for training segmentation or classification problems.

In the below example, an example segmentation and classification dataset are created using some test data

"""Testing out different dataset classes
"""

import os
import sys
sys.path.append('./src/')
from time import sleep

import large_image
import numpy as np
from fusion_tools.dataset import SegmentationDataset, ClassificationDataset
from fusion_tools.utils.shapes import load_aperio
import matplotlib.pyplot as plt

def main():

    test_slide_path = "/path/to/test_slide.svs"
    slide_list = [
        test_slide_path
    ]
    annotations_list = [
        load_aperio(test_slide_path.replace('svs','xml'))
    ]

    # Default parameters
    seg_dataset = SegmentationDataset(
        slides = slide_list,
        annotations = annotations_list,
        patch_size = [512,512],
        patch_mode = 'centered_bbox'
    )

    # Printing key_configs
    print(seg_dataset)
    print(f'len(seg_dataset): {len(seg_dataset)}')

    # Viewing some image/mask combos:
    for i in range(len(seg_dataset)):
        image, mask = seg_dataset[i]

        plt.imshow(image)
        plt.show(block=False)
        plt.pause(0.25)
        plt.close('all')

        # Normalizing masks (channel = class)
        mask = np.sum(mask,axis=-1)
        plt.imshow(255*mask)
        plt.show(block=False)
        plt.pause(0.25)
        plt.close('all')


    class_dataset = ClassificationDataset(
        slides = slide_list,
        annotations=annotations_list,
        label_property = 'name'
    )

    print(class_dataset)
    print(f'len of class_dataset: {len(class_dataset)}')

    for i in range(len(class_dataset)):
        image,label = class_dataset[i]

        print(f'label: {label}')
        plt.imshow(image)
        plt.show(block=False)
        plt.pause(0.5)
        plt.close('all')

if __name__=='__main__':
    main()

Dataset sub-module for fusion-tools