Metadata-Version: 2.4
Name: auspex-cursus
Version: 0.8.2
Summary: Auspex Cursus - end-to-end polyline detection (ordered vertex sequences per instance)
Author: Md. Sohanur Islam Shuvo
License: Proprietary
Project-URL: Homepage, https://heliontechltd.com
Project-URL: Licensing, https://heliontechltd.com/license
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Requires-Python: <3.14,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch>=2.11
Requires-Dist: torchvision>=0.26
Requires-Dist: timm<2,>=1.0.20
Requires-Dist: numpy<3,>=2.0
Requires-Dist: scipy>=1.13
Requires-Dist: shapely<3,>=2.0
Requires-Dist: scikit-image>=0.24
Requires-Dist: networkx>=3.2
Requires-Dist: opencv-python<6,>=4.10
Requires-Dist: lxml>=5
Requires-Dist: pyyaml>=6
Requires-Dist: tqdm>=4.66
Provides-Extra: geo
Requires-Dist: rasterio>=1.4; extra == "geo"
Requires-Dist: pyproj>=3.6; extra == "geo"
Requires-Dist: pyshp>=2.3; extra == "geo"
Requires-Dist: affine>=2.4; extra == "geo"
Provides-Extra: export
Requires-Dist: onnx>=1.16; extra == "export"
Requires-Dist: onnxruntime>=1.18; extra == "export"
Provides-Extra: viz
Requires-Dist: matplotlib>=3.8; extra == "viz"
Requires-Dist: tensorboard>=2.16; extra == "viz"
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: pytest-timeout>=2.3; extra == "dev"
Requires-Dist: ruff>=0.6; extra == "dev"
Dynamic: license-file

# Auspex Cursus

End-to-end **polyline detection**: for every detected instance the network outputs an
*ordered, open* sequence of vertices — a path (a pipe, a drip line, a road centre line,
a horizon), not a box and not a closed polygon. Each class declares its own vertex count
(`n_points`: 2 for straight things, 8–12 for curves), so a 2-point "horizon" and a
12-point "drip line" live in the same model.

- **CursusDETR**: a DETR-style network with hierarchical instance×point queries,
  deformable attention (pure PyTorch, no CUDA extensions), iterative refinement,
  denoising training and direction-invariant Hungarian matching.
- **Any annotation source**: CVAT XML, LabelMe JSON, GeoJSON/Shapefile + GeoTIFF with a
  full georeferencing pipeline — all converted to one on-disk format (CursusJSON).
- **Two training modes** behind one config switch: whole-image, or tiled with
  sliding-window inference and cross-tile stitching for large rasters.
- **Chamfer-mAP evaluation**, ONNX export, CVAT/LabelMe/GeoJSON prediction writers
  (predictions can be uploaded back to CVAT as pre-labels).
- Single & multi-GPU training (DDP), Windows / Linux, CPU-capable inference.

## Install

```bash
pip install auspex-cursus
```

Install a CUDA build of PyTorch first (from pytorch.org) if you want GPU training.

## Quickstart

```bash
auspex-cursus synth --out datasets/synth --labelspace labelspace.yaml --n-images 64
auspex-cursus convert --format cvat --src annotations.xml --images ./images \
                      --labelspace labelspace.yaml --out data.cursus.json
auspex-cursus train --cfg my_run.yaml
auspex-cursus predict --weights runs/my_run/best.pt --source ./photos --out preds \
                      --formats cursus,cvat,overlay
```

Every subcommand has `--help`.

## Licensing

Prediction, validation, conversion and export are free to use. **Training** runs on a
30-day evaluation trial, after which it needs a licence credential — either a
`CURSUS-` licence key or a Helion account token covering `auspex-cursus`:

```bash
export AUSPEX_CURSUS_LICENCE=<key>       # or a path to a file holding it
```

Licensing: <https://heliontechltd.com/license>

Distributed as compiled binaries; verification is fully offline — training machines
never need network access.
