时间:2023.5.28
1. 背景
coco2017数据集太大,调试代码的时候,读入完整数据集太慢,外加服务器的cpu和内存特别古老,容易死机。所以,从coco2017数据集中提取少量图片,来充当整个coco2017数据集,方便debug。代码全部debug完毕后,再用完整数据集跑模型。
当然,电脑硬件设备好的话,就不会有这些问题了。
2. 目的
从coco2017数据集中提取少量图片,来充当整个coco2017数据集,方便debug。
3.代码
import json
json_file='/root/instances_train2017.json' # train or val 集标签路径
# json_file='/root/instances_val2017.json' # train or val 集标签路径
num = 2 # 提取2张图片
data=json.load(open(json_file,'r'))
data_2={}
data_2['info']=data['info']
data_2['licenses']=data['licenses']
data_2['images'] = [data['images'][i] for i in range(num)]
data_2['categories']=data['categories']
annotation=[]
imgID = [] # 通过imgID,找到要提取的所有对象
for i in range(num):
imgID.append(data_2['images'][i]['id'])
for ann in data['annotations']:
if ann['image_id'] in imgID:
annotation.append(ann)
data_2['annotations']=annotation
json.dump(data_2,open(f'/root/only_two_coco2017/instances_train2017.json','w'),indent=4) # indent=4 更加美观显示
# json.dump(data_2,open(f'/root/only_two_coco2017/instances_val2017.json','w'),indent=4) # indent=4 更加美观显示
4.coco2017数据集文件路径结构
|coco2017
|annotations
|instances_train2017.json
|instances_val2017.json
|train2017
|000000391895.jpg
|************.jpg
|val2017
|000000397133.jpg
|************.jpg