def load_dataset(*, sample_size=600, image_size=224) -> ImageDataBunch:

    labels = pd.read_csv(config.PROCESSED_DATA_DIR / 'labels_full.csv')

    classes = ['pneumonia', 'normal', 'COVID-19']
    ds_types = ['train']
    selected = []
    for c in classes:
        for t in ds_types:
            selected.extend(
                labels[(labels.label == c)
                       & (labels.ds_type == t)][:sample_size].values.tolist())

    subset = pd.DataFrame(selected, columns=labels.columns)
    subset[['name', 'label']].to_csv(config.PROCESSED_DATA_DIR / 'labels.csv',
                                     index=False)

    tfms = _get_image_transformation()

    # will read from "labels.csv" in the data directory
    data = ImageDataBunch.from_csv(config.PROCESSED_DATA_DIR,
                                   ds_tfms=tfms,
                                   csv_labels=config.PROCESSED_DATA_DIR /
                                   'labels.csv',
                                   valid_pct=0.1,
                                   seed=config.SEED,
                                   size=image_size,
                                   bs=21)

    data.normalize(imagenet_stats)

    return data
Beispiel #2
0
import torchvision
from fastai.vision import ImageDataBunch, cnn_learner, unet_learner, SegmentationItemList, imagenet_stats

data = ImageDataBunch.from_csv('fixtures/classification').normalize(
    imagenet_stats)
learner = cnn_learner(data, torchvision.models.resnet34)
learner.export()

data = (SegmentationItemList.from_folder(
    'fixtures/segmentation/images').split_none().label_from_func(
        lambda x: f'fixtures/segmentation/masks/{x.stem}.jpg',
        classes=[0, 1, 2]).databunch().normalize(imagenet_stats))
learner = unet_learner(data, torchvision.models.resnet50)
learner.export('../export.pkl')