Computer Vision: Детекція, Сегментація, OCR та Відеоаналітика
На виробництві стоїть камера, контролює якість продукції. Модель навчена на 10 тисячах розміченних зображень, точність на тесті — mAP 0.84. Запускають у production — і в першу ж тиждень пропускають 30% дефектів. Виявляється, освітлення на лінії змінюється по змінах, і distribution shift вбиває метрики. Це класична історія з Computer Vision у промисловості.
Детекція Об'єктів: YOLO, RT-DETR та Все Між Ними
YOLO — стандарт для задач real-time детекції. YOLOv8 та YOLOv11 від Ultralytics — найчастіше використовувані версії у production: простий API, активна спільнота, гарна документація, вбудована валідація та експорт в ONNX/TensorRT.
Для задач з високими вимогами до точності та коли latency менш критична — RT-DETR (Real-Time DEtection TRansformer). Transformer-базована архітектура без NMS дає краще mAP на COCO при порівнянній швидкості з YOLOv8l.
Типова помилка при тренуванні детектора. Датасет 8000 зображень, 3 класи, fine-tune YOLOv8m — F1 0.73 на валідації. Дивимося confusion matrix: один клас майже ніколи не детектується. Причина: дисбаланс 1:23 на користь двох інших класів. Рішення: oversampling редкого класу, focal loss замість BCELoss для objectness, augmentації (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 — працює з відео, підтримує трекинг об'єктів через кадри. Для задач "виділи об'єкт по промпту (точка, bbox)" SAM — кращий вибір з коробки.
Для production instance segmentation без інтерактивного промпту — Mask R-CNN або YOLOv8-seg. YOLOv8-seg учиться як звичайний детектор з додатковими масками, зручний у тих же pipeline'ах.
Семантична сегментація (кожен пікель — клас) — 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-tune на 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 для точної локалізації лиця та keypoints. MTCNN — старіше, але надійне рішення.
Embedding. ArcFace (InsightFace) — state-of-the-art для face recognition embeddings. Моделі iresnet50/iresnet100 претренировані на MS1MV3 (5M тотожностей). Embedding-вектор 512 float32, порівняння по cosine similarity.
Threshold tuning. Поріг рішення — критичний параметр. При threshold 0.6 (cosine) типовий FPR на LFW — 0.001, TPR — 0.985. У production поріг потрібно калібрувати під реальний 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 у production мониримо: розподіл 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.







