Перейти к содержимому

Обзор наборов данных для обнаружения объектов

Для обучения надежной и точной модели обнаружения объектов требуется обширный набор данных. Это руководство знакомит с различными форматами наборов данных, совместимых с моделью Ultralytics YOLO , и рассказывает об их структуре, использовании и способах конвертации между различными форматами.

Поддерживаемые форматы наборов данных

Ultralytics YOLO Формат

Формат Ultralytics YOLO - это формат конфигурации набора данных, который позволяет тебе определить корневую директорию набора данных, относительные пути к директориям тренировочных/оценочных/тестовых изображений или *.txt файлы, содержащие пути к изображениям, и словарь имен классов. Вот пример:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

Этикетки для этого формата должны быть экспортированы в формат YOLO с одним *.txt файл на одно изображение. Если в изображении нет объектов, то не *.txt требуется файл. Сайт *.txt Файл должен быть отформатирован так, чтобы на каждый объект приходилось по одной строке в class x_center y_center width height Формат. Координаты коробки должны быть в нормализованный xywh формат (от 0 до 1). Если твои поля в пикселях, то ты должен разделить x_center и width по ширине изображения, и y_center и height по высоте изображения. Номера классов должны иметь нулевую индексацию (начинаться с 0).

Пример маркированного изображения

Файл с метками, соответствующий изображению выше, содержит 2 человека (класс 0) и ничья (класс 27):

Пример файла этикетки

При использовании формата Ultralytics YOLO организуй свои тренировочные и проверочные изображения и метки так, как показано в примере с набором данных COCO8 ниже.

Пример структуры каталогов наборов данных

Использование

Вот как ты можешь использовать эти форматы для обучения своей модели:

Пример

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640

Поддерживаемые наборы данных

Вот список поддерживаемых наборов данных и краткое описание каждого из них:

  • Argoverse: Набор данных, содержащий данные 3D-трекинга и прогнозирования движения в городской среде с богатыми аннотациями.
  • COCO: Common Objects in Context (COCO) - это масштабный набор данных по обнаружению, сегментации объектов и созданию надписей, включающий 80 категорий объектов.
  • LVIS: масштабный набор данных для обнаружения, сегментации и создания титров, включающий 1203 категории объектов.
  • COCO8: меньшее подмножество первых 4 изображений из COCO train и COCO val, подходящее для быстрых тестов.
  • Global Wheat 2020: Набор данных, содержащий изображения головок пшеницы для Глобального пшеничного вызова 2020 года.
  • Objects365: Высококачественный крупномасштабный набор данных для обнаружения объектов, включающий 365 категорий объектов и более 600 тысяч аннотированных изображений.
  • OpenImagesV7: обширный набор данных от Google с 1,7 млн обучающих и 42 тыс. проверочных изображений.
  • SKU-110K: Набор данных для обнаружения плотных объектов в условиях розничной торговли, содержащий более 11 тысяч изображений и 1,7 миллиона ограничивающих рамок.
  • VisDrone: Набор данных, содержащий данные по обнаружению объектов и отслеживанию многообъектного движения по снимкам, сделанным дронами, и включающий более 10 тысяч изображений и видеопоследовательностей.
  • VOC: Набор данных Pascal Visual Object Classes (VOC) для обнаружения и сегментации объектов, включающий 20 классов объектов и более 11 тысяч изображений.
  • xView: Набор данных для обнаружения объектов на снимках, сделанных сверху, с 60 категориями объектов и более чем 1 миллионом аннотированных объектов.
  • Roboflow 100: Разнообразный эталон обнаружения объектов со 100 наборами данных, охватывающими семь областей изображений, для всесторонней оценки моделей.
  • Опухоль головного мозга: Набор данных для обнаружения опухолей мозга включает в себя снимки МРТ или КТ с подробной информацией о наличии, расположении и характеристиках опухоли.
  • African-wildlife: Набор данных, содержащий изображения диких животных Африки, включая буйвола, слона, носорога и зебру.
  • Подпись: Набор данных, содержащий изображения различных документов с аннотированными подписями, поддерживающий исследования по проверке документов и выявлению мошенничества.

Добавление собственного набора данных

Если у тебя есть свой собственный набор данных и ты хочешь использовать его для обучения моделей обнаружения с форматом Ultralytics YOLO , убедись, что он соответствует формату, указанному выше в разделе "ФорматUltralytics YOLO ". Преобразуй свои аннотации в нужный формат и укажи пути, количество классов и названия классов в конфигурационном файле YAML.

Перенос или преобразование форматов этикеток

Формат набора данных COCO в формат YOLO

Ты можешь легко конвертировать метки из популярного формата набора данных COCO в формат YOLO с помощью следующего фрагмента кода:

Пример

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

Этот инструмент конвертации можно использовать для преобразования набора данных COCO или любого другого набора данных в формате COCO в формат Ultralytics YOLO .

Не забудь перепроверить, совместим ли набор данных, который ты хочешь использовать, с твоей моделью и соблюдает ли он необходимые соглашения о формате. Правильно отформатированные наборы данных очень важны для обучения успешных моделей обнаружения объектов.



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (9), RizwanMunawar (2), IvorZhu331 (1), Laughing-q (1)

Комментарии