#
# Dataset Specification
#
dataset:
  # The root directory of the dataset. This can be a local
  # file system directory, an S3 bucket, or a GCP bucket.
  root_path: 'https://masterful-public.s3.us-west-1.amazonaws.com/datasets/oxford_pets_binary_segmentation'
  # The name of the splits to use in training. These will
  # point to a CSV file in the "root_dir" of the same name,
  # such as <split name>.csv. Each split can be referenced below
  # in the "training" and "evaluation" sections. Splits defined
  # here can either be labeled or unlabeled.
  splits: [train, test]
  label_map: label_map
  # OPTIONAL: True if we should save an optimized version of the dataset
  # locally, False otherwise. Optimizing the dataset locally
  # adds a small, one-time dataset processing cost in order
  # to convert the raw dataset into the optimized version. But doing
  # so will significantly improve training times. The optimization
  # conversion only happens once. Subsequent training runs
  # will use optimized version of the dataset.
  optimize: True
  # OPTIONAL: By default, optimized dataset are stored in the
  # ~/.masterful/datasets directory. Set the 'cache_path' value
  # below in order to change where the optimized datasets are stored
  # locally.
  #cache_path: ~/masterful_datasets
  label_format: segmentation_csv

#
# Model Specification
#
model:
  # The name of the architecture to use. The model
  # returned at the end of training will be based on
  # the architecture specified below, and will be ready
  # to use for inference. The model will include all
  # preprocessing and standardization, and will expect
  # single, unresized 8-bit 3 channel RGB uint8/uint32 images
  # with pixel ranges [0,255].
  architecture: unet_resnet50v1
  # The number of classes in the training dataset and model predictions.
  # For binary_classification, this should be set to 1.
  num_classes: 1
  # The input shape to use for training. All data will be transformed
  # using an aspect-ratio preserving resize to this shape, which is
  # in HWC format. Note larger input shapes will take more memory
  # and be longer to train, but preserve the most detail. Smaller
  # input shapes will train faster, but could lose useful detail
  # in the image features. Input shape is specified as
  # [height, width, num_channels]. num_channels must be 3.
  input_shape: [320,320,3]

#
# Training Specification
#
training:
  # The task to perform. Currently, the trainer support the
  # following tasks:
  #    classification - Multi-class classification task.
  #    binary_classification - Binary classification task.
  #    multilabel_classification - Multi-class Multi-label classification task.
  task: semantic_segmentation
  # The dataset set to use for training. This must be a labeled
  # dataset.
  training_split: train

#
# Output Specification
output:
  # A list of output formats for the trained model.
  #
  # Supported output formats are:
  #   saved_model - Tensorflow Saved Model format (https://www.tensorflow.org/guide/saved_model)
  #   onnx - Open Neural Network Exchange model format (https://onnx.ai/)
  formats: [saved_model, onnx]
  # The path to save the output into.
  path: ~/model_output

#
# Evaluation Specification
#
evaluation:
  # The dataset split to use for evaluation. This should
  # be a dataset split that is not used in training, otherwise
  # your evaluation metrics will not be representative of the generalization
  # performance of your model.
  split: test
