Skip to main content

Auspex — from-scratch multi-task vision model

A single PyTorch model — implemented entirely from scratch, random init, no pretrained weights, no model libraries — covering all five annotation types used in labeling work:

Task Annotation Head
rect bounding boxes anchor-free decoupled head, task-aligned assignment, CIoU
polygon instance masks/polygons stride-2 mask prototypes + per-instance ROI refinement (BCE+Dice)
keypoint per-instance keypoints per-detection (x, y, vis) regression, OKS loss
polyline ordered open curves 16-point arc-length regression, direction-ambiguity min loss
classification image-level tags GAP-concat (270-d) → linear, multi-label BCE

Backbone: a multi-resolution trunk that keeps parallel branches at strides 4/8/16/32 (channels 18/36/72/144) and repeatedly fuses them, so high-resolution detail survives to the last stage — ideal for masks, keypoints, and thin polylines. Every task is independently toggleable in config; instance tasks ride on the detection branch. Trains on COCO JSON + CVAT-for-images 1.1 XML + Pascal VOC XML, mixed in one run, with per-source provides: task masking.

Install & use

Distributed on PyPI as compiled binaries (see License) under the name auspex-vision — the import name is auspex:

pip install auspex-vision

Wheel coverage (built by CI on every v* tag): Linux x86_64, Windows, and macOS Apple Silicon, Python 3.10–3.13 — compiled binaries only, no source distribution. Intel Macs are unsupported (torch≥2.3 dropped them); macOS runs CPU inference today. Wheels can also be installed directly from a file: pip install auspex_vision-<version>-<platform>.whl.

from auspex import Auspex

model = Auspex(labelspace="labelspace.yaml")
model.train(data="data.yaml", epochs=150)          # train on your own data
results = model.predict("images/", save=True)      # detect

model = Auspex(weights="best.pt")                  # checkpoints are self-contained
model.val(data="data.yaml")

Same via the console command: auspex train --data data.yaml --labelspace labelspace.yaml, auspex predict --weights best.pt --source images/, auspex val ....

Owner-only: python build_protected.py produces the compiled distribution wheel (requires cython + a C compiler; wheels are per-Python/per-platform).

Quickstart (synthetic sanity run, from the repo)

pip install -r requirements.txt
python tools/make_synth_data.py --out runs/synth --n 8   # images + CVAT/COCO annotations
python tools/check_dataset.py --data runs/synth/data_synth.yaml --labelspace configs/labelspace.yaml
python tools/visualize_batch.py --data runs/synth/data_synth.yaml --labelspace configs/labelspace.yaml
python tools/measure_vram.py                              # pick micro-batch for your GPU
python tools/overfit8.py --tasks all                      # THE gate: must print GATE PASSED
python tools/train.py --data runs/synth/data_synth.yaml --epochs 50 --run-dir runs/exp1
python tools/val.py --weights runs/exp1/best.pt --data runs/synth/data_synth.yaml
python tools/predict.py --weights runs/exp1/best.pt --source runs/synth/images --out runs/predict

Training on your own data

  1. Write configs/labelspace.yaml: canonical categories (order = class id), aliases, keypoint names + flip_pairs, optional kpt_sigmas, is_polyline: true for polyline classes, and image-level tags.
  2. Write a data.yaml:
sources:
  - name: batch1
    path: annotations/batch1.xml        # CVAT 1.1 XML | COCO .json | VOC xml dir
    images_root: images/
    split: train
    provides: {rect: true, polygon: true, keypoint: false, polyline: true, tag: true}

provides is explicit and required — it declares which tasks that source actually labels. An image with zero instances of a provided task is a valid negative; a task not provided contributes nothing to that task's loss, not even background.

  1. python tools/check_dataset.py --data data.yaml --labelspace configs/labelspace.yaml
  2. Run overfit8.py against a small slice, then train.py.

Training from random init: plan for 150–300 epochs on small/medium datasets; accuracy scales with data since nothing is pretrained.

Layout

configs/    labelspace.yaml (label space), train.yaml overrides
auspex/
  data/     schema, labelspace, parsers (coco/cvat/voc), letterbox, augment,
            rasterize, dataset, collate, sources
  models/   backbone, neck, heads/ (detect, segment, instance, classify), model
  losses/   assigner (TAL), losses (multi-task criterion)
  engine/   trainer, ema, optim, schedule, checkpoint, validator
  metrics/  det_map, mask_map, keypoints, polyline, tags
  infer/    decode, predict (postprocess), polygonize
tools/      train, val, predict, overfit8, visualize_batch, measure_vram,
            check_dataset, make_synth_data, crosscheck_map
tests/      pytest suites incl. the trap-checklist invariants

The overfit-8 gate

tools/overfit8.py trains on 8 images (aug/EMA off) and demands near-perfect reproduction per task. Any task that cannot overfit 8 images has a target-building or loss bug — real training must not start until the gate passes. It is kept forever as a regression test.

Growing the model (new classes, new datasets, scale)

Neural networks forget what they stop seeing ("catastrophic forgetting") — so growing Auspex always means training on the combined data, old + new. Three built-in mechanisms make that scale:

  • --transfer <ckpt> — start a new run from an old checkpoint whose labelspace has grown or been reordered. Weights carry over; class/tag head rows are mapped by name (names are stored in every checkpoint); brand-new classes start fresh. Use --resume only for continuing an identical run.
  • --source-balance 0.5 — when sources are very unequal (500 apples vs 100k bananas), balance how often each source appears per batch (0 = natural frequency, 1 = every source equally likely).
  • --cache-records — serve annotations from a packed on-disk cache (<data.yaml dir>/.auspex_cache/). RAM stays tiny regardless of dataset size, warm starts skip parsing entirely, and Windows workers stop paying N× memory. Turn on past ~100k images; caches auto-rebuild when an annotation file changes.

Scale guide:

Scale What to do
≤ ~100 datasets / ~100k images plain data.yaml + retrain or --transfer; nothing special
~100–1,000 datasets / ~1M images add --cache-records and --source-balance; train on a cloud GPU
1,000+ datasets foundation + fine-tune: keep ONE shared model trained on pooled data, and spin off per-project models from it with --transfer + a few fine-tune epochs — don't force one taxonomy over unrelated projects

Tip: list every class you expect to need in labelspace.yaml from day one — unused classes cost almost nothing and --resume then works with no surgery.

Where it runs

Plain PyTorch — nothing platform- or GPU-specific in the model. The trainer auto-picks the precision the hardware supports (bf16 → fp16 → fp32), overridable with --amp {bf16,fp16,off}.

Environment Works? Precision picked Notes
Ampere+ GPU (A100, A10G, L4, T4G, RTX 30xx/40xx/50xx) yes bf16 (default) AWS g5/p4, GCP a2/g2, Colab Pro
Older GPU (T4, P100, V100) yes fp16 + GradScaler (auto) free Colab, Kaggle, AWS g4dn/p3
CPU-only PC / instance yes fp32 (auto) inference & tests are fine; training is ~50×+ slower — use a GPU for real runs
SageMaker / Colab / Kaggle notebooks yes auto clone the repo, use the platform's preinstalled torch, run tools/train.py
Windows / Linux / macOS yes Windows-specific safeguards (spawn guard, worker reseeding) are harmless elsewhere

Limits: single-GPU training only for now (no DDP — a v2 item; on multi-GPU instances one GPU is used). See requirements.txt about the torch pin — it is for the original dev box only.

License

Proprietary — licensed, not open source. The software and its architecture remain the exclusive property of the copyright holder. Licensed users may install the binary distribution, train models on their own data, and use the resulting weights and predictions for their own business; copying, redistribution, modification, and reverse engineering are prohibited. See LICENSE.

Hardware notes (8 GB VRAM)

bf16 autocast (no GradScaler), micro-batch 4 × accumulation 8 (effective 32) at 640 by default — measured 4.4 GB peak on an RTX 5060 with the v0.2 stride-2 mask pathway. Hi-res options measured on the same card: 768/micro-batch 4 = 6.1 GB, 960/micro-batch 2 = 4.5 GB (sharper masks; recommended for large photos). tools/measure_vram.py is always the truth on new hardware. Do NOT push batch sizes past VRAM on Windows: instead of failing, WDDM silently pages GPU memory over PCIe (~12× slowdown at 100% reported GPU utilization). (PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True is unsupported on Windows and intentionally not set.)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

auspex_vision-0.2.1-cp313-cp313-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.13Windows x86-64

auspex_vision-0.2.1-cp313-cp313-win32.whl (5.5 MB view details)

Uploaded CPython 3.13Windows x86

auspex_vision-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

auspex_vision-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

auspex_vision-0.2.1-cp312-cp312-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.12Windows x86-64

auspex_vision-0.2.1-cp312-cp312-win32.whl (5.6 MB view details)

Uploaded CPython 3.12Windows x86

auspex_vision-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

auspex_vision-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

auspex_vision-0.2.1-cp311-cp311-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.11Windows x86-64

auspex_vision-0.2.1-cp311-cp311-win32.whl (5.6 MB view details)

Uploaded CPython 3.11Windows x86

auspex_vision-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

auspex_vision-0.2.1-cp311-cp311-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

auspex_vision-0.2.1-cp310-cp310-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.10Windows x86-64

auspex_vision-0.2.1-cp310-cp310-win32.whl (5.6 MB view details)

Uploaded CPython 3.10Windows x86

auspex_vision-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

auspex_vision-0.2.1-cp310-cp310-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file auspex_vision-0.2.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d9079407c19a158d64fdb9759038205651552e38e6ca35f214b5291c9e6d8457
MD5 d842ef1f7353509c80b2d65c69e9022d
BLAKE2b-256 3b6653b2c9008fa72f9a445cc96a2aa2ed37f972b7eb226664c70a1d28a9d998

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp313-cp313-win32.whl.

File metadata

  • Download URL: auspex_vision-0.2.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for auspex_vision-0.2.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 3f7e64c0fdd5643ec8f512e94f5905227b755e454a78190bdfc0eeaa3ee9ee43
MD5 dc311a168608c02543c9b10f80d102a0
BLAKE2b-256 b1fe65b7e3b739b699af73e7a71d5069840ae150700e6a795fff7c8470af27ce

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72012724bf203e3c93ca8efcd08f39f737795e8799a7ab657af42ec37134bb5b
MD5 76e0c149ef8fa389bd3c489bb08310aa
BLAKE2b-256 f0804572f09610e6ff581444dff7e350a1c6b24c8ee7ff690c24dcf32fd266ef

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 545d1dd77f297062101a75d6051460acb19f6a55f25bb47b10f705b5ee6ffaa0
MD5 0808d22d56e9964b70f1140a223bf028
BLAKE2b-256 6c953cd09f1a91affb49773e582aa3408c108825c468529e08c3ece00c196976

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 473d2eb9d56dc26b625e6dee8cd66375a95507b99bf60c2ad26633f4cb3435a3
MD5 f2c7084ed395babb46126b47368e9b86
BLAKE2b-256 484bb9901114249db7538901c74bf927d20844206dcafe217cde294561c516f5

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp312-cp312-win32.whl.

File metadata

  • Download URL: auspex_vision-0.2.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 5.6 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for auspex_vision-0.2.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 95b9cf7783993372f6d811fb47694c1924ba60e542f8c6e7cbd6e26f8995c30e
MD5 102eb8396635d3c6432ac88237146851
BLAKE2b-256 9e2ed3b50395bcee7cc97c4e2b3f0b9755c0e1af5f2d160d85d7c430a72dcf1e

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72c9fe6d24b76dd79660fa307a98ac641e4c6ebf7f1036b0558e9d8fca837f58
MD5 58cb05981f8c7ef45ba898d47845d635
BLAKE2b-256 d9a2ec0fdab8cb7ba980318f340d0bb8d8b18605c941ed745d20c9b0d926bca5

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2aa34bcf5f3ed45ed88268ec0b2f68e53dd94aa7decaf9393eba8344aed3b526
MD5 3627fa71a57c403841db5947f18929ff
BLAKE2b-256 3517ea7dcc1d8566a3a31817969b86eb6ff6f8c4947ad545340b4278323bed10

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2d3f32738febd3d933d34c083d9179cdf193525b7227f7af60b110c39e122046
MD5 ece9743886102cebecdb81bc6f4671f5
BLAKE2b-256 6b3799b1adfc1bbde9ea2fef65b8ba32a62a7eec3c50af678985581c21223038

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp311-cp311-win32.whl.

File metadata

  • Download URL: auspex_vision-0.2.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 5.6 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for auspex_vision-0.2.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 b080815185f5da1a8ced0353862e3510eecd7558c66161cc9a53b0960d2106d7
MD5 02bada810c4670f0d4f029e871b4ddf1
BLAKE2b-256 6017929b4ecae384d998a1b8d8f03d2518a2f201ad93c6ae37d0193f8e6f08e1

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 474f28450c8cc532a517150064d02e819d4682ca8c53203b5b1276147a7662e9
MD5 ff5154791310f4e7240f3090bd868e65
BLAKE2b-256 3a3c9caf86c516d404175b68bbe4edd125b62d838a4487c870e8b5a4701ee071

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca5b8dbca5d5ad90b27705d5d279171d464913ed96f303d457961b10ef75fc74
MD5 a8a86c948310638687b68a9b1078b116
BLAKE2b-256 af827a56a261617d49393fe2d57f8e978a524beeb84d93d0a70582c0b965b642

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 47a5bf34e2f7923ee78b9c574b75694e30f5941d98fbc396aaa27819502d67ee
MD5 e7e6b84164a6eedc09ec5ce485e1d8d6
BLAKE2b-256 7cd75b16beb020791b7e1b4647458b770cc38d433d2ebcae22dbd8c99b984ead

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp310-cp310-win32.whl.

File metadata

  • Download URL: auspex_vision-0.2.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 5.6 MB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for auspex_vision-0.2.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 f76cd25bf4cb7d75587e4cb87cb28bc61dda0a35a9ab89148b231a7ec804e1f8
MD5 30ced53993dc23023bb4787870a9e933
BLAKE2b-256 58fbf598200e23df611351dfb9932df016f61665b458fedbc87fbc07639ba699

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8b5a4a053e2a306661104b2fb7c3b12e3f7d1e59bd11ce2729e455ef032bd43
MD5 636f0d627d194e374568f79a294002a1
BLAKE2b-256 5f6de7bfa9cb6d04f93ca7643ee01ebfd523de62ed77e5851adbfed64207ae17

See more details on using hashes here.

File details

Details for the file auspex_vision-0.2.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c58c0354b0b1bf727533825a5102b2d5d32027c4085ab9c2f6e4ac6f1dbc703
MD5 d93cff5447bb96ccf87674016ff8b03a
BLAKE2b-256 a7e096d951f8b1af528b9519b4c10bc0853f6f44801572ccddeae2d380225d5f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page