Полный цикл обучения моделей машинного зрения
Обучение нейросети для производства - это не запуск 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-сопровождение. Результат - модель, которая работает на вашей линии, а не в ноутбуке.
