Для розробника все почалося із пошуку інструменту під конкретну та, на перший погляд, нескладну задачу.
Читайте также: Український НРК «Мураха» отримав модифікацію з броньованою капсулою для евакуції поранених
«Нещодавно шукав інструмент для доволі простої на перший погляд задачі: зрозуміти, чи є на зображенні людське обличчя, — розповів Владислав у 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, платних сервісів і зайвої інфраструктури, — підсумовує Владислав Баштанник. — І це якраз той випадок, коли найпотужніша модель не обов’язково є найкращою. Іноді значно важливіше, щоб інструмент нормально вирішував конкретну задачу та не ускладнював систему».
Читайте также: В Україні понад 380 000 ІТ-компаній та ФОПів, і майже 80% із них працюють у сфері розробки програмного забезпечення
