AR-додаток має зрозуміти оточення за мілісекунди: де підлога, де стіни, які предмети в кадрі, як падає світло. Без цього віртуальний об'єкт «плаває» в повітрі, не відкидає тіні та виглядає неприродно. Термін Scene Understanding об'єднує фундамент, на якому будується весь AR-досвід. Ми з цим працюємо вже 12+ років, виконали понад 50 AR-проєктів і бачили, де occlusion «зламав» UX — дороговартісні помилки на етапі прототипування. Фінансові ризики при некоректному scene understanding можуть становити до 60% бюджету AR-проєкту. Наша компанія на ринку з 2012 року, має сертифікацію партнера Apple та гарантію на всі рішення.
Що таке scene understanding і чому це важливо?
Scene understanding об'єднує кілька CV-задач: детекцію площин, оцінку глибини, семантичну сегментацію та оцінку освітлення. Кожна з них критична для реалістичного AR. Наприклад, без коректної глибини occlusion — віртуальний об'єкт не зможе ховатися за реальними предметами. Порівняйте: LiDAR дає глибину з точністю ±1–2 см, а monocular depth — ±5–10 см, що в 5 разів гірше на близьких дистанціях. Тому для сценаріїв з дрібними об'єктами обов'язковий LiDAR або кастомна нейромережа. Наш досвід показує: використання гібридного підходу (LiDAR + нейромережа) дає приріст точності на 30% порівняно з LiDAR поодинці.
Як вирішується проблема occlusion?
Зазначимо: коли 3D-персонаж проходить крізь реальний стіл, користувач одразу втрачає довіру. Коректний occlusion вимагає depth ordering: для кожного пікселя знати, що ближче — віртуальний об'єкт чи реальна поверхня. Рішення: depth estimation (LiDAR або нейронна мережа) створює occlusion mask. Пікселі, де реальна глибина менша за віртуальну, рендеряться реальними. Це вимагає синхронізації depth та RGB потоків з джиттером менше 5 ms. На пристроях без LiDAR ми використовуємо monocular depth (MiDaS v3.1) + semantics для уточнення меж об'єктів. Точність нижча, але для великих об'єктів — прийнятно.
Як ми будуємо семантичне розуміння сцени?
Семантична сегментація — класифікація кожного пікселя (підлога, стіна, стілець, людина). Моделі: SegFormer, Mask2Former, навчені на ADE20K або ScanNet. На виробництві ми часто донавчаємо їх під конкретні категорії замовника через fine-tuning на 100–500 розмічених кадрах.
Площинна детекція — знаходження горизонтальних та вертикальних площин. ARKit / ARCore роблять це з коробки, але для похилих поверхонь або округлих стін потрібні кастомні RANSAC-алгоритми.
Depth estimation — оцінка глибини з RGB. Використовуємо DPT, MiDaS, UniDepth. На пристроях з LiDAR ф'юзимо RGB + LiDAR для точності ±1–2 см.
Light estimation — оцінка напрямку та інтенсивності освітлення. ARKit дає spherical harmonics з HDR estimate. Нейромережеві підходи (EfficientLit, DiffusionLight) точніші на складних lighting ситуаціях.
Технічні деталі моделей
- MiDaS v3.1: backbone EfficientNet-L, роздільна здатність 384x384, latency ~30ms на iPhone 14. - DPT: Vision Transformer, роздільна здатність 384x384, точність вища на 15%, але latency ~60ms. - SegFormer: MiT-B2, 20 класів, mIoU 0.45 на ADE20K.Компоненти scene understanding
| Компонент | Базовий модуль (ARKit/ARCore) | Кастомний (наша розробка) |
|---|---|---|
| Площини | Built-in, до 30 площин | RANSAC + ML для довільних поверхонь |
| Depth | LiDAR / ARCore Depth API | MiDaS/DPT + fusion для ±1 см |
| Семантика | ARKit (6 класів) | SegFormer (20‑50 кастомних класів) |
| 6DoF detection | Не вбудовано | FoundationPose (з CAD) |
| Occlusion | Вбудований depth-based | Семантично уточнена маска |
Як забезпечити продуктивність при real-time scene understanding?
Visual SLAM — основа будь-якого AR: система одночасно будує карту та визначає положення. Класика: ORB-SLAM3 (CPU-friendly). Нейронний SLAM: DROID-SLAM, Point-SLAM — вища точність на складних текстурах, але вимагають GPU. Для production на смартфонах використовуємо ARKit / ARCore як базу SLAM та додаємо кастомні CV-моделі через Metal (iOS) або Vulkan (Android).
// ARKit: отримання depth map та plane detection func session(_ session: ARSession, didUpdate frame: ARFrame) { // Depth estimation if let depthMap = frame.sceneDepth?.depthMap { // CVPixelBuffer з float32 depth values в метрах processDepth(depthMap) } // Semantic segmentation (ARKit 4+) if let segBuffer = frame.segmentationBuffer { // Маска з класами: floor, wall, seat, window, door, table, face, person processSemantics(segBuffer) } } Платформи та інструменти
| Платформа | SLAM | Depth | Semantics |
|---|---|---|---|
| iOS (ARKit) | Built-in | LiDAR / Neural | Built-in (обмежений) |
| Android (ARCore) | Built-in | Depth API | Немає (кастомний) |
| HoloLens 2 | Mixed Reality | Time-of-Flight | Scene Understanding API |
| Apple Vision Pro | visionOS | LiDAR + stereo | RoomPlan / MeshAnchor |
| Custom (Jetson) | ORB-SLAM3 | Stereo / ToF | Кастомна SegFormer |
Докладніше в документації Apple ARKit Scene Understanding.
Що входить в розробку модуля scene understanding
- Аналіз сценаріїв AR та вибір стеку (ARKit, ARCore, custom)
- Розробка/адаптація моделей depth, semantics, detection
- Інтеграція occlusion з корекцією синхронізації потоків
- Налаштування продуктивності: target 30 FPS (latency p99 < 33 ms)
- Документація API та інструкція з калібрування
- Навчальні матеріали для команди замовника
- Підтримка 3 місяці після впровадження
Терміни та вартість
Базовий модуль (площини + глибина + occlusion): 4–8 тижнів, від $15,000. Повне semantic розуміння сцени з кастомними категоріями: 10–16 тижнів, від $40,000. Вартість розраховується індивідуально — зв'яжіться з нами, щоб обговорити ваш проєкт. Отримайте консультацію: оцінимо за один день. Для детальної оцінки вашого сценарію зв'яжіться з нашими інженерами.







