import os
import json
from jsonpath import jsonpath
data_root = '/root/autodl-tmp/DFC2023-baseline/track1/data/track1/'
train_annotation_file = os.path.join(data_root, 'annotations/roof_fine_train.json') # 大 json
val_annotation_file = os.path.join(data_root, 'annotations/roof_fine_myval.json') # 要保存的小 json 文件名
anno = json.load(open(train_annotation_file, 'r')) # 读取 json
val_ids = list(range(100)) # 从大 json 中提取出的图片 id 列表
val = dict()
val["categories"] = anno["categories"]
val["images"] = jsonpath(anno, f'$.images[?(@.id in {str(val_ids)})]') # 提取属于 val_ids 的图像
val["annotations"] = jsonpath(anno, f'$.annotations[?(@.image_id in {str(val_ids)})]') # 属于 val_ids 的所有标注
with open(val_annotation_file, 'w') as f: # 保存
json.dump(val, f)
从 coco 格式的 json 文件中提取一部分子集
最新推荐文章于 2024-09-06 10:49:39 发布
该代码段使用Python的os,json和jsonpath库处理JSON文件。它从一个大JSON文件中读取训练数据的标注,然后根据给定的图像ID列表(val_ids)筛选出对应的图像和注解信息,将这些信息保存到新的小JSON文件中作为验证集。
摘要由CSDN通过智能技术生成