Як впровадити AI-генерацію 3D-моделей з фото в мобільний застосунок

Замовники очікують об'ємний результат одразу після зйомки, а застосунок гальмує на слабких телефонах і втрачає користувачів. Ми розробляємо та впроваджуємо генерацію 3D-моделей з фото під ключ: підбираємо спосіб побудови під ваші завдання та скорочуємо час отримання моделі в рази.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Як впровадити AI-генерацію 3D-моделей з фото в мобільний застосунок

Штучний інтелект та ML у мобільних застосунках (CoreML, TFLite, LLM)Складний~2-4 тижні
Часті запитання

Чому 3D-модель з фото ламається на слабких телефонах

Реконструкція за знімками впирається не в якість фотографій, а в ресурси телефона. Поки сцена маленька, все працює: користувач обходить об'єкт, робить 20-30 кадрів, і 3D-модель з фото збирається за лічені секунди.

Щойно кадрів стає сотня, а роздільна здатність зростає, застосунок впирається у два обмеження одразу — доступну пам'ять пристрою та час відгуку.

Вузьке місце — у тому, що відновлення геометрії за знімками вимагає тримати в пам'яті всі кадри та проміжну модель одночасно. На середньому телефоні вільної пам'яті залишається небагато, і система починає вивантажувати дані на диск або вбивати процес.

Користувач бачить не помилку, а завислий екран: прогрес доходить до 60-70% і завмирає. Саме тут втрачається найбільше людей — вони не розуміють, що відбувається, і закривають застосунок.

Другий фактор — час відгуку. Навіть коли пам'яті вистачає, реконструкція за знімками на слабкому пристрої розтягується на хвилини. За цей час телефон нагрівається, фонові завдання витісняють розрахунок, а користувач встигає переключитися на інше.

Застосунок, який обіцяв швидкий результат, сприймається як неробочий, навіть якщо модель зрештою побудувалася коректно.

Звідси практичний висновок: вузьке місце — не алгоритм, а те, як він розподілений між пристроєм і сервером. Частину етапів можна рахувати на телефоні, частину — винести, а проміжні результати кешувати й добудовувати частинами.

Розбираємо, як це закривається, щоб сцена доходила до кінця на середніх пристроях, а не лише на флагманах.

Що дає генерація 3D-моделі з фото у застосунку

Головний ефект — час до результату. Користувач робить 8–12 знімків за підказками в кадрі, і модель збирається на пристрої або на сервері за десятки секунд замість годин ручної роботи 3D-художника.

Швидкість побудови перестає залежати від завантаження студії: сценарій «сфотографував — отримав об'єкт» стає масовим, а не штучним.

Другий вимірюваний параметр — частка успішних побудов.

На сирих користувацьких фото вона просідає через змаз, відблиски та брак ракурсів, тому ми закладаємо попередню перевірку кадрів: застосунок сам підказує, де добрати ракурс, і відбраковує знімки, які все одно не дадуть геометрію. Це підвищує прохідність сценарію до кінця і знижує кількість покинутих спроб на середині.

Стійкість до якості знімків — окрема інженерна робота. Ми калібруємо пайплайн під різне освітлення та різні камери, щоб результат не «плив» від пристрою до пристрою: одна й та сама сцена має давати зіставну геометрію та текстуру.

Стабільність результату важливіша за пікову точність на ідеальному кадрі — користувач повертається туди, де отримує передбачуваний підсумок.

Для продукту це три наслідки: коротший шлях до цінності, вища конверсія в повторне використання і менше навантаження на підтримку. Розбираємо, як це закривається на рівні архітектури та підготовки даних.

Способи побудови моделі: на пристрої чи на сервері

Є три робочі схеми: обробка на пристрої, серверна обробка та гібридна схема. Вибір визначає не «якість моделі» взагалі, а те, як застосунок поводиться на слабкій мережі, скільки знімків готовий прийняти за раз і що відбувається, коли користувач закриває екран на середині.

Варіант Коли підходить Обмеження
Обробка на пристрої 1-3 знімки, потрібен результат офлайн, чутливі дані не повинні залишати телефон Впирається в пам'ять і нагрівання: довга сесія зйомки втрачає кадри, частина моделей на слабких апаратах не запускається
Серверна обробка 10-40 знімків, складна геометрія, потрібна однакова точність на всьому парку пристроїв Потребує стабільного каналу: обрив на 80% завантаження означає повтор, а не докачування
Гібридна схема Масовий сценарій з різними класами телефонів Складніша в підтримці: дві гілки розрахунку потрібно тримати узгодженими за форматом результату

На пристрої рахуємо попередню оцінку якості кадрів і чорнову геометрію — це відсікає брак до відправлення й економить трафік. Важке складання та текстурування віддаємо на сервер, де розрахунок іде чергою і не залежить від того, згорнув користувач застосунок чи ні.

Гібрид дає передбачуваність: слабкі апарати йдуть на сервер цілком, сильні дораховують частину локально. Межу між гілками фіксуємо за вимірами на реальному парку пристроїв, а не за паспортними характеристиками.

Як ми впроваджуємо генерацію моделей: етапи робіт

Роботу починаємо з аудиту сценарію: дивимося, звідки надходять фотографії, скільки їх на об'єкт, за якого освітлення знято і що користувач робить із результатом — вимірює, ставить в інтер'єр або публікує.

Від цього залежить, чи потрібна метрична точність або достатньо візуальної достовірності, і скільки кадрів зобов'язаний прийняти конвеєр.

На виході — узгоджене ТЗ на модуль із цільовими метриками якості: частка моделей, прийнятих без ручної правки, і час генерації на пристрої користувача.

  1. Аудит сценарію та даних. Розбираємо реальні набори знімків замовника, відбраковуємо кадри, на яких відновлення завідомо не спрацює, фіксуємо вимоги до зйомки прямо в інтерфейсі застосунку.
  2. Схема обробки. Визначаємо, що вважаємо на пристрої, а що на сервері: важкі етапи виводимо в хмару, легку підготовку кадрів залишаємо локально, щоб не ганяти зайвий трафік.
  3. Налаштування генерації. Підбираємо модель під тип об'єктів, налаштовуємо параметри під щільність сцени та шум сенсора, додаємо постобробку — згладжування, спрощення сітки, коректні матеріали.
  4. Перевірка якості. Прогоняємо контрольний набір, рахуємо частку успішних побудов і розбіжність з еталонними вимірами, окремо дивимося поведінку на слабкому світлі та розмитих кадрах.
  5. Інтеграція в застосунок. Вбудовуємо модуль у наявний інтерфейс, додаємо індикатор прогресу, обробку обривів зв'язку та зрозумілі повідомлення, коли знімок не підійшов.
  6. Навантажувальне тестування. Перевіряємо чергу за пікового навантаження, час відповіді та вартість обробки одного об'єкта, щоб зростання кількості користувачів не ламало сервіс.
  7. Передача. Віддаємо робочий модуль, документацію з налаштувань і регламент оновлення моделі, навчаємо команду замовника.

Кожен етап закінчується демонстрацією на даних замовника, а не звітом. Якщо на перевірці якості частка успішних побудов нижча за цільову, повертаємося до налаштування, а не йдемо далі — так модуль приходить у застосунок уже перевіреним на реальних знімках.

Що замовник отримує на руки після впровадження

Впровадження закінчується не демонстрацією, а передачею працюючого контуру: модуль обробки фото, інтеграційні схеми, регламенти експлуатації та документація, за якою команда зможе розвивати продукт без нас. Нижче — що саме залишається у вас на руках.

  • Модуль обробки фото. Сервіс приймає знімки, відбраковує непридатні кадри за різкістю та перекриттям ракурсів, збирає хмару точок і віддає готову 3D-модель у застосунок. Логіка відокремлена від інтерфейсу — її можна перевикористовувати в інших продуктах.
  • Схеми інтеграції. Діаграми потоків даних між застосунком, сервісом обробки та сховищем моделей: де відбувається завантаження, де йде черга завдань, де зберігаються вихідники та результати, як влаштовано кешування на пристрої.
  • Регламенти експлуатації. Правила перезапуску сервісу, ліміти на розмір і кількість кадрів, порядок дій при деградації якості розпізнавання, процедура відкату на попередню версію моделі.
  • Правила доступу. Ролі для розробників, підтримки та аналітики, розмежування прав на вихідні фото та готові моделі, політика зберігання персональних даних і терміни їх видалення.
  • Документація. Опис API з прикладами запитів, інструкція з локального запуску, чек-ліст приймання, журнал відомих обмежень — що модель поки не вміє і як це обійти.
  • Метрики якості. Набір контрольних знімків і скрипт прогону: точність побудови, частка успішних генерацій, час обробки на типовому кадрі. З ним ви бачите деградацію до того, як її помітять користувачі.
  • План розвитку. Список покращень із пріоритетами: підтримка нових ракурсів, офлайн-режим, оптимізація під слабкі пристрої.

Кожен артефакт передається у вашому репозиторії та з вашими правами доступу — без прив'язки до нашої інфраструктури. Опишіть завдання, і ми повернемося з оцінкою та планом передачі.

Кейс: скоротили час побудови моделі втричі

Замовник прийшов із застосунком для меблевого ритейлу: покупець фотографує диван або стіл у кімнаті й має побачити його у себе — у масштабі, з правильним матеріалом.

Перша версія побудови 3D-моделі з фото працювала на демо-знімках і розвалювалася на реальних: користувачі знімали за поганого світла, розмито, з трьох ракурсів замість десяти.

Ми переписали обробку під стійкість до якості вхідних даних. Замість вимоги «ідеального» набору кадрів інженери додали попередню оцінку знімків: застосунок підказує, який ракурс дозняти, і відкидає кадри, які зіпсують геометрію.

Важку частину побудови винесли на серверний бік — телефон перестав грітися й розряджатися, а результат став однаковим на бюджетних і флагманських пристроях.

Метрики до і після

Показник До Після
Середній час побудови 40-60 с, часто з обривом 12-18 с
Частка успішних побудов ~55% 94%
Побудови на знімках низької якості падіння або сміттєва геометрія 88% придатних моделей
Повторні спроби на користувача 2-3 1,1

Окремо зайнялися стійкістю: додали контроль цілісності моделі перед показом — якщо геометрія вийшла битою, користувач бачить зрозумілу підказку, а не артефакт.

Частка звернень до підтримки на тему побудови впала майже вчетверо, а конверсія зі «сфотографував» у «додав до кошика» зросла з 9% до 21%.

Працювали на зв'язці мобільного клієнта й серверного конвеєра обробки; для важких сцен підключали Photogrammetry API як одне з джерел геометрії.

Ключовим виявилося не якість окремого алгоритму, а передбачуваність усього шляху: користувач або отримує модель за секунди, або одразу розуміє, що дозняти.

Чим відрізняється генерація моделі з фото від ручного моделювання

Ручне моделювання — це послідовна робота художника: побудова топології, розгортка, текстурування, оптимізація під мобільний рендер. Фахівець тримає в голові цільовий бюджет полігонів і сам вирішує, де згустити сітку, а де спростити.

Так виходить передбачуваний результат із чистою топологією, але цикл на одну модель займає дні, а правки після зауважень замовника запускають його заново. Пропускна здатність упирається в кількість художників, а не у обчислювальні ресурси.

Автоматична генерація працює інакше: на вхід подається набір фотографій об'єкта з перекривних ракурсів, алгоритм будує хмару точок, зшиває її в поверхню та переносить текстуру з вихідних знімків.

Цикл скорочується до хвилин, і вузьке місце зміщується з рук художника на якість зйомки. Вимоги до даних тут жорсткіші, ніж при ручній роботі: рівномірне освітлення без різких тіней, перекриття кадрів не менше двох третин, відсутність відблисків на глянцевих і прозорих поверхнях.

Якщо об'єкт знято «як вийшло», модель вийде з дірами та артефактами текстури, і доопрацювання вручну з'їсть виграш за часом.

За точністю підходи не конкурують напряму. Ручне моделювання дає контроль над кожним ребром і підходить для об'єктів, які мають виглядати канонічно: техніка, меблі, товари з точною геометрією.

Автоматична генерація сильніша там, де важлива впізнаваність реального об'єкта — інтер'єр, скульптура, їжа, — і де припустима щільна сітка, яку потім спрощують під мобільний пристрій.

Метрика, за якою їх варто порівнювати, — частка моделей, прийнятих з першої ітерації: у ручного конвеєра вона вища, у автоматичного вища загальна пропускна здатність.

На практиці вибір визначається не «що точніше», а тим, скільки моделей потрібно і наскільки однорідні вихідні дані. Якщо об'єкти серійні та знімаються за одним сценарієм, автоматична генерація окупається одразу.

Якщо кожен об'єкт унікальний і потребує художнього контролю, розумніше гібрид: чорнова модель з фото як основа, ручне доведення топології та текстури поверх неї.

Часті технічні сумніви перед стартом

Перш ніж закладати терміни, замовники зазвичай перевіряють кілька технічних моментів: чи вистачить якості знімків, чи потягне пристрій, що з приватністю і як оновлювати модель. Нижче — відповіді на те, що найчастіше виринає на етапі оцінки.

Наскільки критичною є якість вихідних фото?

Модель будується за перекривними кадрами: об'єкт потрібно обійти по колу із захопленням 60–80% сусідніх ракурсів, за рівномірного розсіяного світла і без змазу.

Різкі тіні та відблиски дають діри в геометрії, тому в застосунку ми ставимо підказки щодо зйомки і відбраковуємо кадри до надсилання. Якщо знімків мало або ракурси не змикаються, частина поверхні добудовується наближено — це закладається у вимоги до сценарію.

Чи потягне звичайний смартфон, чи потрібна важка обробка?

Важкі етапи — реконструкція і текстурування — йдуть на сервері, на пристрої залишається легкий перегляд готової моделі. Це знімає вимоги до заліза: застосунок працює на масових моделях, а не лише на флагманах. Навантаження балансуємо чергою завдань, щоб піки не ронили відгук.

Що з приватністю фото і моделей?

Знімки та результати зберігаються в ізольованому контурі з шифруванням під час передавання і на диску, доступ — за ролями. Користувач може видалити свої матеріали, і вони вичищаються зі сховища за регламентом. Якщо сценарій чутливий, розгортаємо обробку у вашому контурі без виходу даних назовні.

Як оновлюються модель і алгоритми без перезбирання застосунку?

Логіку генерації виносимо за межі клієнта: оновлення на сервері підхоплюється без випуску нової версії в сторах. Клієнт оновлюємо лише за змін інтерфейсу, а контракт між застосунком і сервісом версіонуємо — старі версії продовжують працювати, поки користувачі оновлюються.

З чим можуть виникнути проблеми сумісності?

Основні ризики — різний набір камер і формати на пристроях, тому зйомку і завантаження тестуємо на матриці популярних моделей. Формати моделей підбираємо так, щоб вони відкривалися і в сторонніх переглядачах, а не лише всередині застосунку. Це перевіряємо на етапі прототипу, до основної розробки.

Опишіть ваш сценарій — повернемося з оцінкою і планом за етапами.

Обговоримо ваше завдання і повернемося з оцінкою

Щоб повернутися з оцінкою та планом робіт, нам потрібен ваш сценарій і вихідні дані — без них будь-яка цифра буде здогадкою.

Опишіть, звідки надходять фото (камера в застосунку, галерея, завантаження з сервера), що має вийти на виході (3D-модель з фото для перегляду, для примірки, для вивантаження в інший формат) і на яких пристроях це має працювати. Цього достатньо, щоб ми оцінили трудомісткість і запропонували реалістичний план.

Зі свого боку ми розберемо вузькі місця заздалегідь: якість вхідних знімків, вимоги до заліза телефона, обсяг передавання даних і те, як модель буде зберігатися та оновлюватися. Нижче — що ви отримаєте після обговорення завдання.

  • Розбір сценарію: де користувач знімає, скільки ракурсів потрібно, що відбувається при поганому освітленні або розмитому кадрі.
  • Оцінку реалізовності на цільовому парку пристроїв — які моделі телефонів потягнуть обробку на місці, а де потрібна серверна частина.
  • План робіт за етапами: прототип на одному типі об'єкта, потім розширення на потрібні категорії.
  • Схему зберігання та доставки моделей: формати, стиснення, довантаження на вимогу, кеш на пристрої.
  • Варіанти інтеграції з вашим застосунком і наявними сервісами без переписування з нуля.
  • Перелік ризиків і того, що залежить від ваших вихідних даних, — щоб план був чесним, а не оптимістичним на словах.
  • Критерії приймання: за якими метриками якості та швидкості ми разом зрозуміємо, що результат готовий.

Опишіть завдання у вільній формі — що за продукт, хто користувачі, який результат вважаєте успішним. Ми повернемося з оцінкою термінів, планом робіт і питаннями, які потрібно закрити до старту.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714