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

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка системи детекції облич (Face Detection)
Простий
від 1 тижня до 3 місяців
Часті запитання

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

Етапи розробки AI-рішення

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

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

Розробка систем виявлення обличчя

Виявлення обличчя - це перший етап майже будь-якого face-конвеєра. Завдання: знайти всі обличчя на зображенні та повернути обмежувальні рамки з оцінкою впевненості. Звучить просто, але реальні умови добавляють складність: маленькі обличчя на відстані, профільні кути, часткові перекриття, погане освітлення, маски.

Сучасні детектори облич

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

RetinaFace — класика з детекцією орієнтирів (5 точок: очі, ніс, кутики рота). Використовується для вирівнювання перед розпізнаванням облич.

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

from insightface.app import FaceAnalysis
import cv2

# InsightFace: виявлення + детекція орієнтирів
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

Виявлення дрібних облич

Стандартні детектори втрачають обличчя менше ніж 16x16 пікселів. Для камер відеоспостереження на великій відстані:

  • Image tiling: розділяємо зображення на перекриваючі плитки, виявляємо на кожній, об'єднуємо результати через NMS
  • SAHI (Slicing Aided Hyper Inference) — автоматична плитка з об'єднанням:
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 Затримка CPU Затримка GPU (T4)
SCRFD-500MF 90.5% 8 мс 1.5 мс
SCRFD-10GF 95.2% 45 мс 4 мс
RetinaFace-R50 94.9% 90 мс 7 мс
YOLOv8n (WiderFace) 93.1% 12 мс 2 мс

Виявлення облич у масках

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

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