用paddleX方法划分coco数据集train val test 已经后续图片处理脚本

今天在处理数据的时候遇到给coco数据集随机分成train,val,test的问题,在网上搜索后看见有博主使用paddleX方法划分。使用后发现存在一个问题:

使用该方法方法划分json时没有同时给image文件夹进行划分

因此我写了一个脚本根据上述方法产生的json文件对图片进行划分

import os
import json
from tqdm import tqdm
import argparse
import shutil

parser = argparse.ArgumentParser()
#这里根据自己的json文件位置,换成自己的就行
parser.add_argument('--origin_path', default='D:/1/yolov7-main/MyDataset/train/JPEGImages',type=str, help="input:image origin path")
parser.add_argument('--json_path1', default='D:/1/yolov7-main/MyDataset/train/annotations/val.json',type=str, help="input: coco format(json)")

parser.add_argument('--json_path2', default='D:/1/yolov7-main/MyDataset/train/annotations.json',type=str, help="input: coco format(json)")
parser.add_argument('--save_path', default='D:/1/yolov7-main/MyDataset/train/val', type=str, help="specify where to save the output dir of labels")
arg = parser.parse_args()

if __name__ == '__main__':
    json_file1 = arg.json_path1 # COCO Object Instance 类型的标注
    json_file2 = arg.json_path2
    save_path = arg.save_path  # 保存的路径
    origin_path=arg.origin_path

    data1 = json.load(open(json_file1, 'r'))
    data2 = json.load(open(json_file2, 'r'))
    if not os.path.exists(save_path):#如果没有该文件夹存在 创建
        os.makedirs(save_path)
    
    annos = data1["annotations"]
    images2 = data2["images"]
    for j in range(len(annos)):#循环并加上进度条
        img_id=annos[j]['image_id']
        f_name=images2[img_id-1]['file_name']
        if not os.path.exists(os.path.join(save_path, str(img_id)+'jpg')):
           shutil.copy(os.path.join(origin_path, f_name), os.path.join(save_path, str(img_id)+'.jpg'))
           print(j)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值