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

3

Comments

Apk собран c minSdk 28(Android 9+) под arm64-v8a

tg_face_required_play_services.apk - для телефонов у которых есть гугл плей сервисы. В таком случае при установке apk плей сервисы проверят есть ли у них необходимые библиотеки для распознавания лица.
Если нет, то скачают(проверьте что есть интернет на телефоне), и после скачивания заработает распознание лица.

tg_face_no_play_services.apk - если установка будет происходить на телефон без гугл плей сервисов или на телефоне отсутствует интернет.
Samsung A51/Android 11
Кратко по решению:
С камеры берутся два изображения в самом маленьком разрешении для определения точек лица и большом для превью и применения эффекта.
Определяется лицо, получаем точки от MlKit и отправляются в нативку. Производится расчет параметров и отправляем полученные значения в шейдер.
Шейдер с полученными параметрами применяет эффект на GPU.
Samsung A51/Android 11
Сделано:
1) Улучшение качества кожи + небольшое осветление.
2) Изменение носа, глаз, контура лица.
Доступны два режима кастомный и автоматический.
Автоматический приводит ваше лицо чуть ближе к золотому сечению.
А в кастомном вы сами себе выбираете размер глаз, контура лица и носа. Для смены режима нужно нажать на кнопку "AUTO MODE".
3) Размер собранной нативной либы libtgface.so 383кб.
4) Высокий fps.
Samsung A51/Android 11
Про камеры:
Если камера поддерживает отдачу в 60fps маленьком и высоком разрешениях, то требую от камеры отдачу в 60 кадров/сек, иначе требую отдачу в 30 кадров/сек.

Результаты, до наступления троттлинга:
Samsung A51 - 29/30fps передняя и задняя камеры. При нагреве fps может упасть до 25.
Xiaomi mi 9t - 30/30fps передняя, 60/60fps задняя камеры. У задней камеры при нагреве падение до 45fps.
Pixel 5 - 30/30fps передняя, 50/60fps задняя камеры.
Redmi note 9 - 28/30fps передняя и задняя камеры.
honor 9 lite - 16/30fps передняя и задняя камеры.
Samsung A51/Android 11
Заснял пару видео. Себя и жены на Xiaomi mi 9t.
https://youtu.be/GqzqmKvSexQ
https://youtu.be/FP255DZea8Q
Samsung A51/Android 11
ArCore не стал использовать по причинам:
1) Обязательна установка приложения ArCore
2) Нет возможности запуска для телефонов без гугл плей сервисов.
3) На Samsung A51 при использовании ArCore просто для определения лица(Без применения эффектов) выдает 25 из 30fps загрузка CPU 40% GPU 75%. Мое же решение 29 из 30fps загрузка CPU 40% GPU 50% с определением лица и применением эффектов.

Поэтому для определения лица я взял гугловский MlKit который интегрирован с плей сервисами(Размер apk не увеличивается) и можно использовать на телефонах без плей сервисов(Размер apk увеличивается).
Samsung A51/Android 11
Результат на более плотных людях:
Samsung A51/Android 11
1
You have not added any comments yet...
by rating

Issues

Fair Mammoth Mar 17 at 17:44
В работе используется ML Kit и https://github.com/wysaid/android-gpuimage-plus.

Приложение в автоматическом режиме преобразовывает лицо пользователя, изменяя ширину лица и форму носа. Помимо этого происходит увеличение глаз, а также сглаживание тона кожи и обработка некоторых кожных дефектов. Пользователь также может настраивать каждый из параметров отдельно в режиме реального времени. Приложению удаётся удерживать ожидаемую производительность не ниже 30 FPS, однако на менее производительных устройствах (Xiaomi Redmi Note 8 Pro) FPS может падать до 20.

В ходе тестирования приложения и моделирования различных ситуаций реального мира были выявлены следующие недоработки как алгоритма, так и приложения:
– Если лицо находится частично за пределами экрана, начинает незначительно дрожать «маска» лица.
Samsung Galaxy S22 Ultra (Android 12); Samsung Galaxy S10 (Android 12); Xiaomi Redmi Note 8 Pro (Android 10).
10
Nobody added any issues yet...