supervision 라이브러리를 이용하니 단 몇 줄로 split이 가능해서 매우 편리하다.
https://roboflow.com/split-datasets/coco-json
https://supervision.roboflow.com/datasets/
import supervision as sv
ds = sv.DetectionDataset.from_coco(
images_directory_path=f"data_before/data_name/images",
annotations_path=f"data_before/data_name/annotations/instances_default.json",
)
train_ds, test_ds = ds.split(split_ratio=0.9,
random_state=42, shuffle=True)
print(len(train_ds), len(test_ds))
# (900, 100)
이렇게 from_coco
메소드로 coco format을 불러와서 split
으로 자른 다음 as_coco
메소드를 사용하여 coco format으로 다시 저장이 가능하다.
sv.DetectionDataset.as_coco(
train_ds,
images_directory_path=f"data_after/data_name/train/images",
annotations_path=f"data_after/data_name/train/annotations/instances_default.json",
)
sv.DetectionDataset.as_coco(
test_ds,
images_directory_path=f"data_after/data_name/test/images",
annotations_path=f"data_after/data_name/test/annotations/instances_default.json",
)