Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

acaua

Apache-2.0 PyTorch-native computer vision. One API — predict, train, export — across detection, segmentation, OBB, OCR, VLM, and zero-shot.

One class to learn. One to remember.

import acaua

model = acaua.Model.from_pretrained("CondadosAI/rtdetr_r50vd")
results = model.predict("image.jpg")
print(results.boxes, results.labels, results.scores)

Why this exists

The Python computer-vision stack has three ugly choices today:

  • Ultralytics — great DX, but the weights are AGPL. Ship them in anything commercial and you inherit the whole AGPL umbrella. Lawyers say no.
  • mmdetection / mmsegmentation — depth, but registries, config DSLs, and mmengine/mmcv abstractions that feel foreign to anyone who wrote a torch.nn.Module in the last decade.
  • PaddleDetection / PaddleOCR — state of the art, but you're shipping Paddle custom ops. Different ecosystem. Different GPU kernels. Different problem.

And then there's Roboflow Supervision — Apache-2.0, pythonic, but intentionally thin. It handles annotation and post-processing, not training and multi-task model serving.

acaua fills the gap: an Apache-2.0, PyTorch-native, pythonic library that unifies detection, segmentation, OCR, VLM, and zero-shot tasks behind a single predict / train / export surface.

Install

pip install acaua

Torch and Transformers come as direct deps. First install is a few hundred MB; get a coffee.

The parity demo

Two tasks, one API:

import acaua

# Object detection
det = acaua.Model.from_pretrained("CondadosAI/rtdetr_r50vd")
det_result = det.predict("http://images.cocodataset.org/val2017/000000039769.jpg")
print(det_result.boxes.shape, det_result.labels.tolist(), det_result.scores.tolist())

# Instance segmentation — same .predict(), different task
seg = acaua.Model.from_pretrained("CondadosAI/mask2former_swin_tiny_coco_instance")
seg_result = seg.predict("http://images.cocodataset.org/val2017/000000039769.jpg")
print(seg_result.masks.shape)  # adds masks on top of the common fields

# Plug into Roboflow Supervision for annotation
detections = det_result.to_supervision()

The signature equality is not an accident — tests/test_predict_parity.py is a contract test that fails CI if any adapter drifts.

What's in v0.1

Task Backend Weights
Object detection transformers AutoModelForObjectDetection (RT-DETR) CondadosAI/rtdetr_r50vd
Instance segmentation transformers AutoModelForUniversalSegmentation (Mask2Former-Swin-Tiny) CondadosAI/mask2former_swin_tiny_coco_instance

Both adapters:

  • Share the same .predict() signature (contract-tested).
  • Wrap the forward pass in torch.inference_mode().
  • Accept the same input Union: str (path or http/https URL), pathlib.Path, PIL.Image, np.ndarray (HWC uint8 RGB), torch.Tensor (CHW float32), or a sequence of any of the above.
  • Batch under the hood with batch_size=8 by default.
  • Resolve device auto → cuda > mps > cpu, or take an explicit device= kwarg.
  • Auto-reject BGR-smelling numpy arrays (OpenCV users, you know who you are) with an error that names the exact fix.

What's coming

v0.1 v0.2 v0.3
predict detection + instance segmentation + OBB, OCR + VLM, zero-shot
train per-backend idioms (not parity-gated) signature parity across adapters —
export (empty extras shipped) ONNX parity TensorRT, CoreML

Tasks arrive as extras to avoid bloating the core install:

pip install acaua[ocr]         # doctr / surya family (v0.2+)
pip install acaua[vlm]         # Florence-2, Qwen-VL, Moondream (v0.3+)
pip install acaua[zeroshot]    # GroundingDINO, SAM2, OWLv2, YOLO-World (v0.3+)
pip install acaua[export]      # ONNX, TensorRT, CoreML (v0.2+)
pip install acaua[all]

The extras claim their slots today and ship empty — installing acaua[ocr] right now is a no-op, but when v0.2 lands it transparently picks up the new adapter.

License

Code: Apache-2.0. See LICENSE.

Weights: every weight in the default load path has an audited Apache-2.0 upstream, mirrored under CondadosAI/* at a pinned commit SHA. See LICENSES.md for the full matrix, attribution chains, and policy notes. Non-Apache weights raise LicenseError unless you pass allow_non_apache=True.

How acaua differs from the alternatives

License API PyTorch-native? Tasks in scope
Ultralytics AGPL weights class per task yes detection, pose, classification, segmentation
mmdetection Apache-2.0 registries + config DSLs yes (but mmengine) detection, segmentation, OBB
PaddleDetection Apache-2.0 Paddle-native no (Paddle) everything, but in a different ecosystem
Supervision Apache-2.0 annotation + post-processing yes not a model library
acaua Apache-2.0 code + weights one class, three verbs yes detection, segmentation now; OBB/OCR/VLM/zero-shot next

If Ultralytics' license wasn't AGPL, it would fit this slot. It is, so acaua is here.

Design non-negotiables

These are what acaua is actively not doing, so you can stop us if you see us drift:

  • No config-file DSL. No registry system. No "model zoo" registry class.
  • No framework fork. PyTorch idioms only. No mmcv / mmengine. No Paddle custom ops.
  • No re-implementing. Extend torchvision.models.detection and transformers where possible.
  • Per-adapter LOC budget. Every adapter module stays under 300 logical lines. If we blow that budget, the abstraction is leaking — stop and redesign, don't just raise the limit.
  • License-audit every weight. Code license isn't enough; weight license is the actual ship-blocker.

Development

git clone https://github.com/CondadosAI/acaua
cd acaua
uv sync --group dev
uv run pytest tests/ -m "not e2e"

CI (.github/workflows/ci.yml) runs ruff, mypy, the adapter LOC budget script, the unit suite on Python 3.10–3.13 with a 90% coverage floor, plus one E2E job. Nightly runs the full cross-OS matrix.

Contributing

Open an issue before a PR. For new adapters: the 300-line LOC budget is real and CI-enforced. If your adapter needs more than that, the abstraction is probably leaking and we need to design before we code.

Acknowledgements

acaua is a thin layer over work done by the PyTorch team, Hugging Face, torchvision, Roboflow Supervision, and the authors of RT-DETR, Mask2Former, and Swin. See LICENSES.md for the full chain.


The name is acauã — a Brazilian bird of prey (Herpetotheres cachinnans) that hunts snakes. Named for where the library was made.

Metadata

Release files for acaua 0.1.0.dev0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for acaua 0.1.0.dev0
File Size Uploaded Provenance Actions
acaua-0.1.0.dev0.tar.gz 194.7 kB With provenance Details for acaua-0.1.0.dev0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for acaua 0.1.0.dev0
File Interpreter ABI Platform Actions
acaua-0.1.0.dev0-py3-none-any.whl Python 3 none any Details for acaua-0.1.0.dev0-py3-none-any.whl

Total release size: 221.5 kB

Release files / acaua-0.1.0.dev0.tar.gz

Download URL acaua-0.1.0.dev0.tar.gz
Size 194.7 kB
Tags Source
SHA-256 checksum
How to use checksums
135fb7ed736254df6699f23a6ab1ee0f0e49cbd42192e031f9d1ed1fe053527f
BLAKE2b-256 checksum
How to use checksums
32f2ab60c8deee129481c9db291afa5b04ccb70c2bc9939f9bb3772413b15df0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Apr 18, 2026.

Transparency log

Release files / acaua-0.1.0.dev0-py3-none-any.whl

Download URL acaua-0.1.0.dev0-py3-none-any.whl
Size 26.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae03ca93c1b61c75f1930ab75730a0f48636241abd794fff58a5866f1c3ce85b
BLAKE2b-256 checksum
How to use checksums
95bef479b0708141e364facf6e23a2f51e400906a8831b140dcd94a2f7892015
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Apr 18, 2026.

Transparency log

Security for acaua 0.1.0.dev0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for acaua-0.1.0.dev0.tar.gz

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 Apr 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page