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

by rating

Issues

Комментарий от Witty Dodo:

Состав архива:
- /app: исходные файлы демонстрационного примера.
- /lib: исходные файлы и настройки модуля преобразования лица.
- pavcam-alpha-android.apk: приложение для Android.
Samsung A51/Android 11
Демонстрационный пример реализован в Qt 5.12.12 и протестирован на Infinix NOTE 10 Pro NFC и iMac 21.5 Mid 2011. Размер модуля преобразования лица вместе со всеми необходимыми параметрами составляет 1.3 МБ (pavcam-alpha-android.apk/lib/arm64-v8a/libpavcam.so). Другие имеющиеся в apk файлы относятся к функционированию демонстрационного примера.
Samsung A51/Android 11
Модуль состоит из трех файлов исходного кода: mat.hpp (общий математический функционал), recognition.hpp (алгоритм обнаружения лица на изображении) и filtration.hpp (преобразование лица). Для функционирования модуля имеется два бинарных файла (wgh.bin - весовые коэффициенты "лиц") и (ideal.bin - среднестатистическое "идеальное лицо").
Samsung A51/Android 11
Примеры работы и известные проблемы:
Пример верного функционирования программы на человеке, который ранее этой программе не был известен. В большинстве случаев наблюдаются частые "прыжки" решений с истинного на ошибочное, что является известной недоработкой, связанной с ограничением времени разработки ПО.
Samsung A51/Android 11
Также, к известным недорабокам по тем же причинам относятся: искажение пропорций изображения и грубое разрешение при выводе на экран (квадрат 200х200 пикселей растянут на весь прямоугольник вывода), различное качество распознавания при повороте смартфона (в горизонтальном положении результат несколько лучше), "в среднем" лучшие результаты распознавания плоских изображений с экрана монитора, чем собственного изображения с камеры (в настроечной выборке алгоритма находится всего 10 снимков двух реальных людей и 11 снимков разных людей из Интернета).
Samsung A51/Android 11
Частота кадров на экране указана только для процедуры фильтрации (не распознавания), распознавание на Infinix NOTE 10 Pro NFC в зависимости от условий съемки в районе 15-20 FPS (реализация различных потоков для обнаружения лица и его "улучшения" - было осознанным архитектурным решением). При реализации проекта основные усилия были сконцентрированы на решении задачи в ее первоначальной постановке "...внедрение сторонних библиотек (OpenCV и подобные) и ML-моделей не приветствуется...", ибо такая трактовка показалась наиболее интересной.
Samsung A51/Android 11
Модуль преобразования лица реализован с применением только стандартных библиотек (никаких нейронок, внешних движков и т.п., только классика, только хардкор). Задача "улучшения" лица решалась скорее формально, по остаточному принципу. Поскольку (в остатке) времени совсем не оставалось, для "улучшения лица" было применено простое наложение «среднестатистического бесполого идеала лица» на распознанное изображение. Весь исходный код модуля укладывается в 350 строк.
Samsung A51/Android 11
Поиск лица на изображении обходится в O(X*Y*K), где X и Y - размер изображения по горизонтали и вертикали, К - количество ключевых точек лица. На данный момент лицо "покрыто" сеткой 11x11 (121 ключевая точка), что является грубым и медленным решением (количество точек избыточно и они расположены не в "естественных" местах), но бысто реализуемым. Кратко, алгоритм обнаружения поясняет следующий рисунок:
Samsung A51/Android 11
Fair Quokka Mar 17, 2022 at 17:52
Приложение использует полностью кастомное решение. 

Работа над приложением не окончена, конкурсное задание не выполнено. Приложение не позволяет представить «лучшую версию себя» собеседнику. 

При открытии приложения предполагается определение положение лица в кадре – однако ни на одном из задействованных в ходе тестирования устройств эта функциональность не работает ожидаемым образом. Приложению требуется продолжительное время на определния границ лица пользователя. 

Качество выводимого видеопотока при этом низкое, картинка пикселизирована.
Samsung Galaxy S22 Ultra (Android 12), S10 (Android 12); Xiaomi Redmi Note 8 Pro (Android 10).
Nobody added any issues yet...