DatasetConfig#
Note
All Configs are derived from rastervision.pipeline.config.Config
, which itself is a pydantic Model.
- pydantic model DatasetConfig[source]#
Configure train, validation, and test splits for a dataset.
Show JSON schema
{ "title": "DatasetConfig", "description": "Configure train, validation, and test splits for a dataset.", "type": "object", "properties": { "class_config": { "$ref": "#/$defs/ClassConfig" }, "train_scenes": { "items": { "$ref": "#/$defs/SceneConfig" }, "title": "Train Scenes", "type": "array" }, "validation_scenes": { "items": { "$ref": "#/$defs/SceneConfig" }, "title": "Validation Scenes", "type": "array" }, "test_scenes": { "default": [], "items": { "$ref": "#/$defs/SceneConfig" }, "title": "Test Scenes", "type": "array" }, "scene_groups": { "additionalProperties": { "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "default": {}, "description": "Groupings of scenes. Should be a dict of the form: {<group-name>: set(scene_id_1, scene_id_2, ...)}. Three groups are added by default: \"train_scenes\", \"validation_scenes\", and \"test_scenes\"", "title": "Scene Groups", "type": "object" }, "type_hint": { "const": "dataset", "default": "dataset", "enum": [ "dataset" ], "title": "Type Hint", "type": "string" } }, "$defs": { "ClassConfig": { "additionalProperties": false, "description": "Configure class information for a machine learning task.", "properties": { "names": { "description": "Names of classes. The i-th class in this list will have class ID = i.", "items": { "type": "string" }, "title": "Names", "type": "array" }, "colors": { "anyOf": [ { "items": { "anyOf": [ { "type": "string" }, { "items": {}, "type": "array" } ] }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Colors used to visualize classes. Can be color strings accepted by matplotlib or RGB tuples. If None, a random color will be auto-generated for each class.", "title": "Colors" }, "null_class": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional name of class in `names` to use as the null class. This is used in semantic segmentation to represent the label for imagery pixels that are NODATA or that are missing a label. If None and the class names include \"null\", it will automatically be used as the null class. If None, and this Config is part of a SemanticSegmentationConfig, a null class will be added automatically.", "title": "Null Class" }, "type_hint": { "const": "class_config", "default": "class_config", "enum": [ "class_config" ], "title": "Type Hint", "type": "string" } }, "required": [ "names" ], "title": "ClassConfig", "type": "object" }, "LabelSourceConfig": { "additionalProperties": false, "description": "Configure a :class:`.LabelSource`.", "properties": { "type_hint": { "const": "label_source", "default": "label_source", "enum": [ "label_source" ], "title": "Type Hint", "type": "string" } }, "title": "LabelSourceConfig", "type": "object" }, "LabelStoreConfig": { "additionalProperties": false, "description": "Configure a :class:`.LabelStore`.", "properties": { "type_hint": { "const": "label_store", "default": "label_store", "enum": [ "label_store" ], "title": "Type Hint", "type": "string" } }, "title": "LabelStoreConfig", "type": "object" }, "RasterSourceConfig": { "additionalProperties": false, "description": "Configure a :class:`.RasterSource`.", "properties": { "channel_order": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The sequence of channel indices to use when reading imagery.", "title": "Channel Order" }, "transformers": { "default": [], "items": { "$ref": "#/$defs/RasterTransformerConfig" }, "title": "Transformers", "type": "array" }, "bbox": { "anyOf": [ { "maxItems": 4, "minItems": 4, "prefixItems": [ { "type": "integer" }, { "type": "integer" }, { "type": "integer" }, { "type": "integer" } ], "type": "array" }, { "type": "null" } ], "default": null, "description": "User-specified bbox in pixel coords in the form (ymin, xmin, ymax, xmax). Useful for cropping the raster source so that only part of the raster is read from.", "title": "Bbox" }, "type_hint": { "const": "raster_source", "default": "raster_source", "enum": [ "raster_source" ], "title": "Type Hint", "type": "string" } }, "title": "RasterSourceConfig", "type": "object" }, "RasterTransformerConfig": { "additionalProperties": false, "description": "Configure a :class:`.RasterTransformer`.", "properties": { "type_hint": { "const": "raster_transformer", "default": "raster_transformer", "enum": [ "raster_transformer" ], "title": "Type Hint", "type": "string" } }, "title": "RasterTransformerConfig", "type": "object" }, "SceneConfig": { "additionalProperties": false, "description": "Configure a :class:`.Scene` comprising raster data & labels for an AOI.\n ", "properties": { "id": { "title": "Id", "type": "string" }, "raster_source": { "$ref": "#/$defs/RasterSourceConfig" }, "label_source": { "anyOf": [ { "$ref": "#/$defs/LabelSourceConfig" }, { "type": "null" } ], "default": null }, "label_store": { "anyOf": [ { "$ref": "#/$defs/LabelStoreConfig" }, { "type": "null" } ], "default": null }, "aoi_uris": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "List of URIs of GeoJSON files that define the AOIs for the scene. Each polygon defines an AOI which is a piece of the scene that is assumed to be fully labeled and usable for training or validation. The AOIs are assumed to be in EPSG:4326 coordinates.", "title": "Aoi Uris" }, "type_hint": { "const": "scene", "default": "scene", "enum": [ "scene" ], "title": "Type Hint", "type": "string" } }, "required": [ "id", "raster_source" ], "title": "SceneConfig", "type": "object" } }, "additionalProperties": false, "required": [ "class_config", "train_scenes", "validation_scenes" ] }
- Config:
extra: str = forbid
validate_assignment: bool = True
- Fields:
- field class_config: ClassConfig [Required]#
- field scene_groups: dict[str, set[str]] = {}#
Groupings of scenes. Should be a dict of the form: {<group-name>: set(scene_id_1, scene_id_2, …)}. Three groups are added by default: “train_scenes”, “validation_scenes”, and “test_scenes”
- field test_scenes: list[SceneConfig] = []#
- field train_scenes: list[SceneConfig] [Required]#
- field validation_scenes: list[SceneConfig] [Required]#
- build()#
Build an instance of the corresponding type of object using this config.
For example, BackendConfig will build a Backend object. The arguments to this method will vary depending on the type of Config.
- classmethod deserialize(inp: str | dict | Config) Self #
Deserialize Config from a JSON file or dict, upgrading if possible.
If
inp
is already aConfig
, it is returned as is.
- classmethod from_dict(cfg_dict: dict) Self #
Deserialize Config from a dict.
- Parameters:
cfg_dict (dict) – Dict to deserialize.
- Return type:
Self
- classmethod from_file(uri: str) Self #
Deserialize Config from a JSON file, upgrading if possible.
- Parameters:
uri (str) – URI to load from.
- Return type:
Self
- recursive_validate_config()#
Recursively validate hierarchies of Configs.
This uses reflection to call validate_config on a hierarchy of Configs using a depth-first pre-order traversal.
- revalidate()#
Re-validate an instantiated Config.
Runs all Pydantic validators plus self.validate_config().
- to_file(uri: str, with_rv_metadata: bool = True) None #
Save a Config to a JSON file, optionally with RV metadata.
- update(pipeline=None)[source]#
Update any fields before validation.
Subclasses should override this to provide complex default behavior, for example, setting default values as a function of the values of other fields. The arguments to this method will vary depending on the type of Config.
- validate_config()[source]#
Validate fields that should be checked after update is called.
This is to complement the builtin validation that Pydantic performs at the time of object construction.
- validate_list(field: str, valid_options: list[str])#
Validate a list field.
- Parameters:
- Raises:
ConfigError – if field is invalid
- property all_scenes: list[rastervision.core.data.scene_config.SceneConfig]#