| | """Dataset class template |
| | |
| | This module provides a template for users to implement custom datasets. |
| | You can specify '--dataset_mode template' to use this dataset. |
| | The class name should be consistent with both the filename and its dataset_mode option. |
| | The filename should be <dataset_mode>_dataset.py |
| | The class name should be <Dataset_mode>Dataset.py |
| | You need to implement the following functions: |
| | -- <modify_commandline_options>: Add dataset-specific options and rewrite default values for existing options. |
| | -- <__init__>: Initialize this dataset class. |
| | -- <__getitem__>: Return a data point and its metadata information. |
| | -- <__len__>: Return the number of images. |
| | """ |
| |
|
| | from data.base_dataset import BaseDataset, get_transform |
| |
|
| | |
| | |
| |
|
| |
|
| | class TemplateDataset(BaseDataset): |
| | """A template dataset class for you to implement custom datasets.""" |
| |
|
| | @staticmethod |
| | def modify_commandline_options(parser, is_train): |
| | """Add new dataset-specific options, and rewrite default values for existing options. |
| | |
| | Parameters: |
| | parser -- original option parser |
| | is_train (bool) -- whether training phase or test phase. You can use this flag to add training-specific or test-specific options. |
| | |
| | Returns: |
| | the modified parser. |
| | """ |
| | parser.add_argument("--new_dataset_option", type=float, default=1.0, help="new dataset option") |
| | parser.set_defaults(max_dataset_size=10, new_dataset_option=2.0) |
| | return parser |
| |
|
| | def __init__(self, opt): |
| | """Initialize this dataset class. |
| | |
| | Parameters: |
| | opt (Option class) -- stores all the experiment flags; needs to be a subclass of BaseOptions |
| | |
| | A few things can be done here. |
| | - save the options (have been done in BaseDataset) |
| | - get image paths and meta information of the dataset. |
| | - define the image transformation. |
| | """ |
| | |
| | BaseDataset.__init__(self, opt) |
| | |
| | self.image_paths = [] |
| | |
| | self.transform = get_transform(opt) |
| |
|
| | def __getitem__(self, index): |
| | """Return a data point and its metadata information. |
| | |
| | Parameters: |
| | index -- a random integer for data indexing |
| | |
| | Returns: |
| | a dictionary of data with their names. It usually contains the data itself and its metadata information. |
| | |
| | Step 1: get a random image path: e.g., path = self.image_paths[index] |
| | Step 2: load your data from the disk: e.g., image = Image.open(path).convert('RGB'). |
| | Step 3: convert your data to a PyTorch tensor. You can use helpder functions such as self.transform. e.g., data = self.transform(image) |
| | Step 4: return a data point as a dictionary. |
| | """ |
| | path = "temp" |
| | data_A = None |
| | data_B = None |
| | return {"data_A": data_A, "data_B": data_B, "path": path} |
| |
|
| | def __len__(self): |
| | """Return the total number of images.""" |
| | return len(self.image_paths) |
| |
|