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

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка системы детекции лиц (Face Detection)
Простая
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

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

Детекция лиц — первый этап почти любого face-пайплайна. Задача: найти все лица на изображении и вернуть bounding boxes с confidence score. Звучит просто, но реальные условия добавляют сложности: маленькие лица на расстоянии, профильные ракурсы, частичные перекрытия, плохое освещение, маски.

Современные детекторы лиц

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

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:
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

Детекция лиц в масках

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

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