AI-виртуальный фон для видеозвонков на мобильных

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
AI-виртуальный фон для видеозвонков на мобильных
Сложный
~1-2 недели
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    745
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1162
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    563

При разработке мобильного приложения для видеозвонков клиенты часто сталкиваются с проблемой: стандартная реализация виртуального фона через сервер даёт задержки и артефакты. На одном проекте заказчик использовал облачный AI от AWS Rekognition — каждый кадр уходил в облако, возвращался через 60–80 мс. В результате контур флуктуировал, пользователи жаловались на качество.

Мы решили её, перенеся сегментацию на устройство. Серверная обработка добавляет 40–80 мс на каждый кадр, что при 30 fps приводит к заметному разрыву контура и «призраку» при быстрых движениях. On-device сегментация укладывается в 8–28 мс, экономя до 80% времени по сравнению с облачным инференсом. Ключевое преимущество — сегментация на устройстве, а не в облаке. Это не только снижает затраты на инфраструктуру, но и обеспечивает конфиденциальность пользовательских данных. На каждом кадре видеопотока нейросеть выделяет силуэт человека, применяет фон (изображение, видео или размытие) и возвращает результат в пайплайн энкодера — всё без передачи данных на сервер. Типичный бюджет времени — 33 мс на кадр, и on-device решение легко в него укладывается. Для бюджетных устройств мы используем лёгкие модели, понижаем частоту кадров до 24 fps — это позволяет добиться стабильной работы без перегрева.

Почему on-device AI-виртуальный фон быстрее?

Задача — выделить силуэт человека на каждом кадре видеопотока (30 fps), применить фон и вернуть результат в пайплайн до энкодирования. Это означает бюджет ~33 мс на кадр включая захват, инференс модели, постобработку и рендеринг.

Серверный вариант: захват → отправка → инференс → ответ → рендеринг. Даже при идеальной сети roundtrip добавляет 40–80 мс. На практике — рывки контура, «призрак» при движении.

На устройстве: захват → инференс → рендеринг. Всё в одном пайплайне. Стоимость инфраструктуры при серверном подходе высока — нужны GPU-сервера. On-device подход полностью устраняет эти затраты. Экономия на серверных GPU-вычислениях может достигать $2000 в месяц для приложения с 10 000 активных пользователей. На другом проекте экономия составила $3000 в месяц за счёт отказа от дорогостоящих GPU-инстансов.

Принцип работы on-device сегментации

Мы используем нейросети, оптимизированные для мобильных чипов (Neural Engine, GPU, DSP). Инференс выполняется локально, никакие данные не покидают устройство — это одновременно решает вопросы конфиденциальности и задержки.

iOS: MLKit + CoreImage или Vision

На iOS используем Vision фреймворк с моделью VNGeneratePersonSegmentationRequest. Apple добавила её в iOS 15 и новее — работает на Neural Engine без явной загрузки модели. Точность хорошая для фронтальной камеры, но начинает давать рваный контур при сложных причёсках и прозрачных элементах одежды.

// Настройка сегментации
let request = VNGeneratePersonSegmentationRequest()
request.qualityLevel = .balanced   // .accurate даёт лучший контур, но тяжелее
request.outputPixelFormat = kCVPixelFormatType_OneComponent8

// В обработчике кадров AVFoundation
let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: [:])
try handler.perform([request])

guard let mask = request.results?.first?.pixelBuffer else { return }
// mask — CVPixelBuffer 8-bit, применяем через CIBlendWithMask

CIBlendWithMask с CIContext(options: [.workingColorSpace: NSNull()]) — рендерим в Metal, избегая конвертации цветового пространства. Без этого каждый кадр добавляет ~5 мс только на конвертацию.

Для более качественной сегментации — конвертируем TFLite модель DeepLab v3 или MediaPipe SelfieSegmentation в Core ML через coremltools и загружаем через MLModel. MediaPipe даёт стабильный контур даже при размытых краях. Apple Vision VNGeneratePersonSegmentationRequest

Android: MLKit Selfie Segmentation

val segmenter = Segmentation.getClient(
    SelfieSegmenterOptions.Builder()
        .setDetectorMode(SelfieSegmenterOptions.STREAM_MODE)  // оптимизировано для видео
        .enableRawSizeMask()
        .build()
)

// В обработчике CameraX ImageAnalysis
override fun analyze(imageProxy: ImageProxy) {
    val inputImage = InputImage.fromMediaImage(imageProxy.image!!, imageProxy.imageInfo.rotationDegrees)
    segmenter.process(inputImage)
        .addOnSuccessListener { segmentationMask ->
            val mask = segmentationMask.buffer
            // Применяем фон через RenderScript или Vulkan compute shader
            applyBackground(mask, imageProxy)
        }
        .addOnCompleteListener { imageProxy.close() }
}

STREAM_MODE критичен — он держит внутренний стейт между кадрами и работает быстрее SINGLE_IMAGE_MODE. На Pixel 6 с Tensor G2 инференс занимает 8–12 мс. На бюджетных устройствах (Snapdragon 695) — 20–28 мс. Для постобработки маски — RenderScript (deprecated в API 31+) или Vulkan compute shader через RenderEffect на Android 12+. MLKit Selfie Segmentation

Сравнение моделей сегментации

Модель Платформа Задержка (мс) Качество контура
Vision (Apple) iOS 12–20 Хорошее
MLKit Selfie Segmentation Android 8–12 Отличное
MediaPipe Кроссплатформа 15–25 Среднее
Core ML (DeepLab) iOS 20–30 Высокое

Сравнение подходов: серверный vs on-device

Параметр Серверная сегментация On-device сегментация
Задержка 150–300 мс (roundtrip) 8–28 мс (инференс)
Зависимость от сети Критическая Отсутствует
Конфиденциальность Данные уходят на сервер Данные остаются на устройстве
Точность Высокая (большая модель) Хорошая (оптимизированные модели)
Стоимость инфраструктуры Высокая (GPU-сервера) Нулевая (только ПО)

Применение фона: три варианта

Статичное изображение — простейший случай. CIBlendWithMask на iOS, PorterDuff compositing на Android.

Размытие (blur) — фильтр CIGaussianBlur с radius 12–20 применяется к исходному кадру, затем маска выбирает между оригиналом и размытым. На Android — RenderEffect.createBlurEffect (API 31+) или собственный blur через Vulkan.

Видеофон — нужен декодер, синхронизированный с таймингом видеозвонка. На iOS — AVPlayerItemVideoOutput + Metal текстура. Тяжело по памяти: буфер видеофона + буфер камеры + буфер маски + результат. На iPhone 12 с 4 GB это ок, на iPhone SE 2nd gen (3 GB) нужен aggressive buffer reuse.

Интеграция в WebRTC-пайплайн

Большинство мобильных решений для звонков строятся на WebRTC — через LiveKit, Daily.co, Agora или нативный WebRTC. Все они предоставляют механизм кастомного VideoSource/VideoProcessor для подмены кадров до энкодирования.

В LiveKit SDK для iOS это VideoProcessor протокол:

class BackgroundReplacementProcessor: VideoProcessor {
    func process(frame: RTCVideoFrame) -> RTCVideoFrame? {
        // Сегментация + применение фона
        // Возвращаем новый RTCVideoFrame с обработанным буфером
    }
}
room.localParticipant?.videoTracks.first?.processor = BackgroundReplacementProcessor()

Важно: RTCVideoFrame работает в CVPixelBuffer с форматом kCVPixelFormatType_420YpCbCr8BiPlanarFullRange. Конвертация в RGB для ML-инференса и обратно — это потери. Если модель принимает YUV — оставляем формат нетронутым.

Критерии выбора модели сегментации

Выбор модели зависит от целевых устройств и требований к качеству. Для iOS с A12+ подходит Vision — встроенная модель, не требует дополнительных ресурсов. Для Android с Tensor G2 или Snapdragon 8 Gen 1 — MLKit даёт лучшее качество. На слабых устройствах (Snapdragon 695, A11) используем MediaPipe или понижение fps.

Оптимизация для слабых устройств

На устройствах с ограниченными ресурсами мы снижаем частоту кадров до 24 fps и используем лёгкие модели (MediaPipe). Также применяем динамическое масштабирование входного кадра: уменьшаем разрешение до 480p перед инференсом, затем upscale маски. Это сокращает время обработки на 30-40% без заметной потери качества.

Какие результаты вы получите?

После завершения проекта вы получаете полностью интегрированную функцию замены фона, протестированную на 20+ реальных устройствах. В состав deliverables входят:

  • Исходный код модуля сегментации и обработки фона.
  • Подробная техническая документация по интеграции и кастомизации.
  • Обучение вашей команды работе с кодом и конфигурациями.
  • Месяц поддержки после запуска для исправления возможных багов.
  • Рекомендации по оптимизации для новых версий ОС.

Сколько времени занимает интеграция?

  1. Аудит текущего WebRTC-стека и пайплайна кадров.
  2. Выбор модели сегментации под качество/скорость (Vision, MLKit, Core ML, MediaPipe).
  3. Разработка прототипа с замером производительности на 10+ устройствах.
  4. Интеграция в существующий WebRTC-пайплайн через VideoProcessor.
  5. Оптимизация постобработки маски (antialiasing, feathering).
  6. Тестирование на граничных условиях (сложный фон, быстрые движения).
  7. Документация и обучение команды заказчика.

Ориентиры по срокам

Базовая реализация с размытием фона (одна платформа) — 2–3 недели. Полная реализация с поддержкой статичных изображений и видеофонов, двух платформ, интеграция в существующий WebRTC-стек — 5–8 недель.

Мы имеем 8+ лет опыта в мобильной разработке, выполнили 50+ проектов с видео- и AI-функциями. Гарантируем стабильную работу на устройствах старше пяти лет.

Свяжитесь с нами для оценки вашего проекта. Получите консультацию инженера.

AI и ML в мобильных приложениях: CoreML, TFLite и on-device модели

Мы различаем два принципиально разных подхода: приложение с on-device AI и приложение, которое просто вызывает облачное API. Первое работает без интернета, не отправляет данные пользователя на сторонние серверы и отвечает за 50 миллисекунд. Второе зависит от задержки сети и тарифного плана. Выбор архитектуры — ключевой этап, который напрямую влияет на стоимость, приватность и пользовательский опыт. Наш опыт показывает: в 70% проектов on-device инференс оказывается дешевле в долгосрочной перспективе за счёт исключения серверных затрат.

Как выбрать между CoreML и TFLite для on-device инференса?

CoreML — нативный фреймворк Apple для запуска ML-моделей на устройстве. Поддерживает Neural Engine (начиная с A11 Bionic), GPU и CPU как fallback. Модели конвертируются в формат .mlmodel через coremltools из PyTorch, ONNX или TensorFlow. Конвертация — не всегда тривиальна: кастомные слои требуют реализации MLCustomLayer, а квантизация до INT8 иногда заметно роняет точность на специфических данных. Мы гарантируем, что итоговая модель проходит валидацию на реальных данных до и после конвертации.

TensorFlow Lite — кросс-платформенная альтернатива для Android и Flutter. На Android использует NNAPI (Neural Networks API) для хардварного ускорения — с Android 10 NNAPI стабильнее, до этого лучше явно использовать GPU delegate через GpuDelegate. Типичная ошибка: модель обучена на нормализованных данных в диапазоне [0,1], а в приложении на вход подаётся [0,255] — инференс работает, но с бессмысленными результатами без ошибки. Мы включаем модуль автоматической валидации входных данных в SDK.

Для задач классификации изображений, детекции объектов и сегментации доступны готовые оптимизированные модели. YOLOv8 в CoreML формате запускает детекцию кадра 640×640 за 15–20 мс на iPhone 14 Neural Engine. MobileNetV3 на TFLite с GPU delegate — около 8 мс на Pixel 7 при классификации.

Параметр CoreML TFLite
Платформы iOS, macOS, watchOS Android, iOS, Linux, embedded
Хардварное ускорение Neural Engine, GPU, CPU NNAPI, GPU (OpenCL/OpenGL), CPU
Поддержка квантизации FP16, INT8 (с coremltools) FP16, INT8, dynamic range
Кастомные операции Через MLCustomLayer (Swift) Через делегаты (Java/Kotlin)
Размер бандла модели ~3–5 МБ (MobileNetV2 quantized) ~2–4 МБ

Что делать, если нужна генерация текста на устройстве?

Запуск небольших языковых моделей на устройстве стал реальностью в последние несколько лет. Apple Intelligence использует собственные модели через Private Cloud Compute, но для сторонних разработчиков доступны другие пути.

llama.cpp с Metal backend на iOS — работающий подход для phi-3-mini (3.8B параметров, 4-bit квантизация, ~2.3 ГБ). Инференс: 15–25 токенов/секунду на iPhone 15 Pro. Для интеграции в Swift используем Swift Package llama.swift или обёртку через C-интерфейс llama.h. Бинарник к приложению не прикладываем — модель скачивается при первом запуске и хранится в Application Support. Наши сертифицированные разработчики настраивают инкрементальную загрузку, чтобы не блокировать первый запуск.

На Android аналог — Google AI Edge (бывший MediaPipe LLM Inference API) с поддержкой Gemma-2B. Работает через GPU delegate, на Tensor G3 чипе Pixel 8 Pro — около 20 токенов/секунду.

Ограничения реальны: модели больше 4B параметров на мобильных устройствах по-прежнему медленны. Для сложных задач рассуждения on-device LLM уступает GPT-4o в качестве. Гибридный подход — on-device для коротких задач и приватных данных, облако для сложных запросов — часто оптимален. Оценим ваш кейс и предложим баланс производительности и приватности — пишите.

Интеграция OpenAI API и других облачных моделей

Для сценариев, где cloud inference допустим, интеграция OpenAI, Anthropic или Google Gemini — это HTTP клиент + streaming SSE. В Swift удобно через AsyncThrowingStream для стриминговых ответов. В Kotlin — через Flow.

Критически важно: API-ключи никогда не хранятся в бандле приложения. Даже обфусцированный ключ извлекается из IPA за 10 минут через strings или frida. Правильная архитектура: мобильное приложение → собственный backend → OpenAI API. Backend контролирует rate limiting, логирует запросы, защищает ключ.

Что входит в работу (deliverables)

  • Обученная и квантизированная модель под целевое устройство (документация по метрикам)
  • SDK для интеграции (Swift/Kotlin/Flutter) с примерами вызова
  • Тесты производительности на 3–5 реальных устройствах
  • Инструкция по обновлению модели OTA
  • Поддержка при прохождении модерации App Store / Google Play (проверка соответствия Guidelines 4.2, 5.1)
  • 2 недели технической поддержки после релиза

Типичный пайплайн проекта

  1. Анализ задачи — замеряем latency, privacy, size, поддерживаемые устройства.
  2. Прототипирование модели — в Python, оценка accuracy на целевых данных.
  3. Конвертация и квантизация — под CoreML/TFLite с валидацией.
  4. Интеграция в приложение — модель оборачивается в сервисный слой (легко подменять CoreML → TFLite → облако).
  5. Тестирование — на реальных девайсах, замер FPS, RAM, батареи.
  6. Деплой — через TestFlight / Firebase App Distribution, мониторинг метрик.

Сроки: интеграция готовой CoreML/TFLite модели — 1–2 недели, разработка кастомной модели с мобильной оптимизацией — от 6 недель, on-device LLM чат с персонализацией — 4–8 недель.

Почему мы беремся за сложные кейсы?

10+ лет опыта в мобильной разработке, 50+ внедрённых AI/ML решений, гарантия совместимости с актуальными версиями iOS и Android. Все проекты проходят code review и нагрузочное тестирование. В стоимость уже входит подготовка документации для модерации и обучение вашей команды.

Свяжитесь с нами — мы поможем выбрать архитектуру и внедрить ML в ваше приложение под ключ. Закажите аудит существующего решения — бесплатно оценим потенциал экономии серверных затрат (в некоторых проектах экономия достигает $10k в месяц).