naver/anny

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

Anny – 微分可能な人体メッシュモデル (PyTorch)

概要

  • Annyは、オープンソースのPyTorchベースのパラメトリック3D人体モデルであり、単一のトポロジーとパラメータ空間を使用して、乳幼児から高齢者までの幅広い体型を表現できます。MakeHumanアセットを基盤とし、独自のライグ、トポロジーオプション、および顔アクションのブレンドシェイプを追加しています。

主な機能

  • 全身および部分別モデル – 全身、手だけ、または顔だけをロードできます。
  • 複数のライグおよびトポロジー – ほとんどのユースケース向けのコンパクトな104ボーンの"anny"ライグ(デフォルト)、完全な互換性のための163ボーンのMakeHumanライグ、およびSMPL-X、SMPL、SOMA-Xトポロジーのサポート。
  • 形状、フェノタイプ、およびローカル変更パラメータ – 高レベルの形状ノブ(例:身長、体重)に加えて、細粒度のローカル編集(例:妊娠中の腹)および顔アクションユニット。
  • 微分可能 – すべての操作は純粋なPyTorchであり、ポーズ、形状、表情パラメータを通じて勾配が流れるため、学習ベースのパイプラインを可能にします。
  • 無料かつ拡張可能 – Apache-2.0の下でリリース;基盤となるMakeHumanアセットはCC0であり、パッケージはカスタムブレンドシェイプで拡張できます。

インストール

# 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

@git+https://構文を使用して、GitHubから最新のソースを直接インストールすることもできます。

クイックスタートコード

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")

モデルは辞書スタイルの入力とスタックされたテンソル入力の両方を接受するため、既存のパイプラインへの統合が容易です。

ドキュメントとデモ

  • チュートリアル – 一連のHTMLチュートリアル(形状、ポーズ、ポーズ転送、テクスチャ、代替モデル)はtutorialsフォルダに同梱され、https://naver.github.io/anny/build/…でホストされています。
  • インタラクティブデモ – python -m anny.examples.interactive_demoを実行すると、ポーズ、形状、顔アクションをリアルタイムで操作するためのGradio UIが起動します。
  • デモウェブサイト – ライブデモはhttp://anny-demo.europe.naverlabs.com/で利用可能です。

技術的な注記

  • デフォルトのrig="anny"は104ボーンと三角分割メッシュ(topology="anny")を使用します。完全なMakeHuman互換性にはrig="makehuman"とtopology="makehuman"を使用してください。
  • ポーズパラメータ化はv0.6で変更されました("local-ref"がデフォルトになりました)。レガシーデータはanny.utils.pose.transfer_pose_parametersで変換できます。
  • 最初のモデルインスタンス化には、~/.cache/anny/(ANNY_CACHE_DIRでカスタマイズ可能)に事前計算されたブレンドシェイプデータがキャッシュされるため、数分かかる場合があります。

ユースケース

  • 学習ベースの人体ポーズ推定 – モデルが微分可能であるため、画像ベースの損失から逆伝播してポーズと形状を復元できます。
  • アニメーションとバーチャル試着 – 制御可能な形状、ポーズ、顔表情でリアルなボディメッシュを生成します。
  • 年齢をまたぐボディモデリングの研究 – 同一のトポロジーが乳幼児、子供、成人、高齢者に機能するため、年齢横断研究が簡素化されます。
  • 相互運用性 – 既存のパイプラインで使用するために、SMPL-X、SMPL、またはSOMAトポロジーにエクスポートします。

ライセンス

  • コアコード:Apache-2.0。
  • アセットパック(MakeHuman MPFB2、Face Units、SOMA-X)はCC0またはApache-2.0です。オプションのSMPL-Xトポロジーは非商用利用のみ提供されます。

引用 Annyを出版物で使用する場合、ECCV 2026論文を引用してください:

@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}
}

結論:Annyは、研究者や開発者が柔軟なライグ/トポロジーオプションとクリーンなPyTorch APIを使用して、人生の全期間にわたる3D人体形状を生成、編集、学習できる、現代的で完全に微分可能な人体メッシュライブラリです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト