Разработка системы детекции объектов на изображениях (Object Detection)
Детекция объектов — задача одновременной локализации (bounding box) и классификации объектов на изображении. Одна модель за один проход выдаёт: координаты рамки, класс объекта, confidence score. Применения: счётчик продуктов на полке, детекция дефектов на конвейере, распознавание автомобилей, поиск людей на видеозаписи.
Выбор детектора
YOLOv8/YOLO11 — оптимальный выбор для большинства задач. Ultralytics-имплементация с хорошей документацией, активной поддержкой, встроенным экспортом в TensorRT/ONNX.
RT-DETR (Real-Time Detection Transformer) — transformer-based детектор, лучшее качество при сопоставимой скорости с YOLOv8.
Grounding DINO — open-vocabulary детекция: находит объекты по текстовому описанию без дообучения. Полезен для прототипирования и задач с редкими категориями.
| Модель | [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 # number of classes
names: ['cat', 'dog', 'car', 'person', 'bicycle']
Аугментация для детекции
Детекция требует специфичной аугментации — трансформации должны корректно применяться к bounding boxes:
- Mosaic — склейка 4 изображений в одно, увеличивает разнообразие контекстов
- MixUp — смешивание двух изображений с весами
- Copy-Paste — вырезание объектов и вставка в новый контекст
- Random crop с сохранением объектов в кадре
- Albumentations:
HorizontalFlip,RandomBrightnessContrast,GaussNoise
Метрики детекции
- [email protected] — mean Average Precision при IoU threshold 0.5
- [email protected]:0.95 — более строгий: среднее mAP при IoU от 0.5 до 0.95 с шагом 0.05
- Precision / Recall при конкретном confidence threshold
- FPS / latency — для real-time систем
Выбор confidence threshold: ROC-like кривая precision-recall, выбор порога в зависимости от допустимого баланса precision/recall для конкретного применения.
NMS и post-processing
Non-Maximum Suppression удаляет дублирующие детекции. Параметры: IoU threshold (0.45–0.7), confidence threshold (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 недель |







