Для розробника все почалося із пошуку інструменту під конкретну та, на перший погляд, нескладну задачу.
«Нещодавно шукав інструмент для доволі простої на перший погляд задачі: зрозуміти, чи є на зображенні людське обличчя, — розповів Владислав у LinkedIn. — Можна було взяти першу популярну модель і закрити задачу. Але хотілося знайти рішення, яке не потребуватиме GPU, окремого ML-сервісу чи платного API».
Крім того, схоже, для команди було важливо чітко розмежовувати функціонал:
«Нам був потрібен саме face detection, а не face recognition, — підкреслює Senior Python Engineer. — Тобто модель лише відповідає, чи є обличчя і де воно розташоване. Вона не намагається визначити, хто ця людина, і не зберігає жодних біометричних даних».
Щоб обрати оптимальний варіант, Владислав протестував декілька популярних підходів: стандартні детектори OpenCV, MTCNN, YOLO та YuNet. Для об’єктивної оцінки він підготував спеціальний тестовий датасет.
«Я підготував скрипт, який робив аналіз ефективності даних. Лиш перед цим ще створив скрипт, котрий скачав 10к картинок для аналізу, 5к з обличчями і 5к — без», — зазначає розробник.
За результатами бенчмарку найкращі показники продемонструвала модель YuNet — компактне рішення, яке легко запускається через OpenCV безпосередньо на CPU.
На вибірці з 10 000 зображень та порогу спрацьовування (threshold) 0.5 вдалося отримати наступні метрики:
Accuracy — 97,54%;
Precision — 99,19%;
Recall — 95,64%;
F1-score — 97,40%;
FP (False Positives) — 0,73%;
FN (False Negatives) — 4,33%.
Завдяки цьому експерименту розробник отримав рішення, яке повністю вирішує бізнес-задачу без зайвого ускладнення архітектури.
«У результаті отримали просте рішення без GPU, платних сервісів і зайвої інфраструктури, — підсумовує Владислав Баштанник. — І це якраз той випадок, коли найпотужніша модель не обов’язково є найкращою. Іноді значно важливіше, щоб інструмент нормально вирішував конкретну задачу та не ускладнював систему».
/
Senior Python Engineer Владислав Баштанник розробив рішення для face detection, яке доводить: найпотужніша модель — не завжди найкраща. Шукаючи простий інструмент для визначення облич на фото, розробник отримав просте рішення без GPU, платних сервісів і зайвої інфраструктури.




