Metadata-Version: 2.4
Name: ego-vision
Version: 0.1.23
Summary: Composable egocentric vision model components for hand and camera geometry pipelines.
Author: Macrodata Labs
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/macrodata-labs/ego-vision
Project-URL: Repository, https://github.com/macrodata-labs/ego-vision
Project-URL: Issues, https://github.com/macrodata-labs/ego-vision/issues
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Provides-Extra: torch
Requires-Dist: huggingface-hub; extra == "torch"
Requires-Dist: safetensors; extra == "torch"
Requires-Dist: torch; extra == "torch"
Provides-Extra: detection
Requires-Dist: ego-vision[torch]; extra == "detection"
Requires-Dist: lap>=0.5.12; extra == "detection"
Provides-Extra: mano
Requires-Dist: ego-vision[torch]; extra == "mano"
Requires-Dist: scipy; extra == "mano"
Requires-Dist: smplx; extra == "mano"
Provides-Extra: vggt-omega
Requires-Dist: ego-vision[torch]; extra == "vggt-omega"
Requires-Dist: einops; extra == "vggt-omega"
Requires-Dist: pillow; extra == "vggt-omega"
Requires-Dist: safetensors; extra == "vggt-omega"
Requires-Dist: torchvision; extra == "vggt-omega"
Provides-Extra: hawor
Requires-Dist: ego-vision[torch]; extra == "hawor"
Requires-Dist: joblib; extra == "hawor"
Requires-Dist: natsort; extra == "hawor"
Requires-Dist: opencv-python-headless; extra == "hawor"
Requires-Dist: scikit-image; extra == "hawor"
Requires-Dist: timm; extra == "hawor"
Requires-Dist: torchvision; extra == "hawor"
Requires-Dist: smplx; extra == "hawor"
Provides-Extra: models
Requires-Dist: ego-vision[detection,hawor,mano,vggt-omega]; extra == "models"
Provides-Extra: hot3d
Requires-Dist: projectaria-tools>=2.1.2; extra == "hot3d"
Provides-Extra: rerun
Requires-Dist: av; extra == "rerun"
Requires-Dist: rerun-sdk; extra == "rerun"
Dynamic: license-file

# ego-vision

Composable egocentric vision model components and pipelines for hand and camera
geometry.

The initial scope is intentionally narrow: raw model wrappers plus an
episode-level pipeline boundary for the best VGGT-Omega + HaWoR stack.

```text
episodes of av.VideoFrame
  -> VGGTOmegaModel
  -> HaWoRHandReconstructor
       YoloHandDetector + HaWoRModel + ManoLayer
  -> HaWoRHandMotionInfiller
  -> HandTrackingPipeline result
```

The `egovision.models` namespace contains raw model components. The
`egovision.pipelines` namespace owns model scheduling and hand-tracking
orchestration.

VGGT-Omega and the HaWoR inference modules needed by the pipeline live under
`egovision.models`, so users do not need separate research-repo checkouts or
`PYTHONPATH` setup. Checkpoints are still loaded from local paths or Hugging
Face.

```python
from egovision import (
    EpisodeInput,
    HandTrackingConfig,
    HandTrackingPipeline,
    HaworReconstructionConfig,
    VggtOmegaConfig,
)

pipeline = HandTrackingPipeline(
    HandTrackingConfig(
        hand_reconstruction=HaworReconstructionConfig(batch_size=64),
        camera_pose_estimator=VggtOmegaConfig(batch_size=1),
    )
)
results = pipeline.predict_episodes(
    [EpisodeInput(frames=av_frames)]
)
```

## Install

```bash
pip install ego-vision
```

Heavy model dependencies are optional:

```bash
pip install "ego-vision[models]"
```

## Development

```bash
uv sync --dev
uv run pytest
uv run ruff check --force-exclude .
uv run ruff format --force-exclude --check .
uv run ty check
```

Local hooks use the same commands:

```bash
uv run pre-commit run --all-files
```

## Release

Publishing is handled by GitHub Actions with PyPI trusted publishing.

To release:

1. Bump `version` in `pyproject.toml`.
2. Push the commit to `main`.
3. The `Publish package` workflow builds the wheel and sdist, publishes to
   PyPI, then creates the `vX.Y.Z` tag and GitHub release.

The workflow can also be run manually from GitHub Actions with target
`testpypi` or `pypi`. The normal release path only needs the `pypi` trusted
publishing environment configured for the `ego-vision` project.
