Skip to content

DARTS Reference

darts

DARTS processing pipeline.

__version__ = version('darts-nextgen') module-attribute

run_native_orthotile_pipeline(input_data_dir, output_data_dir, model_dir, patch_size=1024, overlap=16, batch_size=8, reflection=0)

Search for all PlanetScope scenes in the given directory and runs the segmentation pipeline on them.

Parameters:

Name Type Description Default
input_data_dir Path

The "input" directory.

required
output_data_dir Path

The "output" directory.

required
model_dir Path

The path to the models to use for segmentation.

required
patch_size int

The patch size to use for inference. Defaults to 1024.

1024
overlap int

The overlap to use for inference. Defaults to 16.

16
batch_size int

The batch size to use for inference. Defaults to 8.

8
reflection int

The reflection padding to use for inference. Defaults to 0.

0
Todo

Document the structure of the input data dir.

Source code in darts/src/darts/native.py
def run_native_orthotile_pipeline(
    input_data_dir: Path,
    output_data_dir: Path,
    model_dir: Path,
    patch_size: int = 1024,
    overlap: int = 16,
    batch_size: int = 8,
    reflection: int = 0,
):
    """Search for all PlanetScope scenes in the given directory and runs the segmentation pipeline on them.

    Args:
        input_data_dir (Path): The "input" directory.
        output_data_dir (Path): The "output" directory.
        model_dir (Path): The path to the models to use for segmentation.
        patch_size (int, optional): The patch size to use for inference. Defaults to 1024.
        overlap (int, optional): The overlap to use for inference. Defaults to 16.
        batch_size (int, optional): The batch size to use for inference. Defaults to 8.
        reflection (int, optional): The reflection padding to use for inference. Defaults to 0.

    Todo:
        Document the structure of the input data dir.

    """
    # Import here to avoid long loading times when running other commands
    from darts_export.inference import InferenceResultWriter
    from darts_postprocessing import prepare_export
    from darts_preprocessing import load_and_preprocess_planet_scene
    from darts_segmentation import SMPSegmenter

    arcticdem_dir = input_data_dir / "ArcticDEM"

    # Find all PlanetScope scenes
    for fpath in (input_data_dir / "planet" / "PSOrthoTile").glob("*/*/"):
        scene_id = fpath.parent.name
        outpath = output_data_dir / scene_id

        tile = load_and_preprocess_planet_scene(fpath, arcticdem_dir)

        model = SMPSegmenter(model_dir / "RTS_v6_notcvis.pt")
        tile = model.segment_tile(
            tile, patch_size=patch_size, overlap=overlap, batch_size=batch_size, reflection=reflection
        )
        tile = prepare_export(tile)

        outpath.mkdir(parents=True, exist_ok=True)
        writer = InferenceResultWriter(tile)
        writer.export_probabilities(outpath)
        writer.export_binarized(outpath)
        writer.export_polygonized(outpath)