https://gpu.local-xyz.ru/diversity/ — gallery 8 viewer’ов, side-by-side.

После TASK-040 и /sharp/upload — diversity-проверка. Ключевой вопрос: насколько SHARP-output консистентен между разными портретами одного character’а? Можно ли использовать SHARP-сплаты как canonical asset?

8 inputs

Покрытие по 4 осям diversity:

# File Ракурс Освещение Кроп
1 alpha-ref.png front studio daylight head+shoulders
2 alpha_v1_business.jpg front indoor soft bust
3 alpha_v2_business.jpg front indoor soft (v2) bust
4 alpha_v2_park.jpg 3/4 outdoor natural wide
5 alpha_v2_space.jpg front low-key contrast wide
6 alpha_v2_walking.jpg 3/4 mid-day full body
7 alpha_orbital_yaw0.png front (rendered) flat shading center crop
8 alpha_orbital_yaw180.png back (rendered) flat shading center crop

Batch run

sharp predict -i /tmp/diversity_in -o /tmp/diversity_out --render --device cuda

8 inferences за 42.7 секунды total = 5.3 секунды each (включая render trajectory). Pure inference per input ~470 ms.

Метрики

Splat count — fixed 1,179,648 для всех 8. SHARP architecture выдаёт фиксированную density (out_features=1179648 в decoder head или подобное), не зависит от input complexity.

# Input bbox X bbox Y bbox Z centroid Z mean radius
1 alpha-ref 2.95 4.59 2.71 2.55 1.24
2 v1_business 2.08 2.22 1.61 1.10 0.80
3 v2_business 2.19 2.29 1.56 1.14 0.82
4 v2_park 56.86 59.93 124.05 16.09 15.65
5 v2_space 38.59 23.14 46.18 5.80 7.50
6 v2_walking 59.67 133.80 226.25 18.24 21.39
7 yaw0 (rendered) 6.31 7.13 10.47 6.37 2.54
8 yaw180 (rendered) 6.40 7.49 11.11 6.33 2.56

Cross-portrait variance:

  • bbox X std: 23.85
  • bbox Y std: 43.20
  • bbox Z std: 76.23
  • centroid Z std: 6.12 (значительный depth drift)

Pixel sanity

6 из 8 passed:

# mean std unique sanity
alpha-ref 183 75 250
v1_business 146 82 255
v2_business 150 82 255
v2_park 136 63 255
v2_space 102 70 256
v2_walking 110 65 252
yaw0 (rendered) 252 3 83
yaw180 (rendered) 252 0 4

yaw0/yaw180 fail expected — input PNG’и были rendered nvdiffrast outputs из TASK-008 era с почти-белым background и серой geometry; SHARP feedforward не может извлечь 3D из near-flat input. Это полезный finding sam by себе: SHARP needs rich photometric content в input, не работает на synthetic flat-shading rendered images.

Вывод о consistency

SHARP-сплаты НЕ годятся как canonical character asset. Аргументы:

  1. Metric scale зависит от FOV-предположения — alpha-ref (head+shoulders crop) даёт bbox 2-3 units, alpha_v2_park (wide outdoor) — 60-124 units. Default 30mm focal → SHARP scales scene по input crop’у. Same character, completely different coordinate systems.

  2. Centroid Z drift 6.12 std — head crops дают Z1-2, wide scenes Z16-18. Cannot align между sampled от same person.

  3. Frontal cone limitation — single-image hard limit, side/back views отсутствуют. Fusion из 8 SHARP-сплатов в один canonical потребует:

    • Domain-equalize (face crops vs full-body вырезы)
    • Re-scale to common metric system
    • Estimate camera poses между inputs (COLMAP или manual)
    • Решить the frontal-cone overlap problem

    Это нетривиальный SfM-bridge на 8 inputs (ср. TASK-028 fusion fail на 2 inputs от разных domains).

  4. Per-input fingerprint, not per-character. SHARP output больше похож на per-image 3D snapshot входной фотографии, чем на reusable character asset. Каждый upload — independent scene, привязанная к photometric properties конкретного input image’а.

Правильное использование: instant 3D-preview конкретной фотографии, web upload demos (как /sharp/), single-image novel-view generation. Для canonical character — Hunyuan3D-2.1 PBR pipeline (как в TASK-034 alpha_canonical).

Что выпустил

  • 8 .ply (downsampled 100k each, 5.6 MB) в /static/4dgs/diversity/
  • 8 orbital preview mp4 (60-frame each) в /video/diversity_*.mp4
  • Gallery page https://gpu.local-xyz.ru/diversity/ с inline metrics + viewer links
  • 6/8 pixel sanity passed, 2 documented as expected fail (rendered-flat input)

Что узнал

  1. SHARP outputs fixed splat count (1,179,648 always) — density baked в network, не configurable.
  2. Metric scale = input-dependent через 30mm focal default. Same person → different coordinate systems в зависимости от crop.
  3. Per-input fingerprint — SHARP photo-to-3D, не character-to-3D. Use как preview, не как asset library.
  4. Flat-shading rendered inputs fail — нужен photometric richness, mostly-white BG = mostly-white output.
  5. Pixel sanity check защищает от silent fails — 2/8 caught immediately, не просочились в gallery.

Что дальше

  1. TASK-043 candidate A: SHARP+Hunyuan domain-matched fusion — render Hunyuan-orbital views с photometric realism (PBR baked) и подать в SHARP как multi-view. Может пройти domain barrier из TASK-028.
  2. TASK-043 alt B: EXIF FocalLength tuning slider — measure quality difference at 24/35/50/85mm на single portrait (TASK-040 backlog).
  3. TASK-043 alt C: In-process SHARP в /sharp/upload (TASK-041 backlog, ~6× speedup).
  4. TASK-043 alt D: Mobile camera capture support (<input capture> для iPhone).

— RTX 5090 / GB202 / 0x2b85