Чому віртуальна примірка макіяжу бреше щодо кольору та гальмує
Відтінок помади на екрані й на губах — дві різні величини. Камера знімає обличчя за власного балансу білого, екран показує картинку у своєму колірному просторі, а між ними — стиснення й переведення яскравості в діапазон дисплея.
Якщо віртуальна примірка макіяжу просто кладе напівпрозорий кольоровий шар поверх обличчя, теплий бежевий тон на холодній шкірі йде в бруд, а насичений червоний — у цегляний.
Друга причина — геометрія. Контур губ і повік, знайдений за одним кадром, з'їжджає при повороті голови, нахилі та усмішці, а без згладжування в часі маска тремтить між кадрами.
Примірка косметики в застосунку має працювати не зі знімком, а з потоком: стійкі ключові точки обличчя, утримання контуру від кадру до кадру та змішування кольору в просторі, наближеному до сприйняття ока.
Третя причина — ціна кадру. Нейромережева примірка макіяжу рахує маску й накладання на кожному кадрі відеопотоку: на середній за потужністю моделі інтерфейс просідає, на слабкій картинка перетворюється на слайд-шоу.
Рятує тут не одна «універсальна» модель, а рівні якості — полегшені ваги на слабких пристроях, повна модель на сильних, із плавним переходом між режимами.
Окремий шар роботи — калібрування під реальні умови: денне світло з вікна, теплі лампи, тінь від власної руки. Саме на цьому етапі неточна передача відтінку перестає бути «особливістю телефона».
Розбираємо, як кожен із цих збоїв закривається — від колірного калібрування до бюджетів продуктивності.
Ефект від коректної примірки: точність, швидкість, навантаження
Що змінюється за коректної реалізації: відгук не відстає від руху голови, відтінок збігається з реальним продуктом, застосунок однаково поводиться і на нових, і на попередніх моделях пристроїв.
Точність підбору тону
Відтінок примірки збігається з реальним продуктом, а не з усередненим кольором пікселів. Рахуємо в перцептивних колірних координатах, компенсуємо світло та баланс білого камери, тому холодний, теплий та оливковий підтони не «з'їжджають» в один.
На складних випадках звіряємося з офіційною шкалою відтінків лінійки та еталонними значеннями на кшталт Pantone, а не на око.
Час відгуку примірки
Примірка в реальному часі: макіяж перемальовується раніше, ніж наступний кадр потрапляє на екран, тому при повороті голови шар не наздоганяє обличчя із затримкою. Опорні точки відстежуються з передбаченням положення та згладжуванням — контур губ і повік не тремтить і не «пливе».
Навантаження на пристрій
Відмальовування та аналіз обличчя йдуть на самому телефоні: кадри не йдуть на сервер, тому витрата батареї та нагрів залишаються в межах звичайного знімання камерою.
Легкі моделі працюють і на пристроях попередніх років, а за нестачі ресурсів якість знижується поступово, замість вильоту.
Менше відмов «обличчя не розпізнано»
Закриваємо сценарії, які ламають примірку: окуляри, чубчик, слабке світло, темна шкіра, сильний нахил голови. Замість помилки — підказка «поверніться до світла», а поріг упевненості налаштовується за накопиченими даними. Частка успішних сесій примірки зростає, однотипні звернення до підтримки зникають.
Способи реалізації примірки: що і де рахувати
Віртуальна примірка макіяжу розпадається на два незалежні етапи: розмітку обличчя (ключові точки, контури губ і повік, тон шкіри) та синтез підсумкового зображення.
Де рахується кожен із них — це і є вибір між відмальовуванням на пристрої, серверним відмальовуванням та їх комбінацією. Рахуєте все в телефоні — отримуєте миттєвий відгук і роботу без мережі; переносите синтез на сервер — отримуєте якість, обмежену лише каналом.
Окреме розгалуження — постачати примірку своїм кодом чи вбудовувати готовий модуль примірки. Нижче — як ці варіанти поводяться на живих проєктах.
| Варіант | Коли підходить | Обмеження |
|---|---|---|
| Відмальовування на пристрої | Офлайн-сценарії, потік без затримки, слабкий канал | Різний парк пристроїв: на слабких апаратах доводиться спрощувати якість текстур |
| Серверне відмальовування | Максимальна якість синтезу, складні образи та переходи | Затримка відгуку та навантаження, що зростає з кількістю активних користувачів |
| Вбудовуваний модуль примірки | Потрібен швидкий запуск без своєї команди з графіки | Рамки чужого інтерфейсу, оновлення за чужим графіком, прив'язка до постачальника |
| Гібридна схема обробки | Потрібен компроміс: відгук на клієнті, якість із сервера | Складніший контур: синхронізація версій моделей і контроль каналу |
На практиці чисті схеми трапляються рідко: гібрид із розміткою на клієнті та відмальовуванням на сервері закриває більшість сценаріїв, а на слабких пристроях вмикається спрощений шлях відмальовування на пристрої. Вибір фіксуємо після замірів на цільовому парку пристроїв, а не за таблицею характеристик.
Етапи роботи: від аудиту камери до передачі збірки
Етапи впровадження віртуальної примірки макіяжу фіксуємо до старту: порядок визначає обсяг кожного кроку і той момент, коли замовник бачить працюючий результат.
Спочатку розбираємося, як застосунок отримує зображення з камери, потім проєктуємо модуль, реалізуємо та перевіряємо на реальному парку пристроїв. Від проєкту до проєкту змінюється глибина опрацювання, а не сама послідовність.
- Аудит камери та світла. Дивимося, як застосунок захоплює кадр, наскільки стабільні параметри знімання і як поводиться картинка за слабкого та змішаного освітлення. За результатами ясно, чи потрібне окреме калібрування тону шкіри під конкретні пристрої.
- Сценарії використання примірки. Розбираємо, звідки користувач приходить до примірки — з картки товару, добірки образів чи повторного візиту. Від цього залежить, скільки відтінків показувати одночасно і яку затримку відгуку вважаємо припустимою.
- Схема модуля. Визначаємо, що рахуємо на пристрої, а що — на боці сервісу, як передаються і коли видаляються користувацькі знімки, де зберігаються палітри відтінків.
- Реалізація. Збираємо накладання та підбір відтінку, відпрацьовуємо поведінку за часткового перекриття губ і очей, додаємо сценарії без примірки — щоб відмова камери не ламала основний шлях.
- Тестування на пристроях. Проганяємо примірку на парку моделей різного класу, за різного світла та ракурсів, перевіряємо нагрів і витрату заряду.
- Передача та супровід. Віддаємо збірку разом із документацією по модулю, стежимо за метриками після релізу та доопрацьовуємо палітри за зворотним зв'язком.
Комплект передачі: схеми, регламенти, документація
Передаємо не лише працюючий застосунок, а й усе, що потрібно для його самостійної підтримки. Комплект збирається по ходу проєкту, а не в останній тиждень, тому до фіналу кожен артефакт уже перевірений на реальних змінах і доопрацюваннях.
- Документація по модулю примірки: архітектура, склад компонентів, точки розширення та обмеження за категоріями продуктів — новий розробник входить у код без автора.
- Схеми інтеграції: обмін із сервісом підбору відтінків, каталогом і аналітикою — напрямки потоків, формати та поведінка за недоступності зовнішнього сервісу.
- Схеми потоків даних: шлях кадру від камери до результату — що залишається на пристрої, що йде на сервер і в якому вигляді.
- Правила доступу та ролі: хто змінює каталог, додає відтінки й дивиться статистику, які права для цього потрібні.
- Регламент оновлення палітр: як завести лінійку або окремий відтінок, де лежать вихідні дані, які перевірки пройти і за який термін зміна доїжджає до користувачів без випуску нової версії.
- Передача вихідного коду: репозиторії з історією, локальна збірка та випуск, опис середовищ і порядок викладення оновлень.
- Інструкції для підтримки: типові звернення, порядок діагностики, точки відкату та журнал змін за релізами.
Приймання йде за чек-лістом: кожен пункт підтверджуємо демонстрацією на живому стенді, а не наявністю файлу. Якщо після передачі частина комплекту застаріває через ваші доопрацювання, оновлюємо його в межах супроводу — підтримка не залишається без актуальної документації.
Кейс магазину косметики: метрики до і після впровадження
Мережа магазинів косметики Amber Glow прийшла із задачею: у застосунку примірка макіяжу працювала лише за статичним знімком. Користувач завантажував фото, чекав обробку і нерідко отримував викривлений відтінок — тіні йшли в інший тон, тон шкіри «плив» у тінях. Кейс примірки макіяжу ми почали не з моделі, а із замірів: де саме користувачі йдуть.
До: третина спроб обривалася на розпізнаванні
Метрики до впровадження: близько третини сесій примірки обривалося на етапі розпізнавання обличчя, а частка додавань у кошик після примірки була нижчою, ніж після звичайного перегляду картки.
Користувачі йшли з картки товару, не дочекавшись результату: обробка знімка займала помітний час. Зниження частки відмов стало головною метою — без нього решта покращень не мала сенсу.
Після: відгук у реальному часі
Ми перебудували контур: відтінок підбирається прямо в потоці камери, без завантаження знімка та очікування. Палітра накладається з урахуванням освітлення та тону шкіри, а за низької впевненості розпізнавання застосунок просить поправити кадр замість видачі випадкового тону.
Метрики до і після розійшлися помітно: частка успішних розпізнавань зросла, відмови на цьому кроці скоротилися більш ніж утричі, повторні відкриття примірки — у 2,5 раза на активного користувача, повернення з причини невідповідного відтінку — приблизно вдвічі.
Що робити, якщо в застосунку вже є камера та фільтри
Доопрацювання випущеного застосунку не вимагає переписувати наявний код камери та фільтрів. Модуль віртуальної примірки макіяжу встає окремою ланкою в потік кадрів: він отримує той самий буфер, що й поточні ефекти, але застосовується останнім, поверх готової картинки. Користувач зберігає звичні сценарії знімання, а примірка вмикається як окремий режим.
Головна складність — конфлікт модулів обробки. Два обробники кадру починають конкурувати за один буфер і за час на його розбір: з'являється подвійна кольорокорекція, тремтіння контуру губ і повік, просідання частоти кадрів на середніх пристроях.
Ми розводимо обробку по єдиному конвеєру та фіксуємо порядок: спочатку геометрія обличчя, потім тон і текстура продукту, і лише потім загальні фільтри застосунку.
Друге джерело проблем — зворотна сумісність. Частина пристроїв не витягне модель примірки, тому закладаємо плавну деградацію: якщо ресурсів не вистачає, режим вимикається, а камера та фільтри працюють як раніше. Ветку супроводу ведемо окремо, щоб правки примірки не зачіпали релізну логіку знімання.
Випускаємо поетапно. Спочатку вмикаємо модуль для внутрішньої перевірки, потім відкриваємо невеликій частці аудиторії та дивимося частку успішних сесій примірки, відвал застосунку й час відгуку на натискання.
Якщо метрики йдуть у мінус, функція гаситься тим самим перемикачем, без нової збірки — у решти користувачів застосунок продовжує працювати як раніше.
Технічні сумніви: точність кольору, світло, навантаження
Точність примірки — це не лише модель макіяжу, а й обробка кадру: баланс білого, експозиція, тон шкіри. Нижче — сумніви, які найчастіше знімаємо до старту робіт.
Наскільки точно передається відтінок за різного світла?
Рендер калібруємо за еталонними знімками за теплого, нейтрального та холодного світла і за кількома типами шкіри — від світлої до глибокої. Тон лягає на карту обличчя з поправкою на освітленість кадру, тому помада не вицвітає біля вікна і не йде в рудий під лампами. Розходження залишається помітним лише за порівняння пліч-о-пліч із реальним продуктом.
Чи працює примірка без мережі?
Відтінки та модель обличчя лежать у локальному кеші, розрахунок іде на пристрої. Без інтернету примірка відкривається, перемикання відтінків і збереження знімка працюють — недоступні лише новинки асортименту та синхронізація обраного.
Що на старих і слабких пристроях?
Для них вмикається полегшений режим: роздільна здатність обробки кадру та частота оновлення прев'ю знижуються, частина ефектів спрощується. Примірка залишається плавною, картинка — менш детальною. Поріг перемикання визначаємо замірами на реальних апаратах, а не за номерами моделей.
Як оновлюється палітра відтінків?
Асортимент описаний даними і приходить із сервера, а не вшитий у збірку. Нові відтінки та лімітовані колекції з'являються в користувача без випуску нової версії — оновлення підхоплюється за наступного запуску.
Обговоримо задачу: розберемо застосунок і повернемося з планом
Щоб обговорити задачу предметно і повернутися з оцінкою та планом робіт, а не із загальними формулюваннями, нам потрібен мінімум ввідних.
Розбір поточного застосунку починаємо з того, що вже є: доступ до збірки або тестового контуру, опис користувацьких сценаріїв, список цільових пристроїв і асортимент відтінків. Якщо збірки ще немає, працюємо від опису — цього достатньо, щоб зрозуміти обсяг і ризики.
Що потрібно від вас для старту проєкту:
- доступ до поточної збірки або тестового контуру — а якщо продукт лише проєктується, опис сценарію: де користувач вибирає продукт, де запускає примірку, що робить потім;
- перелік цільових пристроїв і версій системи, на яких примірка має працювати однаково, — від цього залежить спосіб обробки кадру;
- асортимент відтінків із правилами накладання: як тон лягає на різні типи шкіри і що вважається коректним результатом;
- набір еталонних кадрів і моделей, на яких ви готові приймати якість збігу;
- пріоритетні платформи та обмеження за термінами, якщо запуск прив'язаний до сезону чи релізу;
- контактна особа з боку продукту, яка зніме питання щодо сценаріїв і відтінків по ходу роботи.
Із цим набором проводимо розбір поточного застосунку, відзначаємо, що можна перевикористати без переписування, і повертаємося з оцінкою та планом робіт за етапами. Опишіть задачу — обговоримо, що вже є, і узгодимо старт проєкту.







