Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add tags support for VOC #1201

Merged
merged 3 commits into from
Mar 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cvat/apps/annotation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ It may take some time.
```bash
cat train.txt | while read p; do echo ${p%/*/*}/labels/${${p##*/}%%.*}.txt; done | zip labels.zip -j -@ obj.names
```
1. Click `Upload annotation` button, choose `YOLO ZIP 1.0` and select the *.zip file with labels from previous step.
1. Click `Upload annotation` button, choose `YOLO ZIP 1.1` and select the *.zip file with labels from previous step.
It may take some time.

### [MS COCO Object Detection](http://cocodataset.org/#format-data)
Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/annotation/pascal_voc.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def dump(file_object, annotations):
extractor = CvatAnnotationsExtractor('', annotations)
extractor = extractor.transform(id_from_image)
extractor = Dataset.from_extractors(extractor) # apply lazy transforms
converter = env.make_converter('voc_detection')
converter = env.make_converter('voc')
with TemporaryDirectory() as temp_dir:
converter(extractor, save_dir=temp_dir)
make_zip_archive(temp_dir, file_object)
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/bindings.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ def import_dm_annotations(dm_dataset, cvat_task_anno):
for n, v in ann.attributes.items()],
))
elif ann.type == datumaro.AnnotationType.label:
cvat_task_anno.add_shape(cvat_task_anno.Tag(
cvat_task_anno.add_tag(cvat_task_anno.Tag(
frame=frame_number,
label=label_cat.items[ann.label].name,
group=group_map.get(ann.group, 0),
Expand Down
8 changes: 4 additions & 4 deletions cvat/apps/documentation/user_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,8 @@ Go to the [Django administration panel](http://localhost:8080/admin). There you
is highlighted if a task has the interpolation mode.
- [CVAT XML 1.1 for images](/cvat/apps/documentation/xml_format.md#annotation)
is highlighted if a task has the annotation mode.
- [PASCAL VOC ZIP 1.0](http://host.robots.ox.ac.uk/pascal/VOC/)
- [YOLO ZIP 1.0](https://pjreddie.com/darknet/yolo/)
- [PASCAL VOC ZIP 1.1](http://host.robots.ox.ac.uk/pascal/VOC/)
- [YOLO ZIP 1.1](https://pjreddie.com/darknet/yolo/)
- [COCO JSON 1.0](http://cocodataset.org/#format-data)
- ``MASK ZIP 1.0`` — archive contains a mask of each frame in the png format and a text file
with the value of each color.
Expand Down Expand Up @@ -523,8 +523,8 @@ Usage examples:

![](static/documentation/images/image029.jpg "Example XML format")

- [PASCAL VOC ZIP 1.0](http://host.robots.ox.ac.uk/pascal/VOC/)
- [YOLO ZIP 1.0](https://pjreddie.com/darknet/yolo/)
- [PASCAL VOC ZIP 1.1](http://host.robots.ox.ac.uk/pascal/VOC/)
- [YOLO ZIP 1.1](https://pjreddie.com/darknet/yolo/)
- [COCO JSON 1.0](http://cocodataset.org/#format-data)
- ``MASK ZIP 1.0`` — archive contains a mask of each frame in the png format and a text file with
the value of each color
Expand Down
13 changes: 8 additions & 5 deletions cvat/apps/engine/tests/test_rest_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -2660,13 +2660,13 @@ def _get_initial_annotation(annotation_format):
tags_wo_attrs = [{
"frame": 2,
"label_id": task["labels"][1]["id"],
"group": 3,
"group": 0,
"attributes": []
}]
tags_with_attrs = [{
"frame": 1,
"label_id": task["labels"][0]["id"],
"group": 0,
"group": 3,
"attributes": [
{
"spec_id": task["labels"][0]["attributes"][0]["id"],
Expand All @@ -2693,10 +2693,13 @@ def _get_initial_annotation(annotation_format):
+ polygon_shapes_wo_attrs + polygon_shapes_with_attrs
annotations["tags"] = tags_with_attrs + tags_wo_attrs

elif annotation_format == "PASCAL VOC ZIP 1.1" or \
annotation_format == "YOLO ZIP 1.1" or \
elif annotation_format == "PASCAL VOC ZIP 1.1":
annotations["shapes"] = rectangle_shapes_wo_attrs
annotations["tags"] = tags_wo_attrs

elif annotation_format == "YOLO ZIP 1.1" or \
annotation_format == "TFRecord ZIP 1.0":
annotations["shapes"] = rectangle_shapes_wo_attrs
annotations["shapes"] = rectangle_shapes_wo_attrs

elif annotation_format == "COCO JSON 1.0":
annotations["shapes"] = polygon_shapes_wo_attrs
Expand Down
4 changes: 2 additions & 2 deletions datumaro/datumaro/plugins/voc_format/converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ def __init__(self, extractor, save_dir,
elif isinstance(tasks, VocTask):
tasks = [tasks]
else:
for t in tasks:
assert t in VocTask
tasks = [t if t in VocTask else VocTask[t] for t in tasks]

self._tasks = tasks

self._extractor = extractor
Expand Down