Computer Vision: детекция, сегментация, OCR и видеоаналитика
На производстве стоит камера, контролирует качество продукции. Модель обучена на 10 тысячах размеченных изображений, точность на тесте — mAP 0.84. Запускают в продакшен — и в первую же неделю пропускают 30% дефектов. Оказывается, освещение на линии меняется по сменам, и distribution shift убивает метрики. Это классическая история с Computer Vision в промышленности.
Детекция объектов: YOLO, RT-DETR и всё что между ними
YOLO — стандарт для задач real-time детекции. YOLOv8 и YOLOv11 от Ultralytics — наиболее используемые версии в производстве: простой API, активное сообщество, хорошая документация, встроенная валидация и экспорт в ONNX/TensorRT.
Для задач с высокими требованиями к точности и когда latency менее критична — RT-DETR (Real-Time DEtection TRansformer). Transformer-based архитектура без NMS даёт лучший mAP на COCO при сравнимой скорости с YOLOv8l.
Типичная ошибка при обучении детектора. Датасет 8000 изображений, 3 класса, fine-tune YOLOv8m — F1 0.73 на валидации. Смотрим confusion matrix: один класс почти никогда не детектируется. Причина: дисбаланс 1:23 в пользу двух других классов. Решение: oversampling редкого класса, focal loss вместо BCELoss для objectness, аугментации (Mosaic, MixUp отключить для редкого класса — они его «размывают»).
Transfer learning и fine-tuning. Предобученные на COCO или ImageNet веса — обязательная точка старта. Полное обучение с нуля требует миллионы примеров. Fine-tune на 500-2000 доменных изображениях при правильной аугментации даёт рабочую модель за 1-2 дня обучения на одной GPU.
Экспорт и оптимизация. Для edge deployment: экспорт в ONNX → TensorRT engine. YOLOv8n в TensorRT FP16 на Jetson AGX Orin даёт 150+ FPS при P99 latency < 8ms. На сервере (A10G): 700+ FPS для YOLOv8n в TensorRT INT8.
Сегментация: SAM, Mask R-CNN и instance segmentation
SAM (Segment Anything Model) от Meta изменил подход к сегментации. SAM 2 — работает с видео, поддерживает трекинг объектов через кадры. Для задач «выдели объект по prompt (точка, bbox)» SAM — лучший выбор из коробки.
Для production instance segmentation без интерактивного промпта — Mask R-CNN или YOLOv8-seg. YOLOv8-seg обучается как обычный детектор с дополнительными масками, удобен в тех же пайплайнах.
Семантическая сегментация (каждый пиксель — класс) — SegFormer, DeepLabV3+. SegFormer-B5 — хороший баланс точности и скорости для задач типа анализа спутниковых снимков или медицинской сегментации.
Кейс: сегментация клеток на микроскопических изображениях. Датасет 400 изображений с ручной разметкой. Обучение Mask R-CNN на ResNet-50 backbone дало IoU 0.61 — плохо. Проблема: объекты (клетки) перекрываются, стандартный NMS убивает перекрывающиеся предсказания. Решение: переход на cellpose (специализированная архитектура для биомедицинских задач) + soft-NMS. IoU вырос до 0.79.
OCR: когда Tesseract не справляется
Tesseract — отправная точка для простых задач: печатный текст, хорошее освещение, ровное расположение. Как только появляются рукописные элементы, нестандартные шрифты, перспективные искажения или многоколоночный макет — Tesseract деградирует быстро.
PaddleOCR — production-grade решение: обнаружение текстовых блоков + распознавание + структурный анализ. Работает из коробки для 80+ языков, включая русский. Поддерживает таблицы и документы со сложной структурой.
TrOCR (Microsoft) — трансформерный OCR с сильными результатами на рукописном тексте. Для русского рукописного текста нужен fine-tuning: базовая модель обучена преимущественно на латинице.
Document understanding. Для задач «извлеки данные из счёта / договора / паспорта» — LayoutLMv3 или Donut. Эти модели понимают layout документа, а не только текст. Интеграция через Hugging Face Transformers, fine-tuning на 200-500 размеченных документах.
Типичный pipeline для production OCR:
- Preprocessing: deskew (исправление наклона), denoising, binarization через OpenCV
- Обнаружение текстовых блоков: PaddleOCR detection или CRAFT
- Распознавание: PaddleOCR recognition или TrOCR
- Post-processing: нормализация, валидация через regex или LLM для структурированных полей
Для документов с фиксированной структурой (типовые формы) template matching + OCR точечно по координатам зачастую надёжнее и быстрее end-to-end решения.
Face Recognition: идентификация и верификация
Face recognition = detection + alignment + embedding + matching. Каждый этап важен.
Detection. RetinaFace или InsightFace для точной локализации лица и ключевых точек (landmarks). MTCNN — более старое, но надёжное решение.
Embedding. ArcFace (InsightFace) — state-of-the-art для face recognition embeddings. Модели iresnet50/iresnet100 предобучены на MS1MV3 (5M идентичностей). Эмбеддинг-вектор 512 float32, сравнение по cosine similarity.
Threshold tuning. Порог решения — критический параметр. При threshold 0.6 (cosine) типичный FPR на LFW benchmark — 0.001, TPR — 0.985. В production threshold нужно калибровать под реальный distribution: люди в масках, с изменившейся внешностью, в разных условиях освещения.
Liveness detection. В серьёзных production-системах нельзя обойтись без anti-spoofing: защита от фото, видео, 3D-маски. MiniFASNet — lightweight модель, работает на CPU. FaceX-Zoo содержит несколько предобученных liveness-детекторов.
Видеоаналитика
Видео — это последовательность кадров плюс временное измерение. Наивный подход — детектировать на каждом кадре — работает, но дорого.
Трекинг. ByteTrack и BoT-SORT — стандарт для multi-object tracking. Работают поверх любого детектора, добавляют persistent ID объектам между кадрами. Это даёт подсчёт объектов, треки движения, velocity.
Оптимизация. Не нужно обрабатывать каждый кадр. Для статичных сцен: детекция на каждом 5-10 кадре, между ними — трекер. Для детекции событий (человек вошёл в зону): background subtraction (OpenCV MOG2) как lightweight pre-filter перед нейросетевой детекцией.
Action Recognition. SlowFast, VideoMAE для классификации действий на видео. Тяжёлые модели, требуют значительных вычислений. Для production — ONNX export + TensorRT, либо оффлайн обработка.
Деплой CV-моделей
Онлайн инференс. Triton Inference Server (NVIDIA) — production-стандарт для serving CV-моделей. Поддерживает TensorRT, ONNX, PyTorch, dynamic batching, multiple instances. REST и gRPC API.
Edge deployment. ONNX Runtime на ARM/x86 CPU. TensorFlow Lite для мобильных устройств. OpenVINO для Intel CPU/GPU/VPU — часто даёт 2-3x прирост скорости на Intel железе по сравнению с ONNX Runtime.
Мониторинг качества. Для CV в продакшене мониторим: распределение prediction confidence, доля low-confidence предсказаний (индикатор OOD-данных), дрейф входных изображений через feature distribution (embeddings из backbone). Падение средней confidence с 0.87 до 0.71 за неделю — ранний сигнал о distribution shift.
Сроки и этапы
Прототип детектора на существующих данных — 1-2 недели. Production-система с оптимизацией под целевое железо — 4-8 недель. Полный цикл включая разметку данных (1000-5000 изображений) — 2-4 месяца. Стоимость зависит от объёма датасета, целевой платформы и требований к точности/latency.







