|
import os.path as osp |
|
import tempfile |
|
|
|
import mmcv |
|
import pytest |
|
|
|
from mmdet.datasets import CocoDataset |
|
|
|
|
|
def _create_ids_error_coco_json(json_name): |
|
image = { |
|
'id': 0, |
|
'width': 640, |
|
'height': 640, |
|
'file_name': 'fake_name.jpg', |
|
} |
|
|
|
annotation_1 = { |
|
'id': 1, |
|
'image_id': 0, |
|
'category_id': 0, |
|
'area': 400, |
|
'bbox': [50, 60, 20, 20], |
|
'iscrowd': 0, |
|
} |
|
|
|
annotation_2 = { |
|
'id': 1, |
|
'image_id': 0, |
|
'category_id': 0, |
|
'area': 900, |
|
'bbox': [100, 120, 30, 30], |
|
'iscrowd': 0, |
|
} |
|
|
|
categories = [{ |
|
'id': 0, |
|
'name': 'car', |
|
'supercategory': 'car', |
|
}] |
|
|
|
fake_json = { |
|
'images': [image], |
|
'annotations': [annotation_1, annotation_2], |
|
'categories': categories |
|
} |
|
mmcv.dump(fake_json, json_name) |
|
|
|
|
|
def test_coco_annotation_ids_unique(): |
|
tmp_dir = tempfile.TemporaryDirectory() |
|
fake_json_file = osp.join(tmp_dir.name, 'fake_data.json') |
|
_create_ids_error_coco_json(fake_json_file) |
|
|
|
|
|
with pytest.raises(AssertionError): |
|
CocoDataset(ann_file=fake_json_file, classes=('car', ), pipeline=[]) |
|
|