AI-анімація статичних фото в мобільному додатку: on-device чи сервер?

Як реалізувати AI-анімацію статичних фотографій без компромісів? Користувачі хочуть оживляти портрети, але реалізація на пристрої обмежена: моделі не поміщаються в пам'ять, а time-to-animation затягується. Серверна генерація дає якість, але потребує інтернету та часу. Ми знаємо, як поєднати обидв

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
AI-анімація статичних фото в мобільному додатку: on-device чи сервер?
Складний
~1-2 тижні

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Як реалізувати AI-анімацію статичних фотографій без компромісів?

Користувачі хочуть оживляти портрети, але реалізація на пристрої обмежена: моделі не поміщаються в пам'ять, а time-to-animation затягується. Серверна генерація дає якість, але потребує інтернету та часу. Ми знаємо, як поєднати обидва підходи, і за 7+ років набили руку на гібридних архітектурах. Наша команда виконала 15+ проєктів з мобільної анімації, включаючи інтеграцію нативних та кросплатформних рішень. Вибір архітектури напряму впливає на бюджет: on-device економить до 40% на GPU-ресурсах, а серверний варіант оптимізує витрати на розробку за рахунок готових моделей.

Як вибрати архітектуру для AI-анімації статичних фотографій?

Серверний інференс — модель живе на бекенді. Додаток завантажує фото, отримує відео. Простіше в деплої, немає обмежень за розміром моделі, можна використовувати SadTalker, LivePortrait або AnimateDiff. Мінус — потрібен інтернет, затримка 3-15 секунд, вартість GPU-часу (від 0.01 до 0.05 долара за хвилину відео).

On-device — більш легкі спеціалізовані моделі. Face Reenactment через landmark-based warping (First Order Motion Model у мобільній версії), або проста анімація через optical flow. Працює офлайн, але якість нижча.

Більшість реалізацій обирають гібрид: на пристрої — швидкий preview (низька якість), на сервері — фінальний результат.

Характеристика On-device Серверний
Якість Середня (артефакти на краях) Висока (суперреалістично)
Швидкість Секунди (до 6-12 с на 1 сек відео) 5-60 секунд залежно від моделі
Інтернет Не потрібен Потрібен
Вартість використання Безкоштовно (після розробки) GPU-години / API-запити
Гнучкість Обмежена розміром моделі Великий вибір моделей

Чому on-device рішення може бути недостатнім?

On-device анімація проста, але її якість поступається серверній: помітні артефакти, немає синхронізації з аудіо. Якщо вам потрібно, щоб портрет реалістично говорив, серверна генерація — єдиний варіант. Крім того, on-device потребує більше часу на оптимізацію моделі під конкретний пристрій: ми перевіряємо сумісність на 10+ моделях iPhone та Android.

On-device анімація: від MediaPipe до FOMM

Lightweight підхід без нейромережі на генерацію: використовуємо MediaPipe Face Mesh (468 точок обличчя) для побудови mesh, потім деформуємо вихідне зображення за заданою траєкторією руху.

// MediaPipe FaceLandmarker на iOS let options = FaceLandmarkerOptions() options.baseOptions.modelAssetPath = Bundle.main.path(forResource: "face_landmarker", ofType: "task")! options.numFaces = 1 options.minFaceDetectionConfidence = 0.5 let faceLandmarker = try FaceLandmarker(options: options) let result = try faceLandmarker.detect(image: .init(uiImage: sourcePhoto)) // landmarks.first?.faceLandmarks — 468 точок [NormalizedLandmark] // Будуємо деформацію через TPS (Thin Plate Spline) або affine warp 

Анімація — за заздалегідь записаною траєкторією руху голови (мокап дані) або синтетична: синусоїдальні коливання ключових точок з різними амплітудами. Рендеринг деформованого зображення через Metal Performance Shaders — кілька мілісекунд на кадр.

Результат — 3-5 секунд анімації, експортується в .mp4 через AVAssetWriter. Якість достатня для «живого портрета», але артефакти на краях обличчя та фоні неминучі без повноцінного GAN.

First Order Motion Model (FOMM): мобільна версія

First Order Motion Model генерує рух на основі одного driving відео (донора) та source image. На мобілі запускається через TFLite або ONNX Runtime, але модель після оптимізації — 40-80 МБ. На iPhone 12+ інференс одного кадру 256×256 — близько 200-400 мс. Для 30-кадрової анімації (1 секунда) — 6-12 секунд обробки. Це разова генерація, не real-time.

// Android: ONNX Runtime з FOMM val session = OrtEnvironment.getEnvironment().createSession("fomm_optimized.onnx") // Входи моделі: source frame (1, 3, 256, 256) + driving frame (1, 3, 256, 256) + keypoints val sourceInput = OnnxTensor.createTensor(env, sourceArray, longArrayOf(1, 3, 256, 256)) val drivingInput = OnnxTensor.createTensor(env, drivingArray, longArrayOf(1, 3, 256, 256)) val result = session.run(mapOf("source" to sourceInput, "driving" to drivingInput)) // Результат: деформований source з застосованим рухом 

Цикл по driving-кадрам (заздалегідь записаний motion clip): отримуємо послідовність вихідних кадрів, збираємо в відео.

Як реалізувати серверну генерацію з SadTalker та LivePortrait?

Для якісної анімації обличчя з аудіо (говоряча голова) — SadTalker: приймає фото + аудіодоріжку, генерує відео де обличчя говорить в синхронізації з мовленням. На сервері з A100 — 30-60 секунд на хвилину відео. Додаток завантажує фото та аудіо, отримує mp4.

LivePortrait — швидший та якісніший варіант, 128 мс на кадр на A100. API-обгортка через FastAPI або Replicate.

// Завантаження фото на сервер func uploadPhotoForAnimation(image: UIImage, audio: URL?) async throws -> URL { var request = URLRequest(url: URL(string: "https://api.example.com/animate")!) request.httpMethod = "POST" // multipart/form-data: image + optional audio let boundary = UUID().uuidString let body = createMultipartBody(image: image, audio: audio, boundary: boundary) request.httpBody = body let (data, _) = try await URLSession.shared.data(for: request) let response = try JSONDecoder().decode(AnimationResponse.self, from: data) return response.videoURL } 

Polling статусу завдання або WebSocket для сповіщення про готовність — залежить від часу генерації.

Модель Час на кадр (A100) Якість синхронізації Розмір моделі
SadTalker ~50 мс Висока ~2 ГБ
LivePortrait ~128 мс Дуже висока ~1.5 ГБ

LivePortrait кращий за SadTalker за реалістичністю рухів, але потребує більше GPU-часу. Вибір залежить від пріоритету: швидкість чи якість.

Як ми реалізуємо AI-анімацію: процес та етапи

  1. Аналіз вимог та вибір стеку: визначаємо сценарій використання (on-device попередній перегляд, серверна генерація говорящої голови, гібрид).
  2. Проектування архітектури: схема передачі даних, модель розгортання, експорт.
  3. Реалізація та інтеграція моделі: кодинг на Swift/Kotlin, налаштування серверної частини.
  4. Тестування на реальних пристроях: мінімум 10 моделей iPhone та Android.
  5. Деплой в App Store / Google Play з документацією.

При необхідності виконуємо оптимізацію on-device моделей під конкретні чипсети, розробляємо власний пайплайн генерації або інтегруємо підтримку ARKit/ARCore для накладання анімації.

Експорт та відтворення

Результат анімації — .mp4 (H.264 або H.265). На iOS відтворюється через AVPlayer, експортується в Photos через PHPhotoLibrary. Для зацикленої анімації (Living Photo) — конвертуємо в .gif через CGImageDestination або у формат LivePhoto через PHLivePhoto.

Apple Live Photo: потрібні і відео-файл (.mov) і фото-файл (.jpg) з однаковим kCGImagePropertyMakerAppleDictionary17 (identifier). Без цього системний додаток Photos не сприймає файл як LivePhoto.

Обсяг робіт та терміни

При замовленні послуги під ключ ви отримуєте:

  • Архітектурний документ з вибором моделі та обґрунтуванням.
  • Інтеграцію обраного движка (MediaPipe, FOMM, SadTalker/LivePortrait).
  • UI для вибору стилю анімації та тригера.
  • Серверну частину (якщо обрана) з чергою завдань та статусами.
  • Експорт в MP4/GIF/LivePhoto.
  • Тестування на 10+ пристроях з різними версіями ОС.
  • Документацію API та інструкцію з підтримки.
  • Гарантію на код 3 місяці.

Орієнтири за термінами: on-device landmark-based анімація (одна платформа) — 3-4 тижні. Серверна інтеграція з SadTalker/LivePortrait + обидві платформи — 4-7 тижнів. Точні терміни залежать від складності анімації та необхідності on-device оптимізації.

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