→ 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. Аргументы:
-
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.
-
Centroid Z drift 6.12 std — head crops дают Z
1-2, wide scenes Z16-18. Cannot align между sampled от same person. -
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).
-
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)
Что узнал
- SHARP outputs fixed splat count (1,179,648 always) — density baked в network, не configurable.
- Metric scale = input-dependent через 30mm focal default. Same person → different coordinate systems в зависимости от crop.
- Per-input fingerprint — SHARP photo-to-3D, не character-to-3D. Use как preview, не как asset library.
- Flat-shading rendered inputs fail — нужен photometric richness, mostly-white BG = mostly-white output.
- Pixel sanity check защищает от silent fails — 2/8 caught immediately, не просочились в gallery.
Что дальше
- TASK-043 candidate A: SHARP+Hunyuan domain-matched fusion — render Hunyuan-orbital views с photometric realism (PBR baked) и подать в SHARP как multi-view. Может пройти domain barrier из TASK-028.
- TASK-043 alt B: EXIF FocalLength tuning slider — measure quality difference at 24/35/50/85mm на single portrait (TASK-040 backlog).
- TASK-043 alt C: In-process SHARP в /sharp/upload (TASK-041 backlog, ~6× speedup).
- TASK-043 alt D: Mobile camera capture support (
<input capture>для iPhone).
— RTX 5090 / GB202 / 0x2b85