小さなMLP(2層×256ユニット、約85 KB)。8つの質問票入力から58個のAnnyボディ形状パラメータを正確に予測します:身長、体重、性別、体形、体格(ビルド)、お腹、カップサイズ、祖先。ノートPCで約120分学習。構造的には退屈です――面白いのは損失です。
結果(女性/男性、ホールドアウトの合成テストセット):
| 女性 | 男性 | |
|---|---|---|
| 身長 MAE(平均/p95) | 0.3 / 0.8 cm | 0.3 / 0.8 cm |
| 体重 MAE(平均/p95) | 0.4 / 1.0 kg | 0.5 / 1.2 kg |
| バスト/ウエスト/ヒップ MAE(平均) | 2.7 / 4.0 / 3.3 cm | 4.9 / 4.3 / 3.3 cm |
参考:Bartolら(2022)のh+w線形回帰は、同じセットでBWHのMAEが約7 cmです(私たちの着想)。自前の写真パイプライン(SAM 3D Body → MHR → Anny + チューニング、ライセンス上の理由でSMPLは完全に回避)では、実在人物でBWHが5〜8 cmに収まります。質問票が写真に勝つのは、入力空間に情報(体形、体格)が含まれており、単一画像HMRがそれをなめらかに消してしまうからです。
コツ。ユーザーは正確な身長と体重を私たちに渡します――生成される身体は、平均的に近いだけではなく、それらに一致していなければなりません。質量は58個のパラメータの一つではありません。質量は体積の結果として現れ、体モデルの順伝播(forward pass)から出てきます。
そこで、順伝播を損失の中に入れます。MLPが出力 → Annyのブレンドシェイプ → 頂点 → 体積 → 予測質量と身長、そして全てにわたって逆伝播します。Annyはデフォルトで自動微分(autograd)にフレンドリーです:ブレンドシェイプは線形、体積は符号付きテトラヘドロンの和です。標準のPyTorchでOK、独自のbackward実装なし。
概略:
```python params = mlp(questionnaire) # 58 Anny形状パラメータ verts = anny.forward(params) # ブレンドシェイプ → メッシュ(線形、微分可能) vol = signed_tetrahedra_volume(verts) # 微分可能な体積 = vol * density(body_fat(params), gender) # Siriの二成分モデル height = verts[top].y - verts[bottom].y waist = iso_8559_plane_sweep(verts, "waist") # clad-bodyから
loss = mse(params, params_target) rel + λ_m * (mass - mass_target)2 rel + λ_h * (height - height_target)2 rel + λ_w * (waist - waist_target)**2 ```
Ridge(ベースライン)だと、平均の質量MAEが3.9 kg(p95 9.7、重い体の最大16 kg)に到達します。これは各58個のパラメータを独立に予測し、わずかな誤差が体積を通じて増幅されるためです。物理を意識した損失のMLPでは、平均0.3 kg、p95は1 kg未満。損失由来で約10倍、アーキテクチャではありません。
精度向上の大半は、学習の前に行われました。学習の中ではありません。損失がコツですが、数値をきっちりさせているのは、測定規約や質量計算のような“計測の基礎”として、まず人間工学(anthropometry)を正しく揃えることです。上流の作業がなければ、どんな損失関数でも私たちは救われなかったでしょう。
計測。AnnyもMHRも計測用のライブラリを同梱していません。14〜18Kの頂点を持つメッシュが手に入るだけで、ウエスト周径を抽出する標準的な方法はありません。私たちはISO 8559-1の平面スイープによる周径算出、ランドマーク検出、輪郭の分離を構築しました――clad-body(Apache 2.0)。これが損失が実際に比較する対象です。これがなければ、物理を意識した損失にも“固定点”がありません。
質量。Annyのデフォルトは、インターネット平均の人間密度に相当する単一の密度980 kg/m³を使います。これは、2つの明確な慣習の間に位置しています:全身の密度(約985 kg/m³、肺を含む、タンクに入れて沈めたときに得られるもの)と、組織のみの密度(約1030〜1080 kg/m³、脂肪と筋肉の組成が実際に決めるもの)。私たちは体脂肪率から導出した性別ごとの組織密度に切り替えました。痩せた体は最大で1 kg増え、柔らかい体は最大で2 kg減りました――それは、平均的な体型ではない誰かに対して、スケールを合わせるだけでなく系統的に外してしまっている差です。
正直な限界。約50個の連続ブレンドシェイプから導かれるウエストのMAEの理論的下限は1.3 cmで、確かに可能性があります(ただし入力の連続ブレンドシェイプ数の話に基づく)。統計モデル=入力に対する集団平均の身体であって、あなた自身ではありません。友人たちによる実在人物の検証では、かなり良い結果が得られました。
参考文献と実装:
- Bartolら(2022)― "Linear Regression vs. Deep Learning: A Simple yet Effective Baseline for Human Body Measurement" ― 質問票のルートにつながった、h+wベースライン
- Anny(Naver Labs Europe) ― ボディモデル(14K頂点、163本の骨、11のセマンティック形状パラメータ+256のローカル・ブレンドシェイプ、Apache 2.0)
- MHR(Meta) ― 写真パスで使用される別のボディモデル(Apache 2.0)
- SAM 3D Body(Meta) ― 写真パス用の単一画像HMR
clad-body(Apache 2.0)― AnnyとMHRのためのISO 8559-1計測ライブラリ。損失が比較するのはまさにこれです- Siri(1961)二成分ボディコンポジションモデル ― 密度キャリブレーションに使われた元の定式化。例:Wikipedia: Body composition
議論したいです
[link] [comments]




