You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
Markdown
59 lines
2.1 KiB
Markdown
# Utility for converting CVAT XML annotation file to MS COCO json format
|
|
|
|
## Description
|
|
|
|
This utility gets annotation obtained from CVAT and converts to annotation in COCO representation. Input annotation must contain segmentation because bounding boxes of objects are calculated from its segments.
|
|
|
|
## Installation
|
|
|
|
Install necessary packages and create a virtual environment.
|
|
|
|
```bash
|
|
$ sudo apt-get update
|
|
$ sudo apt-get install -y --no-install-recommends python3-pip python3-venv python3-dev python3-tk libgtk-3-dev gcc
|
|
```
|
|
|
|
```
|
|
$ python3 -m venv .env
|
|
$ . .env/bin/activate
|
|
$ cat ../requirements.txt requirements.txt | xargs -n 1 -L 1 pip install
|
|
```
|
|
|
|
## Usage
|
|
|
|
Run the script inside the virtual environment.
|
|
|
|
```bash
|
|
python converter.py --cvat-xml </path/to/cvat/annotation.xml> --output </path/to/output/coco/annotation.json> --image-dir </path/to/directory/with/images> --labels </path/to/file/with/labels.txt> --draw </path/to/save/directory> --draw_labels --use_background_label
|
|
```
|
|
|
|
Please run `python converter.py --help` for more details.
|
|
|
|
#### Labels
|
|
If '--labels' argument is used, the script gets names of labels from a file. If file with labels is not defined, the script parses input annotation and find field `labels` to find which labels are presented. File with labels should include labels in one string separated by spaces or one label per string and also their combinations. For example:
|
|
```
|
|
label1 label2
|
|
label3
|
|
```
|
|
|
|
## Merge several annotations in COCO representation into one
|
|
|
|
Run the script `merge_annotations.py`
|
|
|
|
```bash
|
|
python merge_annotations.py --input-dir /path/to/directory/with/datasets --output /path/to/result/annotation.json --images-map /path/to/file/with/matched/datasets/and/images.txt --draw /path/to/directory/where/save/images
|
|
```
|
|
|
|
Please run `python merge_annotations.py --help` for more details.
|
|
|
|
Example of a file for `--images-map`:
|
|
|
|
```bash
|
|
{
|
|
"dataset1_part1.json": "images/dataset1/part1",
|
|
"dataset1_part2.json": "images/dataset1/part2",
|
|
"dataset2_part1.json": "images/dataset2/part1",
|
|
"dataset2_part2.json": "images/dataset2/part2"
|
|
}
|
|
```
|