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

Current wheel coverage: Python 3.11 on Windows x64 (more platforms via the CI wheel matrix as needed). 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.0-cp313-cp313-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

auspex_vision-0.2.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

auspex_vision-0.2.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

auspex_vision-0.2.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

auspex_vision-0.2.0-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.0-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.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c505676410541d667fe8e66c897d63c3361a4ddd89a9ffd7964fadabd4b942bf
MD5 a1f0dad67f0d350a77d42f1e7105168c
BLAKE2b-256 45ca594330d4d9da8a8b92f6b51b3b0118a1376059690acff6b0595aa96e5fa4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: auspex_vision-0.2.0-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.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 2bb232a5d3cf1e5cae3e55534ca28d24db368dd984cbfbd2eee896feac0263a1
MD5 39e31b8122aec4e5d8aa90c21299fd80
BLAKE2b-256 e131d8f2278ea504d2e7fffcf177631460ee0de85a2537d53fee777235491054

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7790f1d493dffd0df108cfac3fc920d0fdf2703291a111dcf4dab34f439e811c
MD5 e61ee891ca8dc45a5d879264d5a33028
BLAKE2b-256 7a81b7bb253e596e77098e98ad9841eb33fb5ae64b75b94744294ca977407ceb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99994efd5768e36bdc8b043cfde380b09d464befa9c4ce8af9b41f8187933dd8
MD5 c31c89e7c353b1bf0ba3891655bd0568
BLAKE2b-256 45448bc7ccef38ea57b3295d0544d9e90db8d5b1914c2b083f797c845b3a3fd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 df03ec6c770faf8dd0014c42ee08180fa60ba0606653c3bd16b27357edb2e272
MD5 b6dad0126e99d22342708c29d2bb5640
BLAKE2b-256 3d83adefd013c6474b35903675381324e07e5d1e1e14b332b060d9331d29f06b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: auspex_vision-0.2.0-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.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 1bebd56d63a677930e182337cd85b2b1600da2d9be61989b06c2913d2563f4fa
MD5 a816518e19ddce46b8e54f1023480810
BLAKE2b-256 6ff2e825c7ecc64083eb826d2eec64386c9a11ed4082380ace279a7bd0955149

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0ab994de37b7b46ed5e5758df11f989b190bdc139f0b2a6e3689d8c84994b74c
MD5 a349172ec9b8b4797e1f8f0ead95c5cf
BLAKE2b-256 eeb5611a84796d3d8f140f43e95f4c1cd0a079a05b6eed2cd8d33fa9f26d9e9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8c4f4e079613c317cfbd23867acd0aa95563ca5a89734a0fff4b334a90077309
MD5 89dd383d6b4c0273af1f85fec439275e
BLAKE2b-256 f597ede47f2c9ee0e2fb8473665c9086a644fcec3662652343442829a98b4991

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 24b09f280353a865514154b82d5f98e93b3793fca24064022df0a9b3b8f8b3cb
MD5 362fe1df97989c67994023b77dee631b
BLAKE2b-256 38ce6ea71691adc075d4d695493c28441e7b24aa120b6d55fd09418ac9a97af1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: auspex_vision-0.2.0-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.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 c3f326d922b0106945ee77df1e5d87c4789ac122dea8eed0bb19ff65986467ea
MD5 1f790b428568061d7dce4b005181ca28
BLAKE2b-256 3970d595c254bf46912ab36c8a30af8c8025a554a3e1daec749455b2ced78dd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 da05b4f7755acf5710826a575ca7141238ea2f1b389aa9c7cf5c4ecbdb9536fd
MD5 2540ceaf7d64ec8615cfc0bd9fc5b22b
BLAKE2b-256 f50a0e53d52739d1890c91c5e918b31cdffa044c5a6b4c61d94b3f989c281126

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f82483d977fe727ddfa73b4e219bd96f6ed5a1a0726f6638e32fb3dcf8d0d0fe
MD5 71181165ee183fe399fd713686bd298e
BLAKE2b-256 a8a39333cb78e210b229be704122323faa9ddbb49f5337fe69bedf1a265fe487

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 85b21e48444daed53d2fbcba17b6e3a3b1c3d37179d2ff68ac5bd7c558349fa4
MD5 64f9f68b2b3567cd4c78f8ecbd3bc983
BLAKE2b-256 721272009aace1589c6c306d78223a3a90e89c3be38c9a1d763e1bf22fa7d806

See more details on using hashes here.

File details

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

File metadata

  • Download URL: auspex_vision-0.2.0-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.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 34e88d633d8d85c0c35d7f60d32c923ea361341fba858b313ec04782c404d20c
MD5 3383db15978e4888038ee73fe4a00e02
BLAKE2b-256 0d0b70f33e240eb6e6dc181470ccf7607b2a72faed715a744a2f021c4e1224f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c09f98e7b08e6de316a6e8256cff452feebd6a4290fa2e62254349488e34a218
MD5 9d08379f69737270fef8ca2722580140
BLAKE2b-256 649c0c13086ca9bb23def21ba36aef4241489881c93649b6c9b91ccbaf949c17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for auspex_vision-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b705def23f74d8c51a89abe250864cde5f402c7548fbb8d17550839036a79918
MD5 fffe48304d8a95eb1f9795bd94bdd2e1
BLAKE2b-256 e58c9be51575d846b2675a4f3f52a519ba1913837bc0c55df222ef602d126e36

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