Розробка системи детекції об'єктів на зображеннях
Детекція об'єктів — завдання одночасної локалізації (bounding box) і класифікації об'єктів на зображенні. Одна модель за один прохід видає: координати рамки, клас об'єкту, оцінку впевненості. Застосування включають лічильник продуктів на полиці, детекцію дефектів на конвеєрі, розпізнавання автомобілів, пошук людей на відеозаписі.
Вибір детектора
YOLOv8/YOLO11 — оптимальний вибір для більшості завдань. Реалізація Ultralytics з хорошою документацією, активною підтримкою та вбудованим експортом у TensorRT/ONNX.
RT-DETR (Real-Time Detection Transformer) — трансформер-базований детектор, краща якість при порівнянній швидкості з YOLOv8.
Grounding DINO — детекція з відкритим словником: знаходить об'єкти за текстовим описом без перенавчання. Корисна для прототипування та завдань з рідкісними категоріями.
| Модель | [email protected] COCO | FPS (T4) | Параметри |
|---|---|---|---|
| YOLOv8n | 52.9 | 320 | 3.2M |
| YOLOv8l | 64.9 | 87 | 43.7M |
| YOLO11m | 64.0 | 183 | 20.1M |
| RT-DETR-L | 65.6 | 74 | 32M |
Fine-tuning для користувацьких класів
from ultralytics import YOLO
# Завантажуємо попередньо навчену модель
model = YOLO('yolov8l.pt')
# Навчаємо на користувацькому датасеті
results = model.train(
data='dataset.yaml', # шлях до конфігу датасету
epochs=100,
imgsz=640,
batch=16,
optimizer='AdamW',
lr0=0.001,
lrf=0.01, # final LR = lr0 * lrf
weight_decay=0.0005,
augment=True,
degrees=10.0, # rotation augmentation
mosaic=1.0, # mosaic augmentation
device=0
)
Структура dataset.yaml:
path: /data/myproject
train: images/train
val: images/val
test: images/test
nc: 5 # кількість класів
names: ['cat', 'dog', 'car', 'person', 'bicycle']
Аугментація для детекції
Детекція вимагає специфічної аугментації — трансформації мають коректно застосовуватися до bounding boxes:
- Mosaic — склеювання 4 зображень в одне, збільшує різноманітність контекстів
- MixUp — змішування двох зображень з вагами
- Copy-Paste — вирізання об'єктів і вставлення в новий контекст
- Random crop з збереженням об'єктів у кадрі
- Albumentations:
HorizontalFlip,RandomBrightnessContrast,GaussNoise
Метрики детекції
- [email protected] — середня Average Precision при IoU пороговому 0.5
- [email protected]:0.95 — суворіша: середнє mAP при IoU від 0.5 до 0.95 з кроком 0.05
- Precision / Recall при конкретному порозі впевненості
- FPS / latency — для систем реального часу
Вибір порога впевненості: ROC-подібна крива precision-recall, вибір порога залежить від допустимого балансу precision/recall для конкретного застосування.
NMS та постобробка
Non-Maximum Suppression видаляє дублюючі детекції. Параметри: Ioріг IoU (0.45–0.7), поріг впевненості (0.25–0.5). Для щільно розташованих об'єктів — Soft-NMS або Class-Agnostic NMS.
Розгортання
TensorRT engine для NVIDIA GPU: експорт з Ultralytics однією командою. ONNX для CPU розгортання. Для Raspberry Pi / Jetson: YOLO11n у TFLite / ONNX.
| Завдання | Хронологія |
|---|---|
| Детекція 1–5 класів, достатньо даних | 1–3 тижні |
| Детекція 20+ класів, збір даних | 4–7 тижнів |
| Детекція в складних умовах (ніч, туман) | 6–10 тижнів |







