Якісна розмітка CV-датасетів з прелейблингом
Погана розмітка — головна причина низької точності моделей Computer Vision. Один клієнт втратив 12% mAP через різницю в IoU між аннотаторами в 0.15. Це обійшлося в 90 000 гривень і два тижні донавчання. Ми займаємося розміткою CV-даних понад 5 років і виконали 50+ проєктів — від 100 до 100 000 зображень. Наші замовники економлять в середньому 60–75% часу порівняно з розміткою з нуля, що в грошовому вираженні становить десятки тисяч гривень на проєкт.
Проблеми, які ми вирішуємо
Узгодженість аннотаторів — ключовий фактор. IoU 0.65 між двома розмітниками на дрібних об'єктах — не рідкість. Якщо два bbox одного об'єкта розходяться на 20%, модель отримує суперечливий сигнал. Інша проблема — edge cases: часткова occlusion, низька роздільна здатність, нестандартні ракурси. Ми розробляємо онтологію класів і детальні інструкції, щоб мінімізувати variance. Для контролю якості використовуємо Inter-rater reliability — стандарт у медичній та промисловій розмітці.
Пропуск дефекту через неякісну розмітку може призвести до збитків у 200 000 гривень на донавчанні моделі. Тому ми впроваджуємо багаторівневий QA.
Порівняння інструментів розмітки — розмітка cv датасетів
| Інструмент | Ключова особливість | Коли обрати |
|---|---|---|
| CVAT | Self-hosted, REST API, командна робота | Крупні проєкти з розгорнутим QA-пайплайном |
| Label Studio | Мультимодальна розмітка, conditional logic | Складні онтології, змішані дані |
| Roboflow | Версіонування, вбудована аугментація | Швидкий старт, прототипування |
CVAT обробляє великі датасети в 3 рази швидше за Label Studio завдяки вбудованій черзі завдань. А авторозмітка YOLO працює в 5 разів швидше за ручну розмітку. Label Studio виграє в гнучкості розмітки різнорідних сутностей.
Покроковий процес розмітки
- Аналіз задачі – формалізація онтології класів, визначення складності.
- Підготовка інструменту – налаштування CVAT або Label Studio, завантаження зображень, при необхідності розгортання GPU-сервера для авторозмітки.
- Пілотна розмітка – 50–100 зображень для калібрування інструкцій.
- Основна розмітка – паралельна робота аннотаторів з безперервним QA.
- Експорт та верифікація – вивантаження в потрібному форматі, фінальний звіт з якості.
Як ми контролюємо узгодженість аннотаторів?
Ми використовуємо inter-annotator agreement з цільовим mean IoU > 0.80. При відхиленні повертаємо на дорозмітку. Senior-спеціаліст перевіряє кожен десятий об'єкт. Для великих проєктів впроваджуємо continuous QA.
import numpy as np from itertools import combinations def calculate_iou(box1: list, box2: list) -> float: inter_x1 = max(box1[0], box2[0]) inter_y1 = max(box1[1], box2[1]) inter_x2 = min(box1[2], box2[2]) inter_y2 = min(box1[3], box2[3]) if inter_x2 < inter_x1 or inter_y2 < inter_y1: return 0.0 inter_area = (inter_x2 - inter_x1) * (inter_y2 - inter_y1) area1 = (box1[2]-box1[0]) * (box1[3]-box1[1]) area2 = (box2[2]-box2[0]) * (box2[3]-box2[1]) return inter_area / (area1 + area2 - inter_area) def inter_annotator_iou(annotations_by_annotator: dict) -> dict: annotators = list(annotations_by_annotator.keys()) results = {} for a1, a2 in combinations(annotators, 2): boxes1 = annotations_by_annotator[a1] boxes2 = annotations_by_annotator[a2] ious = [] for b1 in boxes1: best_iou = max( (calculate_iou(b1, b2) for b2 in boxes2), default=0.0 ) if best_iou > 0.1: ious.append(best_iou) results[f'{a1}_vs_{a2}'] = { 'mean_iou': np.mean(ious) if ious else 0.0, 'n_matched': len(ious) } return results Auto-labeling для прискорення розмітки
Попередня авторозмітка моделлю + ручна коректура — стандарт для великих обсягів. Економія часу 60–75% при правильному виборі моделі. Один клієнт заощадив 3 місяці роботи двох спеціалістів, впровадивши наш пайплайн авторозмітки, що в грошовому еквіваленті склало 180 000 гривень. Загалом економія на проєкті може сягати 80 000 гривень.
from ultralytics import YOLO import json def auto_label_batch( image_paths: list[str], model_path: str = 'yolov8l-world.pt', conf_threshold: float = 0.5, output_format: str = 'yolo' ) -> dict: model = YOLO(model_path) results = {} for img_path in image_paths: preds = model.predict( img_path, conf=conf_threshold, verbose=False )[0] confident_boxes = [] needs_review_boxes = [] for box in preds.boxes: conf = float(box.conf) entry = { 'bbox': box.xyxy[0].tolist(), 'class_id': int(box.cls), 'confidence': conf } if conf > 0.7: confident_boxes.append(entry) else: needs_review_boxes.append(entry) results[img_path] = { 'auto_labeled': confident_boxes, 'needs_review': needs_review_boxes, 'review_required': len(needs_review_boxes) > 0 } return results Формати експорту
| Формат | Застосування | Інструмент |
|---|---|---|
| YOLO TXT | YOLOv5/v8/v11 навчання | Ultralytics |
| COCO JSON | Detectron2, MMDetection | torchvision |
| Pascal VOC XML | TensorFlow Object Detection API | TF OD API |
| LabelMe JSON | Сегментація, polygons | LabelMe |
| CVAT XML | Імпорт/експорт CVAT | cvat-sdk |
Терміни та обсяги
| Тип розмітки | Швидкість (людина/год) | Відносна вартість |
|---|---|---|
| Bbox | 200–400 об'єктів | 1x |
| Polygon | 40–80 об'єктів | 4–6x |
| Semantic segmentation (маски сегментації) | 2–5 зображень | 15–20x |
| Keypoints | 50–100 персон | 3x |
| Обсяг датасету | Термін з QA |
|---|---|
| 1000 зображень, bbox | 1–2 тижні |
| 5000 зображень, bbox | 3–4 тижні |
| 2000 зображень, polygon | 3–5 тижнів |
Чому якість розмітки так важлива для Computer Vision?
Модель, навчена на зашумлених даних, дає хибні детекції або пропускає об'єкти. Наші замовники економлять тижні на донавчанні, отримуючи готовий датасет з гарантованою якістю. Ми беремо на себе онтологію класів, інструкції для аннотаторів, QA та експорт. Зв'яжіться, щоб обговорити ваш проєкт — ми підготуємо датасет з гарантією якості.
Що входить в роботу
- Аналіз задачі та розробка онтології класів
- Вибір інструменту та налаштування проєкту
- Пілотна розмітка для калібрування
- Основна розмітка з паралельним QA
- Експорт в потрібних форматах + звіт з якості
- Підтримка на етапі навчання моделі
Досвід нашої команди — 5+ років на ринку, 50+ успішних проєктів розмітки для Computer Vision. Ми гарантуємо узгодженість анотацій та дотримання термінів. Ми виконуємо розмітку під ключ: оцінимо ваш проєкт за 24 години. Напишіть нам для консультації — до 10 000 зображень за 2 тижні. Оцінимо проєкт безкоштовно.







