Shortcuts

Source code for torchgeo.datamodules.inria

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

"""InriaAerialImageLabeling datamodule."""

from typing import Any, Tuple, Union

import kornia.augmentation as K

from ..datasets import InriaAerialImageLabeling
from ..samplers.utils import _to_tuple
from ..transforms import AugmentationSequential
from ..transforms.transforms import _RandomNCrop
from .geo import NonGeoDataModule
from .utils import dataset_split


[docs]class InriaAerialImageLabelingDataModule(NonGeoDataModule): """LightningDataModule implementation for the InriaAerialImageLabeling dataset. Uses the train/test splits from the dataset and further splits the train split into train/val splits. .. versionadded:: 0.3 """
[docs] def __init__( self, batch_size: int = 64, patch_size: Union[Tuple[int, int], int] = 64, num_workers: int = 0, val_split_pct: float = 0.1, test_split_pct: float = 0.1, **kwargs: Any, ) -> None: """Initialize a new InriaAerialImageLabelingDataModule instance. Args: batch_size: Size of each mini-batch. patch_size: Size of each patch, either ``size`` or ``(height, width)``. Should be a multiple of 32 for most segmentation architectures. num_workers: Number of workers for parallel data loading. val_split_pct: Percentage of the dataset to use as a validation set. test_split_pct: Percentage of the dataset to use as a test set. **kwargs: Additional keyword arguments passed to :class:`~torchgeo.datasets.InriaAerialImageLabeling`. """ super().__init__(InriaAerialImageLabeling, 1, num_workers, **kwargs) self.patch_size = _to_tuple(patch_size) self.val_split_pct = val_split_pct self.test_split_pct = test_split_pct self.train_aug = AugmentationSequential( K.Normalize(mean=self.mean, std=self.std), K.RandomHorizontalFlip(p=0.5), K.RandomVerticalFlip(p=0.5), _RandomNCrop(self.patch_size, batch_size), data_keys=["image", "mask"], ) self.aug = AugmentationSequential( K.Normalize(mean=self.mean, std=self.std), _RandomNCrop(self.patch_size, batch_size), data_keys=["image", "mask"], ) self.predict_aug = AugmentationSequential( K.Normalize(mean=self.mean, std=self.std), _RandomNCrop(self.patch_size, batch_size), data_keys=["image"], )
[docs] def setup(self, stage: str) -> None: """Set up datasets. Args: stage: Either 'fit', 'validate', 'test', or 'predict'. """ if stage in ["fit", "validate", "test"]: self.dataset = InriaAerialImageLabeling(split="train", **self.kwargs) self.train_dataset, self.val_dataset, self.test_dataset = dataset_split( self.dataset, self.val_split_pct, self.test_split_pct ) if stage in ["predict"]: # Test set masks are not public, use for prediction instead self.predict_dataset = InriaAerialImageLabeling(split="test", **self.kwargs)

© Copyright 2021, Microsoft Corporation. Revision 671737fd.

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: v0.4.0
Versions
latest
stable
v0.4.0
v0.3.1
v0.3.0
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Downloads
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources