| | import json |
| | import numpy as np |
| |
|
| | from icecream import ic, install |
| | install() |
| | ic.configureOutput(includeContext=True, contextAbsPath=True) |
| |
|
| | def load_coco_json(json_path): |
| | with open(json_path, 'r') as f: |
| | data = json.load(f) |
| | return data |
| |
|
| | |
| |
|
| | def split_train_val(data, val_ratio=0.1): |
| | img_ids = [img['id'] for img in data['images']] |
| | img_ids = np.array(img_ids) |
| | np.random.shuffle(img_ids) |
| | val_num = int(len(img_ids) * val_ratio) |
| | val_ids = img_ids[:val_num] |
| | train_ids = img_ids[val_num:] |
| | train_data = {'info': data['info'], 'licenses': data['licenses'], 'images': [], 'annotations': [], 'categories': data['categories']} |
| | val_data = {'info': data['info'], 'licenses': data['licenses'], 'images': [], 'annotations': [], 'categories': data['categories']} |
| | for img in data['images']: |
| | if img['id'] in train_ids: |
| | train_data['images'].append(img) |
| | else: |
| | val_data['images'].append(img) |
| | for ann in data['annotations']: |
| | if ann['image_id'] in train_ids: |
| | train_data['annotations'].append(ann) |
| | else: |
| | val_data['annotations'].append(ann) |
| | return train_data, val_data |
| |
|
| | data = load_coco_json('/root/autodl-tmp/dora_dataset/train/_annotations.coco.json') |
| | train_data, val_data = split_train_val(data) |
| | |
| | with open('/root/autodl-tmp/dora_dataset/train.json', 'w') as f: |
| | json.dump(train_data, f) |
| | with open('/root/autodl-tmp/dora_dataset/val.json', 'w') as f: |
| | json.dump(val_data, f) |
| |
|
| |
|