Auspex Cursus

betav0.8.1

Polyline detection: an ordered chain of vertices per instance — pipes, drip lines, road centre lines, horizons. A detector purpose-built for paths, trained on your own annotations.

Install

pip install auspex-cursus

Overview

Auspex Cursus detects polylines: for every instance it outputs an ordered, open chain of vertices, in your own stack. Nothing runs on this site.

A polyline is not a box and not a polygon

A pipe, a drip line, a road centre line, a horizon — these are paths. A bounding box around one throws away the geometry that made it worth labelling, and a polygon is the wrong shape for something with no interior. Cursus predicts the path itself: an ordered sequence of vertices whose direction and order are part of the answer.

Each class declares how many vertices it needs, so a two-point horizon and a twelve-point drip line live in the same model.

A detector built for this shape, on a pretrained backbone

The detection stack is written from scratch and trained from random initialisation: hierarchical instance-by-point queries, deformable attention, iterative refinement and direction-invariant matching, all built for polylines rather than adapted from a box detector.

The image backbone is not from scratch. It is ConvNeXt-T pretrained on ImageNet-22k, and that is a deliberate choice: a DETR-style model trained on a few dozen annotated photos will not converge from random pixels in any reasonable budget. If you would rather start from nothing, set `model.pretrained: false` in your config.

Every annotation source, one format

CVAT XML, LabelMe JSON and georeferenced GeoJSON/Shapefile with GeoTIFF all convert into one on-disk format. Train on whole images, or tile very large rasters and let sliding-window inference stitch the fragments back into continuous lines.

Free to try, keyed after 30 days

Install it and start training straight away — no key, no account, no card. After 30 days training needs a licence; prediction, validation, evaluation and export keep working either way.

Weights you train on your own data belong to you and keep working if a licence lapses. The key is verified offline, so it also works on air-gapped machines.

Using it

pip install auspex-cursus

# CVAT / LabelMe / GeoJSON in, one format out auspex-cursus convert --format cvat --src annotations.xml --images ./images \ --labelspace labelspace.yaml --out data.cursus.json

auspex-cursus train --cfg run.yaml auspex-cursus val --weights runs/run/best.pt auspex-cursus predict --weights runs/run/best.pt --source ./photos \ --out preds --formats cursus,cvat,overlay ```

Predictions come back as ordered vertex lists per instance and export as CVAT XML you can upload as pre-labels, LabelMe JSON, or GeoJSON in world coordinates.

  • Ordered, open polylines — direction and vertex order are part of the prediction
  • Per-class vertex counts, so 2-point and 12-point classes share one model
  • CVAT XML, LabelMe JSON and georeferenced GeoJSON/Shapefile in one run
  • Whole-image or tiled, with sliding-window stitching for very large rasters
  • Single and multi-GPU training; CPU inference
  • Export to CVAT pre-labels, LabelMe, GeoJSON world coordinates, or ONNX
  • Licence verified offline — works on machines with no internet access

Need this adapted to your data?

We build and evaluate models against your metrics, not benchmarks.