Info

Testing and Issues

You can test this entry and submit issues during the testing period of the C++ Contest 2022 contest.

Entries with serious issues will not be able to win the contest, but even minor issues might be important for overall results.

Voting

Comments

Реализовано:

-Сглаживание участков лица.
-Изменение размера глаз.
Android
Ограничения и допущения, используемые в проекте:
1. Приоритеты в соответствии с задачей: минимальный размер, скорость, качество видео.
2. Для ускорения и уменьшения размера проекта , с учётом дополнений к задаче https://t.me/contest_ru/24, при распознавания лиц используется Arcore.
3. Arcore API на передней камере из геометрии предоставляет только сетку лица. Используя только она, без дополнительного распознавания.
Android
4. Из изменения формы применяется только небольшое увеличение размера глаз, т.к. оно имеет более однозначное воздействие, чаще востребовано и позволяет обойтись без индивидуальной настройки.
5. По задаче эффект должен быть еле заметным - поэтому выбираются не очень большие значения преобразований.
6. Для уменьшения размера приложения были исключены и заменены некоторые стандартные зависимости, настроены параметры проекта и компилятора.
Android
Особенности реализации:

Высокий FPS. Используется GPU ускорение через шейдеры.
Размер so модуля на arm64-v8a- 210кб. Суммарно вместе c libarcore_sdk - 342кб. Размер demo APK включающей сборки arm64-v8a,armeabi-v7a,x86 - 470кб.
Android
Сглаживание лица производится через выборочное размытие с переменным радиусом.
Регион размытия задаётся одной PNG маской с двумя каналами:
зеленый - прозрачность слоя эффектов, сглаживающего лицо и меняющего геометрию.
красный - радиус размытия.
Для исключения артефактов при повороте головы в стороны, из-за погрешности распознавания геометрии лица Arcore, используются дополнительный расчет эффекта на основе векторов нормалей к поверхности лица.
Android
You have not added any comments yet...
by rating

Issues

Fair Mammoth Mar 17 at 17:43
В работе используется ARCore, наложение эффекта сглаживания происходит через маску шейдером. 

Приложение позволяет в автоматическом режиме изменить размер глаз, а также смягчить тон кожи и некоторые кожные дефекты, сохраняя ожидаемую производительность не ниже 30 FPS в реальном времени.

В ходе тестирования приложения и моделирования различных ситуаций реального мира были выявлены следующие недоработки как алгоритма, так и приложения:
– В ситуациях, когда лицо пользователя освещается не прямым источником света, маска фильтра может накладываться некорректно: происходит «замыливание» области глаз, носогубного треугольника. В частности, это происходит на устройствах Samsung, а именно S10 Android 12.
Samsung Galaxy S22 Ultra (Android 12); Samsung Galaxy S10 (Android 12); Xiaomi Redmi Note 8 Pro (Android 10).
10
Fierce Bass Mar 17 at 18:06
Воспроизвести кейс с освещением на OnePlus 5, Redmi Note 9 не удалось. При корректной геометрии из Arcore области глаз и носогубного треугольника никак не модифицируются в модуле - там прозрачность эффекта задана нулевой через маску. Есть предположение, что в указанном режиме освещения Arcore может некорректно распознавать положение лица, т.е. баг будет характерен и для других приложений использующего геометрию из Arcore. Буду признателен, если уточните этот момент в других приложений на базе Arcore в указанном освещении (как вариант - Arcore SDK samples ).
Nobody added any issues yet...