Розробка системи детекції облич (Face Detection)

Розробка системи детекції облич (Face Detection)

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1439
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    997
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1264
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1002

Розробка системи детекції облич (Face Detection)

Детекція облич — перший і критичний етап будь-якого face-пайплайну. Завдання — знайти всі обличчя на зображенні та повернути bounding boxes з confidence score. На перший погляд здається простим, але реальні умови — маленькі обличчя на відстані, профільні ракурси, часткові перекриття, погане освітлення, маски — перетворюють її на нетривіальне інженерне завдання. У production-системах відмова детекції навіть одного обличчя може призвести до критичного зниження якості всього пайплайну. Наприклад, у відеоспостереженні на стадіоні обличчя розміром 20×20 пікселів — стандарт. Без спеціалізованої оптимізації такі об'єкти губляться в 40% кадрів. Ми розробляємо детектори, які працюють у production з латентністю до 4 мс на GPU, зберігаючи високу точність навіть на складних сценах.

Чому стандартні детектори часто помиляються?

Більшість open-source детекторів навчається на датасетах на кшталт WiderFace, де обличчя добре освітлені та великі. У реальності камери відеоспостереження, вуличні умови, маски та окуляри знижують точність до 60–70%. Ми вирішуємо це донавчанням на цільових даних з аугментацією, що імітує реальні умови — повороти, тіні, розмиття. Наприклад, додавання синтетичних масок при донавчанні підвищує AP з 65% до 89% на датасеті MAFA.

Як ми вирішуємо проблему детекції облич?

Використовуємо три основні підходи залежно від вимог.

SCRFD (Sample and Computation Redistribution for Face Detection) — поточний найкращий за співвідношенням швидкість/якість. SCRFD-10GF досягає 95.2% AP на WiderFace Hard, що в 2 рази швидше за RetinaFace-R50 при порівнянній точності. Детальніше про модель можна дізнатися в репозиторії InsightFace.

RetinaFace — класика з landmark detection (5 точок: очі, ніс, куточки рота). Використовується для alignment перед face recognition.

YOLOv8 fine-tuned на WiderFace — універсальний варіант за наявності кастомних вимог.

from insightface.app import FaceAnalysis import cv2 # InsightFace: детекція + landmark detection app = FaceAnalysis(allowed_modules=['detection']) app.prepare(ctx_id=0, det_size=(640, 640)) def detect_faces(image_path: str) -> list[dict]: img = cv2.imread(image_path) faces = app.get(img) results = [] for face in faces: results.append({ 'bbox': face.bbox.astype(int).tolist(), # [x1, y1, x2, y2] 'confidence': float(face.det_score), 'landmarks': face.kps.astype(int).tolist() # 5 keypoints }) return results 

Детекція дрібних облич

Стандартні детектори гублять обличчя менше ніж 16×16 пікселів. Для камер відеоспостереження з великою відстанню до об'єкта:

  • Image tiling: розбиваємо зображення на перекривні тайли, детектуємо на кожному, мержимо результати через NMS
  • SAHI (Slicing Aided Hyper Inference) — автоматичний tiling з merge. Бібліотека доступна на GitHub.
from sahi import AutoDetectionModel from sahi.predict import get_sliced_prediction model = AutoDetectionModel.from_pretrained( model_type='yolov8', model_path='face_detector.pt', confidence_threshold=0.3 ) result = get_sliced_prediction( image='crowd.jpg', detection_model=model, slice_height=512, slice_width=512, overlap_height_ratio=0.2, overlap_width_ratio=0.2 ) 

Продуктивність на різному залізі

Детектор WiderFace Hard AP Latency CPU Latency GPU (T4)
SCRFD-500MF 90.5% 8 ms 1.5 ms
SCRFD-10GF 95.2% 45 ms 4 ms
RetinaFace-R50 94.9% 90 ms 7 ms
YOLOv8n (WiderFace) 93.1% 12 ms 2 ms
Як вибрати детектор для вашого проєкту?

Якщо латентність критична (наприклад, real-time відео), найкращий вибір — SCRFD-500MF на GPU. Якщо важлива максимальна точність — SCRFD-10GF. Для вбудованих систем без GPU підійде YOLOv8n, оптимізований через ONNX Runtime з INT8 квантуванням.

Як донавчити модель для детекції облич у масках?

Пандемія сформувала окремий клас задач — детекція облич у медичних масках. Датасет MAFA містить 35,806 розмічених облич у масках. Донавчання стандартного детектора на MAFA+WiderFace: AP на masked faces підвищується з 65% до 89%. Процес донавчання включає:

  1. Збір або генерацію синтетичних даних з масками
  2. Аугментацію: повороти, зміна освітлення, розмиття
  3. Fine-tuning переднавченої моделі на змішаному датасеті
  4. Валідацію на окремому тестовому наборі

Це дозволяє досягти стабільної роботи в умовах масок, окулярів та інших occlusion.

Що входить в роботу над системою детекції

Ми надаємо рішення під ключ, що включає:

  • Аналіз ваших умов і підготовка синтетичних/реальних даних
  • Вибір і донавчання детектора (SCRFD/RetinaFace/YOLOv8)
  • Оптимізація latency та memory footprint (INT8 quantization, ONNX Runtime)
  • Інтеграція у ваш пайплайн (REST API, gRPC, RTSP)
  • Документація і навчання вашої команди
  • Підтримка на етапі експлуатації

За 5 років досвіду в computer vision ми реалізували понад 30 проєктів з детекції та розпізнавання облич. Обробляємо до 100 кадрів/с на одному GPU. Результат гарантуємо — якщо точність не досягає цільових показників, доопрацьовуємо безкоштовно.

Строки розробки

Задача Строк
Детекція, стандартні умови, готова модель 1 тиждень
Кастомні умови (маски, камери, освітлення) 2–3 тижні
Детекція дрібних облич, оптимізація pipeline 3–5 тижнів

Замовте демо-версію детектора для ваших даних і отримайте попередню оцінку за 1 день. Зв'яжіться з нами, щоб обговорити ваш кейс.