# LAB E13 — class-aware amodal 3D cuboids

Дата прогона: 2026-07-22
Статус: accepted for recorded near-live qualification; not accepted for navigation or safety
Основной результат: `e10-integrated-perception-eaf7427637326e74dbc5fe66aaffcab83d0a6c18c0c45b93fdc2ecff062b94ee`

## 1. Цель

LAB E13 заменяет диагностические p05–p95 оболочки LAB E10/E11 на полные 3D cuboids, пригодные для дальнейшей разработки «глаз» беспилотника. Старый fitter описывал только видимую LiDAR-поверхность: например, у автомобиля получалась длинная, но очень тонкая пластина. E13 должен:

- сохранить реальное LiDAR-свидетельство отдельно от достроенной геометрии;
- получить полный class-aware объём car/truck/bus/person/bicycle/motorcycle;
- привязать нижнюю грань к локальной оценке земли;
- стабилизировать центр, размеры и yaw по `track_id`;
- не публиковать старую оболочку как полноценный 3D object box, если достройка не прошла проверки;
- остаться в ранее принятом near-live бюджете: detector около 10 FPS, semantic около 2 FPS, p95 возраста world state не более 175 ms.

E13 не утверждает, что невидимая часть объекта измерена. Полный cuboid явно маркируется как `class-prior-completed-from-visible-lidar-support`, а исходная измеренная оболочка сохраняется в `observed_cuboid_*`.

## 2. Входные данные

- Сессия: `20260720T065719Z_viewer_live` (`RAVNOVES00`).
- Камера: `sensor.camera.right`, XGRIDS calibration slot `camera_1`.
- Калибровка SHA-256: `05f3ad9b38b3a4fc95388a8ec83da83c745e217709e51787b3d5aad0969f6fa9`.
- Camera compute job: `recorded-camera-602ac89026ed12978619801d`.
- LiDAR pack: `e10-lidar-pack-5da0396d32a27f9d1ca537cc2e8a371d386078d6f0dc71737b78620992af9625`.
- Кадры: 1000–1600 включительно, 601 кадр.
- Временной интервал общей шкалы: 135.365857292–195.334857292 s.
- Source span: 59.969 s.
- Timeline SHA-256: `06e3514228b488137b92c303cbca171154ede00368783e32107ed2c39c41baa6`.
- Valid-FOV mask: 270,606 из 480,000 пикселей.
- Valid-FOV mask SHA-256: `a40cee06b7c6f69b6a09a11563dcfd237f3de833b1ccd31459e66692e528ba63`.

## 3. Вычислительный контур

- Worker: `<worker-host>`, выполнение только на диске `D:`.
- GPU: NVIDIA GeForce RTX 4090.
- Контейнер: `nvcr.io/nvidia/tritonserver:26.06-py3`.
- Python 3.12.3; NumPy 1.26.4; SciPy 1.16.3; PyTorch 2.13.0+cu130; Transformers 4.57.6.
- Detector: YOLOX-S, COCO-80, Triton, 640×640.
- Detector model SHA-256: `c5c2d13e59ae883e6af3b45daea64af4833a4951c92d116ec270d9ddbe998063`.
- Semantic model: `tue-mps/cityscapes_semantic_eomt_large_1024`, FP16 autocast.
- Semantic model SHA-256: `c265da9a74f58f5c3f4826d23ca4ca78beac0b106cca5842beca61580de5b782`.
- Source pace: 1.0×.
- Detector queue: latest-wins capacity 2.
- Semantic queue: latest-wins capacity 1; sampling every fifth camera frame.
- Profile SHA-256: `1890d5039d93abea29bd75cf5609264d64b2c0b0fa5b032233fa5e45872776cd`.
- Runner SHA-256: `bf04efa64c3614688742fb28d2da7c428ff70b4ca61a513318cd2440e79ff776`.
- Fusion runtime SHA-256: `9724a4b5af719ea902f02a8a1efdb720e64b5af68b5759367bdc756bdd31b5c9`.
- PowerShell orchestrator SHA-256: `ac0ee42495839773a2de60090ebcb49eee979dc7ee3b8587662a3c59e19a4d03`.

Перед финальным прогоном на `D:` было 375.612 GiB свободно при жёстком floor 360 GiB. После трёх сохранённых A/B-прогонов и публикации текущий объём свободного места составлял 375.317 GiB. Диск `C:` не использовался и не проверялся.

## 4. Алгоритм E13

### 4.1 Измеренная часть

Сохраняется прежний доказанный контур:

1. calibrated KB4 projection LiDAR → camera;
2. nearest-depth-per-rounded-pixel occlusion gate;
3. пересечение 2D track, semantic class mask и LiDAR projection;
4. depth-contiguous cluster;
5. spatial connected cluster;
6. robust oriented p05–p95 envelope как `observed_cuboid`.

### 4.2 Достройка полного объёма

- Для каждого detector label задан nominal/min/max размер и support padding.
- Видимая грань достраивается от сенсора, то есть невидимый объём продолжается за измеренной поверхностью, а не симметрично в обе стороны.
- Для вытянутых классов fitter различает длинную боковую поверхность и короткую фронтальную/заднюю грань. При короткой грани yaw поворачивается на 90° по нормали поверхности.
- При слабой анизотропии ориентация берётся из track history; при отсутствии истории используется sensor-bearing fallback.
- Локальная земля оценивается по нижнему процентилю полного облака в радиусе 2.5 m вокруг объекта. Нереалистичная оценка заменяется ограниченным fallback относительно нижней границы support points.
- Размеры ограничиваются физическими class-bounds. Выход за bound означает rejection, а не расширение коробки до заведомо ложного размера.
- Центр, размер и yaw фильтруются по `track_id`.
- Cuboid должен содержать не менее 75% текущих support points.
- Если temporal smoothing уводит box от текущих точек, фильтр сбрасывается на текущий несглаженный candidate.
- `failure_policy=reject`: если полный cuboid нельзя построить честно, 2D detection и observed support остаются в журнале, но 3D box не публикуется.

### 4.3 Классовые nominal sizes

| Detector label | Nominal L×W×H, m | Допустимый диапазон, m |
|---|---:|---:|
| person | 0.55×0.55×1.72 | 0.35–1.20 × 0.35–1.20 × 1.30–2.30 |
| bicycle | 1.80×0.65×1.50 | 1.20–2.50 × 0.40–1.20 × 1.00–2.20 |
| motorcycle | 2.10×0.80×1.45 | 1.40–3.00 × 0.50–1.40 × 1.00–2.20 |
| car | 4.50×1.85×1.55 | 3.20–5.80 × 1.45–2.40 × 1.20–2.30 |
| truck | 7.00×2.50×3.00 | 4.80–12.50 × 1.80–3.20 × 1.80–4.20 |
| bus | 10.50×2.55×3.20 | 7.00–13.50 × 2.10–3.20 × 2.50–4.20 |

## 5. Итерации A/B

### E13.1 — completion с визуальным fallback

- Result: `e10-integrated-perception-54e660dc90333f5d38b9ad7054e05e32a808e268080220db20d2d2a1141cc2c3`.
- 494 опубликованных 3D boxes: 382 class-prior-completed и 112 fallback visible envelopes.
- World-state p95 age: 97.876 ms.
- Решение отклонено как финальное: интерфейс смешивал полные cuboids и старые короткие оболочки.

### E13.2 — fail-closed и yaw axis hysteresis

- Result: `e10-integrated-perception-b35c3e94e8c8614ad4cf51a5b9a41ebe5a7be856aa1b3cc837b2d9bd6f05e8fe`.
- Только 334 class-prior-completed boxes опубликованы.
- 81 rejection по support coverage и 79 rejection по class-size bounds.
- 90°/innovation resets снижены с 76 до 16.
- World-state p95 age: 100.072 ms.
- Найден дефект: при coverage reset смешивались новый центр/yaw и ранее сглаженный размер.

### E13.3 — полный current-candidate reset

- Result: `e10-integrated-perception-eaf7427637326e74dbc5fe66aaffcab83d0a6c18c0c45b93fdc2ecff062b94ee`.
- 375 class-prior-completed boxes опубликованы.
- Coverage rejections снижены с 81 до 39.
- Class-bound rejections: 81; они сохранены как корректный fail-closed outcome.
- Innovation resets: 15.
- Финальная итерация принята.

## 6. Финальные результаты

### 6.1 Throughput и latency

| Метрика | LAB E10 baseline, тот же clip | LAB E13.3 | Gate |
|---|---:|---:|---:|
| Detector effective FPS | 9.996 | 9.986 | ≥9.5 |
| Detector dropped frames | 0 | 0 | 0 |
| Semantic effective FPS | 2.013 | 2.011 | ≥1.8 |
| Fresh semantic coverage | 99.33% | 99.00% | ≥90% |
| Fused frames | 525 | 523 | ≥450 |
| Published 3D boxes | 760 visible envelopes | 375 completed cuboids | ≥100 |
| Association p50 | 1.391 ms | 1.751 ms | diagnostic |
| Association p95 | 3.858 ms | 5.184 ms | diagnostic |
| World-state age p50 | 52.017 ms | 68.547 ms | diagnostic |
| World-state age p95 | 76.515 ms | 101.829 ms | ≤175 ms |
| Replay wall time | 60.123 s | 60.184 s | about 1.0× |

Добавленная геометрия увеличила p95 association примерно на 1.33 ms. Разница полного world-state age между отдельными запусками также содержит вариативность decode, detector и semantic runtimes; её нельзя целиком приписывать cuboid fitter.

### 6.2 Ресурсы

- Process peak RSS: 2022.719 MiB.
- CUDA peak allocated: 2107.925 MiB.
- CUDA peak reserved: 2840 MiB.
- GPU telemetry mean/max utilization: 63.77% / 79%.
- GPU telemetry mean/max memory used: 13,381 / 13,391 MiB.
- GPU power mean/max: 215.40 / 228.72 W.
- GPU temperature mean/max: 46 / 49 °C.

### 6.3 Геометрия и качество фильтра

- Accepted cuboids: 375.
- По классам: car 267; truck 100; person 6; bicycle 2; motorcycle/bus 0 в accepted set.
- Mean support coverage: 85.82%.
- Mean completion fraction: 92.67%; p50 95.06%; p95 99.46%.
- Средний accepted car box: 4.536×1.891×1.569 m.
- Средний accepted truck box: 7.080×2.500×3.001 m.
- Средний accepted person box: 0.572×0.618×1.720 m.
- Temporal statuses: confirmed 185; tentative 115; reset-support-coverage 60; reset-innovation 15.
- Orientation sources: support-PCA 196; support-face-normal 129; track-history axis disambiguation 48; track-history 1; sensor-bearing fallback 1.

На 256 соседних accepted observations одного track с разрывом не более 0.25 s:

| Temporal metric | Measured visible envelope | Completed E13 cuboid |
|---|---:|---:|
| Median size step | 0.548 m | 0.000 m |
| p95 size step | 2.167 m | 0.152 m |
| Median yaw step | 4.67° | 1.31° |
| p95 yaw step | 58.61° | 22.10° |

Это не является сравнением с ground truth, но подтверждает, что размер и yaw перестали повторять шум каждой отдельной видимой поверхности.

### 6.4 Fail-closed accounting

- `rejected-fewer-than-8-clustered-points`: 1288 vehicle observations.
- `rejected-fewer-than-4-clustered-points`: 66 non-vehicle observations.
- `rejected-no-semantic-lidar-support`: 590.
- `rejected-distance-innovation`: 98.
- `rejected-amodal-completion-required-size-exceeds-class-bound`: 81.
- `rejected-amodal-completion-support-coverage-below-threshold`: 39.
- `rejected-implausible-cuboid`: 12.

Высокое число rejected candidates ожидаемо: E13 сознательно уменьшает визуальный мусор и публикует только полный cuboid, прошедший semantic, clustering, distance, class-size и support-coverage gates.

## 7. Визуальная проверка и публикация

- Результат прошёл `validate_integrated_perception_result` локально.
- Rerun perception overlay: 58,326,068 bytes; API build time 9.778 s; HTTP 200.
- E13 опубликован как newest accepted overlay для `RAVNOVES00`.
- Проверено в Mission Core на общей шкале около 02:27: cloud, trajectory, recorded camera, semantic overlay и полные полупрозрачные 3D cuboids отображаются совместно.
- Принятый вид оставлен открытым в локальном интерфейсе.

## 8. Артефакты

Worker root:

`D:\NDC_MISSIONCORE\runtime\derived\e10-integrated-perception-eaf7427637326e74dbc5fe66aaffcab83d0a6c18c0c45b93fdc2ecff062b94ee`

Local laboratory copy:

`.runtime/compute-experiments/e13/worker-results/e10-integrated-perception-eaf7427637326e74dbc5fe66aaffcab83d0a6c18c0c45b93fdc2ecff062b94ee`

Published overlay source:

`.runtime/compute-experiments/e10/worker-results/e10-integrated-perception-eaf7427637326e74dbc5fe66aaffcab83d0a6c18c0c45b93fdc2ecff062b94ee`

| Artifact | Bytes | SHA-256 |
|---|---:|---|
| `result.json` | — | `512f5fcb72d3c10f4d3d6beb081b28dbb65addcd166e7d4a4bdc3f55a63be4c6` |
| `semantic-frames.jsonl` | 55,023 | `43e72dc9f3ec9fc74f4e1c69dc1ba2fd900ac445aa1744f8d5ea2cc2165cd52b` |
| `fusion-frames.jsonl` | 2,096,208 | `ed8256b41c8a56b8d1dd561e6c47479932a913c80e64cf73c4dc761722637acf` |
| `world-state.jsonl` | 1,336,724 | `a418d1b90fddd810b3ec3fa20c6e5bfa14ecaf2f348500f4a9b56a761a2063d0` |
| `transient-perception.npz` | 1,065,071 | `a68e5bd06eee4f2372eacaf0d94326515b94848189e6527d063002398d0c0f56` |
| `gpu-telemetry.jsonl` | 13,704 | `a80cced041a87446cfb9e074a0867ab5f980108f826b347ca5175664d2b9c907` |
| `run-report.json` | 17,870 | `b6e67b710e6a2f9d3132a0293ac1fae54ca688b6a1ebbc42174893388c0ab88d` |

## 9. Ограничения

1. Это recorded source-paced qualification, а не физический live K1 → worker прогон.
2. Host-arrival camera/LiDAR binding не доказывает hardware-clock synchronization.
3. COCO YOLOX и Cityscapes EoMT не являются forest-domain или safety-validated моделями.
4. Средняя доля достроенного объёма 92.67% показывает, что текущие «нормальные» cuboids в основном опираются на class priors. Это инженерный amodal estimate, не измеренная форма объекта.
5. 3D ground truth отсутствует. Нельзя утверждать 3D IoU, heading accuracy, center error или recall относительно истины.
6. Truck detections наследуют ограниченность COCO label и могут включать крупные автомобили, которые в конкретном кадре классифицированы неточно.
7. Current local-ground percentile не заменяет полноценную road/terrain plane model для уклонов, бордюров и лесной поверхности.
8. E13 не имеет navigation/control authority и не принят для safety.

## 10. Решение и следующий gate

E13.3 принят как новый визуальный и world-state baseline вместо visible-surface boxes. Он доказывает, что class-aware full cuboids и temporal stabilization укладываются в near-live бюджет на существующем worker.

Следующий обязательный этап — LAB E14:

1. добавить 3D ground-truth/prelabel contour хотя бы для репрезентативного набора кадров;
2. провести внешний benchmark learned LiDAR/BEV 3D detectors (CenterPoint/PointPillars и camera-LiDAR fusion вариант) на том же K1 point pattern;
3. сравнить learned box с E13 prior-completed baseline по latency, 3D IoU/center/yaw и стабильности;
4. подключить принятый fitter к bounded E12 shadow ingress и проверить disconnect/overflow вместе с inference;
5. после этого выполнить физический live K1 gate без control/navigation authority.

До появления 3D labels E13 следует использовать как честно маркированный near-live amodal baseline, а не как финальное решение 3D detection.
