auspex-engine
Train your own auto-annotator from one labelled dataset — then let it label the rest.
Point it at a folder of images plus the annotations you already have (CVAT, COCO, YOLO, Pascal VOC or LabelMe). It trains a separate specialist model for each annotation type present, bundles them into a single portable file, and labels unseen images back into re-importable CVAT XML and COCO JSON.
No assumptions about your domain, your label names, or where you run it.
pip install auspex-engine
Quick start
from auspex_engine import Auspex
# TRAIN — format is auto-detected; only the annotation types present get trained
Auspex().train(dataset="ann.xml", images="imgs/", output="runs/exp1", epochs=50)
# -> writes one file: runs/exp1/auspex_model.pt
# LABEL new images with it
results = Auspex("runs/exp1/auspex_model.pt").predict("test/") # path | folder | ndarray
results.save("out/") # annotated images + predictions_cvat.xml + predictions_coco.json
results.detections # [{type, label, score, box|points|x,y}, ...]
results.plot() # annotated image as a numpy BGR array
Or from the command line:
auspex train --dataset ann.xml --images imgs/ --output runs/exp1 --epochs 50
auspex predict --model runs/exp1/auspex_model.pt --source test/ --output out/
Useful flags: --tasks bbox,tag (train a subset) · --device cpu · --imgsz 1024 ·
--batch 8 · --set KEY=VALUE (override any config knob).
What it learns
auspex works with five annotation types and trains a dedicated model for each one it finds in your data — anywhere from one to all five in a single run. You never pay for types you don't use.
| Type | What it marks |
|---|---|
| Bounding box | A rectangle around each object |
| Polygon | A free-form closed outline around a shape or region |
| Keypoint | A single point / landmark |
| Polyline | An open multi-point line or path |
| Tag | A whole-image label, with no location |
Datasets it reads
The format is auto-detected. A format that can't express a given type simply contributes none of it, and that model is skipped.
| Format | Point it at | bbox | polygon | polyline | keypoint | tag |
|---|---|---|---|---|---|---|
| CVAT for Images 1.1 | the exported .xml |
✓ | ✓ | ✓ | ✓ | ✓ |
| COCO | the .json |
✓ | ✓ | ✓ | ✓ | ✓ |
| YOLO | data.yaml or the dataset folder |
✓ | ✓ | — | — | — |
| Pascal VOC | the folder of per-image .xml files |
✓ | — | — | — | — |
| LabelMe | the folder of per-image .json files |
✓ | ✓ | ✓ | ✓ | ✓ |
Anything auspex can't use — COCO RLE masks, degenerate geometry, YOLO pose lines, LabelMe circles — is skipped with a counted warning rather than silently dropped.
Outputs
runs/exp1/
auspex_model.pt ← every trained model, in one portable file
training_summary.json per-task metrics, which heads trained, partial-run flag
master_train_log.txt
<per-task folders with individual checkpoints and CSV training logs>
Prediction writes annotated images plus predictions_cvat.xml and predictions_coco.json — the CVAT
file imports straight back into a CVAT task, so a human can correct the machine's work and you can
retrain on the result.
Continue training from a previous model
When people have corrected the auto-labels, retrain from the model you already have instead of from scratch — it keeps what it learned and needs far fewer epochs:
Auspex().train(dataset="corrected.xml", images="imgs/", output="runs/v2",
base_bundle="runs/v1/auspex_model.pt", epochs=15)
auspex train --dataset corrected.xml --images imgs/ --output runs/v2 \
--base-bundle runs/v1/auspex_model.pt --base-allow-unsigned --epochs 15
- Every head starts from its best checkpoint in the base bundle — box, polygon, keypoint, polyline and tag.
- Classes are matched by name. Classes in both keep what they learned (even if their position moved), new classes can be added — they start fresh while everything else carries over — and removed ones are dropped.
- Never silent: a head the base bundle doesn't have, or whose architecture you changed, trains from
scratch, and
training_summary.json→head_initrecords per head whether it started from the bundle or from scratch (and why), plus the classes kept / added / removed. Use--set BASE_BUNDLE_STRICT=trueto fail such a head instead. - Verified before loading: pass
base_verify_key="their.pub"for a model you didn't produce — a bundle is executable content. On the CLI you choose a verification mode, just as withauspex predict. - The train/val split is stable per image, so images the base model trained on never land in the
new run's validation set — warm-start metrics stay honest as your dataset grows. One exception, and
it is flagged: the first warm start from a bundle made before 0.3.2 (which used a shuffled split)
validates partly on images the base trained on, so its val metrics read optimistic
(
training_summary.json→base_bundle.split.clean_val: false). Retrains after it are clean. - Write the new model to a new name or folder: a run refuses to overwrite its own base bundle, so a failed run can never cost you the model you started from.
On our reference retrain, an 8-epoch warm start reached 94–96% of a full 30-epoch retrain's quality on the keypoint and polyline heads in under a third of the time, and added classes learned as well as from scratch. Box (YOLO) heads gain the most from a somewhat longer budget — about a third of your usual epochs is a good starting point.
One file to move
Every trained sub-model is bundled into a single auspex_model.pt. Copy or version that one file
to move the whole model between machines — no per-task folder juggling.
from auspex_infer import AuspexModel # detection only, no training code needed
AuspexModel("auspex_model.pt").predict("photo.jpg").save("out/")
Signed bundles
A model bundle is executable content, so auspex can sign and verify one with an ed25519 key. Pin the public key of whoever produced a model and anything not signed by them is refused:
auspex keys generate --out mykey # once — keep mykey, hand out mykey.pub
auspex train ... --sign-key mykey # producer signs at train time
auspex predict --model m.pt --verify-key mykey.pub # consumer pins the signer
Verification happens before anything is unpacked or loaded, and requires torch >= 2.6.
Tuning
Every knob is settable via --set KEY=VALUE, an environment variable, or a keyword argument to
train(). The common ones:
| Knob | Default | Purpose |
|---|---|---|
--epochs / YOLO_EPOCHS … |
50 |
Training budget (fans out to every head) |
--imgsz / INPUT_SIZE |
640 |
Image size; raise it to catch small objects |
--device / DEVICE |
cuda |
cuda or cpu |
--batch / YOLO_BATCH_SIZE |
8 |
Batch for the box + tag heads |
--no-amp |
(AMP on) | Force fp32 — fixes NaN validation loss on some newer GPUs |
AUSPEX_TASK_SUBPROCESS=1 |
off | Isolate each head in its own process; frees all GPU memory between heads on small cards |
An explicit per-key override always beats a convenience shortcut, so
train(imgsz=640, POLYGON_SEG_INPUT_SIZE=1024) keeps the polygon head at 1024.
Machine-readable progress
For a UI or orchestrator, training emits stable progress events you can parse instead of scraping log
text (set AUSPEX_PROGRESS=0 to silence):
AUSPEX_PLAN heads=bbox,polygon,keypoint,polyline
AUSPEX_HEAD_START head=polygon index=2 total=4
AUSPEX_EPOCH head=polygon epoch=19 total=100
AUSPEX_HEAD_END head=polygon status=ok
Requirements
Python 3.10 / 3.11 / 3.12 on Windows x64, Linux x86_64 / arm64 (manylinux, glibc 2.17+) or macOS Apple Silicon. A CUDA GPU is recommended for training but not required.
These are compiled wheels — native binaries, no readable Python source, and no source distribution.
pip needs a wheel matching your platform; Intel Macs are not supported.
Ultralytics is held at 8.4.52–8.4.90. Newer releases make box training diverge on small datasets, and pip enforces the range automatically.
torch >= 2.6.0 installs automatically. To pin a specific CUDA build, install torch first and pip
will leave it alone:
pip install torch --index-url https://download.pytorch.org/whl/cu121
pip install auspex-engine
Licence
auspex-engine is proprietary software, free to use. You may download, install and use it —
including commercially — and the models you train are yours. Redistribution, modification and
reverse-engineering are not permitted. The full terms ship inside the wheel (LICENSE).
Third-party components. auspex-engine depends on Ultralytics, which is licensed AGPL-3.0; your use of that component is governed by AGPL-3.0, which prevails over the terms above for that component. Full notices ship in the wheel (
THIRD_PARTY_LICENSES).
Release files for auspex-engine 0.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 17.0 MB
Release files / auspex_engine-0.3.3-cp312-cp312-win_amd64.whl
| Download URL | auspex_engine-0.3.3-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9a4faa62bf5528c51db9283328869cf94e34275f89ef9e6754024279565e376b
|
|
BLAKE2b-256 checksum How to use checksums |
e1a35f65280db2dcfb1412205b1442dc93680fdf8939604ce36d09a63a096453
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | auspex_engine-0.3.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
cbf15d044986fe38f1fa3b5375a267d56c0ffe7da2bfd81a2ebf4ec8430da1d4
|
|
BLAKE2b-256 checksum How to use checksums |
741017c143fcdddac3a414c5f66f2e1391dcb809e3596d258be17d753cfa674d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | auspex_engine-0.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
26eb49d1dc0708c99e17cf9e53fb3e97be8fa2335f07d073554d59a82706381a
|
|
BLAKE2b-256 checksum How to use checksums |
5c059d90893a073574f22693333bb6bfed2c4db25dab67de103d618455dbd43d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | auspex_engine-0.3.3-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5f48580df97d68c39ba2652243410f2ff7e626fc9e02d12eeb8c64272e3de044
|
|
BLAKE2b-256 checksum How to use checksums |
5207fde3ec11a76143233b41165974eb8d0b51bc99bd4bd69d61cff0f3778839
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp311-cp311-win_amd64.whl
| Download URL | auspex_engine-0.3.3-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
851ee6ca5efb1dae9935e505f96d3e8df6c596143efd3ec78f42c2babcdc119d
|
|
BLAKE2b-256 checksum How to use checksums |
86fb46043c8c7233410033b6934029d927394f50e9b8ffc430887b9e02dfe797
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | auspex_engine-0.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d7ed5460315b0483044916f5325b0dc50db9d2f838ac0b5d772f94e110f46e50
|
|
BLAKE2b-256 checksum How to use checksums |
c1151d13cf4bd1379b5f6f219f3d703b815ce6bf0176645ceced248d8d7e793a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | auspex_engine-0.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
ccd644ca73b8ff7fc77cb77f2e1d0f66a876a94c1128f7680f230a5df1de3b27
|
|
BLAKE2b-256 checksum How to use checksums |
8b8ab02054ff987da52ea8686a64d0e3ec90947c22000158f96ef126eff9cf22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | auspex_engine-0.3.3-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e4fb4cf2b0fffcb49f4cdf688ab399bf0753c22da7e382b968d23917205be7d5
|
|
BLAKE2b-256 checksum How to use checksums |
3bc159e0ad9f115dc2e3940377630627cea98cb0d28f9316706d49d6ff4f12e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp310-cp310-win_amd64.whl
| Download URL | auspex_engine-0.3.3-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
79fb6e671d6234b20fa8b972922a23ed8f05eda3badde8e7cc5a22615f6cabfe
|
|
BLAKE2b-256 checksum How to use checksums |
c0ca1822b035e96d7fe19e84e5bc5344efaec1f84d74b83a86bf4bc92eeec2f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | auspex_engine-0.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2ab3bd8ca780cbfaf07cfdf3c683d2e1d71d6eb080b5ec786a176ea4a65239a6
|
|
BLAKE2b-256 checksum How to use checksums |
0a8e09937dc0bc851d92fc2ab8f7b1e487d5ee1e287d10016b64be2aad82b432
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | auspex_engine-0.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
2839dbc6056e52ea6ee5888e8cb7cf5bd0b4fff611be8a33af739a5f99431d77
|
|
BLAKE2b-256 checksum How to use checksums |
cce3f1e1d86d51d17ee556eb0cd30ba1ad16c3f97310be941b53227151e1a2dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / auspex_engine-0.3.3-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | auspex_engine-0.3.3-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
acf109d4f83516fb0c4b5c96a97305d7056c798feab6b4e4dd49513988508876
|
|
BLAKE2b-256 checksum How to use checksums |
fa314ead1585a4b222ed35d10eb7d1d0b2e7a0ff6711c6381776cba6b1963c70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency log