Полный цикл обучения моделей машинного зрения

Обучение нейросети для производства - это не запуск train.py и ожидание результатов. Это инженерный процесс, где 80% работы - данные, и только 20% - модель.

Шаг 1. Сбор данных с производства

Без реальных данных с вашей линии модель не сработает. Мы собираем:

  • Хорошие изделия: минимум 500-2000 изображений для каждого типа продукции.
  • Дефектные изделия: минимум 100-500 примеров на каждый класс дефекта. Для редких дефектов - от 20 примеров (анomaly detection).
  • Разные условия: разные партии, разное освещение, разная степень загрязнения, разные углы.
  • Метаданные: номер партии, смена, оператор, параметры линии.

Для anomaly detection (редкие дефекты, которые сложно собрать) подход другой: собираем только хорошие изделия (500-2000+) и обучаем модели PatchCore, EfficientAD или FastFlow. Эти модели учатся «нормальному» виду продукции и детектируют любые отклонения.

Шаг 2. Разметка данных

Разметка - самый трудозатратный этап. От качества разметки зависит 80% итоговой точности модели.

Типы разметки:

  • Bounding box (детекция): прямоугольная рамка вокруг дефекта. Для YOLO11, RT-DETR.
  • Polygon/Mask (сегментация): точный контур дефекта. Для YOLO11-seg, SAM 2, Mask2Former.
  • Класс (классификация): метка для всего изображения. Для YOLO11-cls, ResNet.

Контроль качества разметки:

  • Inter-annotator agreement (IAA): два разметчика размечают одни и те же изображения. Cohen's kappa > 0.8 - acceptable. Ниже - переписываем guidelines.
  • Экспертная проверка: выборка 10% размеченных изображений проверяется специалистом ОТК.
  • Gold standard: создаём эталонную выборку из 100-200 изображений с идеальной разметкой для финальной валидации.

Инструменты: Label Studio, CVAT, Roboflow. Каждый инструмент поддерживает экспорт в YOLO, COCO, Pascal VOC.

Шаг 3. Обучение и дообучение модели

Подбор архитектуры:

  • YOLO11 - универсальный выбор для детекции и сегментации дефектов. Быстрый, точный, хорошо оптимизируется в TensorRT.
  • RT-DETR - NMS-free пайплайн, хорош для сложных сценариев с перекрытиями.
  • PatchCore, EfficientAD, FastFlow - для anomaly detection при редких дефектах. Обучаются только на хороших изображениях.
  • ArcFace, AdaFace, MagFace - для распознавания лиц и людей.
  • RetinaFace - для детекции лиц.
  • PaddleOCR, TrOCR - для OCR и чтения маркировки.

Процесс дообучения (fine-tuning):

1. Берём pretrained-модель (например, YOLO11x с COCO).

2. Заменяем head (слой классификации) на нужное количество классов.

3. Дообучаем на вашем датасете с learning rate 1e-4 - 1e-5.

4. Data augmentation: поворот, масштаб, изменение яркости, blur, noise, color jitter.

5. Early stopping: останавливаем обучение, когда validation loss перестаёт уменьшаться.

Балансировка датасета:

Если дефектов мало (1-5% от общего числа), модель будет учиться всегда говорить «хорошо». Решения:

  • Oversampling редких классов.
  • Weighted loss - больший вес за ошибки на редких классах.
  • Data augmentation редких классов (поворот, масштаб, noise).

Шаг 4. Валидация и тестирование

Метрики:

  • Precision: из всех объектов, которые модель определила как дефект, какая доля действительно дефект.
  • Recall: из всех реальных дефектов, какая доля была найдена моделью.
  • mAP@0.5:0.95: mean Average Precision - средняя точность при разных IoU-порогах. Золотой стандарт для детекции.
  • FP rate: количество ложных тревог за смену. Критично для производства: 10 FP/смена = оператор перестанет реагировать.
  • Confusion matrix: показывает, какие классы модель путает между собой.

Валидация на реальных данных:

20% датасета оставляем для финальной валидации. Эти данные не участвуют в обучении. Тестируем на реальных кадрах с линии, включая условия, которых не было в обучающей выборке.

Сравнение с ручным контролем ОТК:

Запускаем параллельно: модель и оператор контролируют одну линию. Сравниваем результаты. Если модель пропускает дефекты, которые видит оператор - добавляем эти примеры в датасет и переобучаем.

Шаг 5. Оптимизация TensorRT

Нативный PyTorch на GPU - хороший старт для разработки, но плохое решение для продакшена. TensorRT ускоряет инференс в 3-5 раз:

1. Экспортируем модель в ONNX.

2. Генерируем TensorRT-движок через trtexec с оптимизацией FP16 или int8.

3. Тестируем точность: квантизация int8 может снизить mAP на 0.5-2%. Если снижение критично - используем FP16.

4. Тестируем на целевом GPU: RTX 6000 Ada, Jetson Orin, H100.

Шаг 6. Развёртывание и MLOps

Развёртывание:

  • Triton Inference Server: REST и gRPC API для инференса. Мультимодельное развёртывание, динамический батчинг.
  • DeepStream: для мультикамерного стриминга RTSP.
  • Jetson: для edge-вычислений на линии.

MLOps:

  • MLflow: трекинг экспериментов, registry моделей, версионирование.
  • Prometheus + Grafana: мониторинг GPU, FPS, задержки инференса.
  • Мониторинг drift: отслеживаем деградацию модели при изменении условий производства.
  • CI/CD пайплайн: новый датасет -> переобучение -> валидация -> деплой.

Заключение

Обучение моделей машинного зрения для производства - это не магия, а инженерный процесс. 80% работы - данные: сбор, разметка, контроль качества. 20% - модель: подбор архитектуры, дообучение, оптимизация.

Мы не просто обучаем модель - мы создаём production-ready систему: датасет с вашего производства, валидация на реальных данных, TensorRT-оптимизация, MLOps-сопровождение. Результат - модель, которая работает на вашей линии, а не в ноутбуке.