Code Monkey home page Code Monkey logo

coco_to_yolov8's Introduction

COCO to YOLO converter for instance segmentation (YOLOv8-seg) and oriented bounding box detection (YOLOv8-obb)

The repository allows converting annotations in COCO format to a format compatible with training YOLOv8-seg models (instance segmentation) and YOLOv8-obb models (rotated bounding box detection).

Key usage of the repository -> handling annotated polygons (or rotated rectangles in the case of YOLOv8-obb) exported from the CVAT application in COCO 1.0 format (with the save images mode set to True).

If you use it without CVAT, make sure that your COCO dataset folder has the following structure:

COCO_dataset/
|-- annotations/
|   |-- instances_train.json
|   |-- instances_val.json
|-- images/
|   |-- image1.jpg
|   |-- image2.jpg
|   |-- ...

PS: For the instance segmentation task, Ultralytics YOLOv9-seg and YOLOv5-seg models are also supported (since they have similar annotation format to v8).

Installation:

git clone https://github.com/Koldim2001/COCO_to_YOLOv8.git

cd COCO_to_YOLOv8

pip install -r requirements.txt

How to run the code:

Classic approach with pre-defined train/val/test split from CVAT (Tasks have a defined Subset in CVAT):

python coco_to_yolo.py --coco_dataset="dataset_folder"

Option with automatic split into train and val:

python coco_to_yolo.py --coco_dataset="dataset_folder" --autosplit=True --percent_val=30

List of parameters with explanations that can be passed to the program before running it in the command line interface (CLI):

  --coco_dataset TEXT   Folder with COCO 1.0 format dataset (can be exported
                        from CVAT). Default is "COCO_dataset"

  --yolo_dataset TEXT   Folder with the resulting YOLOv8 format dataset.
                        Default is "YOLO_dataset"

  --print_info BOOLEAN  Enable/Disable processing log output mode. Default is
                        disabled

  --autosplit BOOLEAN   Enable/Disable automatic split into train/val. Default
                        is disabled (uses the CVAT annotations)

  --percent_val FLOAT   Percentage of data for validation when using
                        autosplit=True. Default is 25%

  --help                Show existing options for parsing arguments in the CLI





Russian Version of README:

Репозиторий позволяет преобразовать разметку формата COCO в формат, поддерживаемый для обучения моделей YOLOv8-seg (инстанс сегментация) и YOLOv8-obb (детекция повернутых боксов).

Ключевое применение репозитория -> работа с выгруженной разметкой полигонов (или повернутых прямоугольников в случае с YOLOv8-obb) из приложения CVAT в формате COCO 1.0 (с указанием режима save images = True).

Если же используете без CVAT, то убедитесь перед запуском, что ваша папка с COCO датасетом имеет такую структуру:

COCO_dataset/
|-- annotations/
|   |-- instances_train.json
|   |-- instances_val.json
|-- images/
|   |-- image1.jpg
|   |-- image2.jpg
|   |-- ...

PS: Для задчи инстанс сегментации имеется также поддержка моделей Ultralytics YOLOv9-seg и YOLOv5-seg (так как у них аналогичная разметка с версией v8)

Примеры использования:

Пример использования репозитория для задачи YOLOv8-seg представлен в видео на YouTube - ССЫЛКА
Пример использования репозитория для задачи YOLOv8-obb представлен в видео на YouTube - ССЫЛКА

Установка:

git clone https://github.com/Koldim2001/COCO_to_YOLOv8.git

cd COCO_to_YOLOv8

pip install -r requirements.txt

Как запускать код:

Классический подход c предустановленным в CVAT разделением на train/val/test (у тасок определен Subset):

python coco_to_yolo.py --coco_dataset="dataset_folder" --lang_ru=True

Вариант с авторазделением на train и val:

python coco_to_yolo.py --coco_dataset="dataset_folder" --autosplit=True --percent_val=30 --lang_ru=True

Список параметров с пояснениями, которые можно передать на вход программы перед ее запуском в cli:

  --coco_dataset TEXT   Папка с датасетом формата COCO 1.0 (можно выгрузить из
                        CVAT). По умолчанию "COCO_dataset"

  --yolo_dataset TEXT   Папка с итоговым датасетом формата YOLOv8. По
                        умолчанию "YOLO_dataset"

  --print_info BOOLEAN  Вкл/Выкл режима вывода логов обработки. По умолчанию
                        отключен

  --autosplit BOOLEAN   Вкл/Выкл режима автоматического разделения на
                        train/val. По умолчанию отключен (берет согласно
                        разметке CVAT)

  --percent_val FLOAT   Процент данных на валидацию при выборе режима
                        autosplit=True. По умолчанию 25%

  --lang_ru BOOLEAN     Устанавливает русский язык комментариев, если выбрано 
                        значение True. По умолчанию английский 

  --help                Покажет существующие варианты парсинга аргументов в CLI

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.