geowatch.cli.coco_add_watch_fields module

Adds fields needed by ndsampler to correctly “watch” a region.

Some of this is done hueristically. We assume images come from certain sensors. We assume input is orthorectified. We assume some GSD “target” gsd for video and image processing. Note a video GSD will typically be much higher (i.e. lower resolution) than an image GSD.

SeeAlso:

~/code/watch/geowatch/utils/kwcoco_extensions.py

class geowatch.cli.coco_add_watch_fields.AddWatchFieldsConfig(*args, **kwargs)[source]

Bases: DataConfig

Updates kwcoco image transforms and sets video space to a target GSD.

Valid options: []

Parameters:
  • *args – positional arguments for this data config

  • **kwargs – keyword arguments for this data config

default = {'default_gsd': <Value(None)>, 'dst': <Value(None)>, 'edit_geotiff_metadata': <Value(False)>, 'enable_intensity_stats': <Value(False)>, 'enable_valid_region': <Value(False)>, 'enable_video_stats': <Value(True)>, 'inplace': <Value(False)>, 'mode': <Value('process')>, 'overwrite': <Value(False)>, 'remove_broken': <Value(False)>, 'skip_populate_errors': <Value(False)>, 'src': <Value('data.kwcoco.json')>, 'target_gsd': <Value(10.0)>, 'workers': <Value(0)>}
normalize()
geowatch.cli.coco_add_watch_fields.main(cmdline=True, **kwargs)[source]

CommandLine

kwcoco toydata --key vidshapes8-multispectral --dst toydata.kwcoco.json
jq .images[0].auxiliary[0].file_name toydata.kwcoco.json

kwcoco stats toydata.kwcoco.json
kwcoco validate toydata.kwcoco.json

jq .videos toydata.kwcoco.json
jq .images[0] toydata.kwcoco.json

python -m geowatch.cli.coco_add_watch_fields \
    --src toydata.kwcoco.json \
    --dst toydata-gsd10.kwcoco.json \
    --target_gsd=10

jq .videos toydata-gsd10.kwcoco.json
jq .images[0] toydata-gsd10.kwcoco.json

Example

>>> from geowatch.cli.coco_add_watch_fields import *  # NOQA
>>> import kwcoco
>>> # TODO: make a demo dataset with some sort of gsd metadata
>>> dset = kwcoco.CocoDataset.demo('vidshapes8-multispectral')
>>> print('dset = {!r}'.format(dset))
>>> target_gsd = 13.0
>>> main(cmdline=False, src=dset, dst='return', target_gsd=target_gsd, default_gsd=1)
>>> print('dset.index.imgs[1] = ' + ub.urepr(dset.index.imgs[1], nl=2))
>>> print('dset.index.videos = {}'.format(ub.urepr(dset.index.videos, nl=1)))