naver/anny

Anny, A Free and Interpretable Human Body Model for all ages, written in PyTorch.

Anny – a differentiable human‑body mesh model (PyTorch)

What it is

  • Anny is an open‑source, PyTorch‑based parametric 3D human body model that can represent a wide range of body shapes—from infants to elders—using a single topology and parameter space. It builds on the MakeHuman assets and adds its own rig, topology options, and facial‑action blendshapes.

Key features

  • Full‑body and part‑specific models – you can load the whole body, just hands, or just the face.
  • Multiple rigs & topologies – a compact 104‑bone "anny" rig (default) for most use‑cases, a full 163‑bone MakeHuman rig for exact compatibility, and support for SMPL‑X, SMPL and SOMA‑X topologies.
  • Shape, phenotype, and local‑change parameters – high‑level shape knobs (e.g., height, weight) plus fine‑grained local edits (e.g., pregnant stomach) and facial action units.
  • Differentiable – all operations are pure PyTorch, so gradients flow through pose, shape, and expression parameters, enabling learning‑based pipelines.
  • Free & extensible – released under Apache‑2.0; the underlying MakeHuman assets are CC0, and the package can be extended with custom blendshapes.

Installation

# Full install (includes optional non‑free dependencies like SMPL‑X support)
pip install "anny[smpl,examples]"
# Free‑only install (no non‑commercial assets)
pip install "anny[examples]"
# Minimal core install
pip install anny

You can also install the latest source directly from GitHub with the @git+https:// syntax.

Quick‑start code

import torch, anny, trimesh

# Create the model (default compact rig, full mesh topology)
model = anny.Anny(local_changes="default", facial_actions="all").to(torch.float32)

# Pose: identity matrix for every bone (batch‑size 1)
pose = torch.eye(4)[None, None].repeat(1, model.bone_count, 1, 1)

# Shape: set every phenotype to a mid‑value (0.5)
phenotype = {k: 0.5 for k in model.phenotype_labels}

# Local edits (e.g., pregnant stomach)
local = {"stomach-pregnant-incr": 1.0}

# Facial actions (jaw open, smile, …)
facial = {"jawOpen": 0.8, "mouthSmileLeft": 0.4}

# Forward pass – returns a dict with vertices, etc.
out = model(pose_parameters=pose,
            phenotype_kwargs=phenotype,
            local_changes_kwargs=local,
            facial_actions=facial)

# Save as a .ply file
trimesh.Trimesh(vertices=out["vertices"].squeeze(0).numpy(),
                faces=model.faces).export("anny_output.ply")

The model accepts both dictionary‑style and stacked‑tensor inputs, making it easy to integrate into existing pipelines.

Documentation & demos

  • Tutorials – a set of HTML tutorials (shape, pose, pose transfer, texture, alternative models) are shipped in the tutorials folder and hosted at https://naver.github.io/anny/build/….
  • Interactive demo – run python -m anny.examples.interactive_demo to launch a Gradio UI for real‑time manipulation of pose, shape, and facial actions.
  • Demo website – a live demo is available at http://anny-demo.europe.naverlabs.com/.

Technical notes

  • The default rig="anny" uses 104 bones and a triangulated mesh (topology="anny"). For full MakeHuman compatibility use rig="makehuman" and topology="makehuman".
  • Pose parameterizations have changed in v0.6 ("local-ref" is now default). Legacy data can be converted with anny.utils.pose.transfer_pose_parameters.
  • First model instantiation may take a few minutes while pre‑computed blend‑shape data are cached under ~/.cache/anny/ (customizable via ANNY_CACHE_DIR).

Use cases

  • Learning‑based human pose estimation – because the model is differentiable, you can back‑propagate from image‑based losses to recover pose and shape.
  • Animation & virtual try‑on – generate realistic body meshes with controllable shape, pose, and facial expressions.
  • Research on age‑spanning body modeling – the same topology works for infants, children, adults, and elders, simplifying cross‑age studies.
  • Interoperability – export to SMPL‑X, SMPL, or SOMA topologies for use with existing pipelines that expect those formats.

License

  • Core code: Apache‑2.0.
  • Asset packs (MakeHuman MPFB2, Face Units, SOMA‑X) are CC0 or Apache‑2.0. The optional SMPL‑X topology is provided for non‑commercial use only.

Citation If you use Anny in a publication, cite the ECCV 2026 paper:

@inproceedings{anny,
  title={Human Mesh Modeling for Anny Body},
  author={Romain Brégier and Guénolé Fiche and Laura Bravo‑Sánchez and Thomas Lucas and Matthieu Armando and Philippe Weinzaepfel and Grégory Rogez and Fabien Baradel},
  booktitle={Computer Vision -- ECCV 2026},
  year={2026},
  publisher={Springer Nature Switzerland},
  pages={170--188}
}

Bottom line: Anny is a modern, fully differentiable human‑body mesh library that lets researchers and developers generate, edit, and learn from 3‑D human shapes across the entire lifespan, with flexible rig/topology options and a clean PyTorch API.

Related

  • Project
  • Project
  • Project
  • Project
  • Project