【目标检测】小脚本:数据集划分

举报
zstar 发表于 2022/08/06 01:58:46 2022/08/06
【摘要】 需求内容 之前写了一篇【目标检测】YOLOv5跑通VOC2007数据集里面写了个脚本是将xml标注格式转换称Yolo格式,同时读取数据集划分。 在训练自己的数据时,我发现没有现成的数据集划分文件,于是就...

需求内容

之前写了一篇【目标检测】YOLOv5跑通VOC2007数据集里面写了个脚本是将xml标注格式转换称Yolo格式,同时读取数据集划分。
在训练自己的数据时,我发现没有现成的数据集划分文件,于是就写了这个小脚本来读取文件名,并划分成train/val/test三个文件。

需求实现

完整脚本:

import os
import random

img_path = './image/'
img_list = os.listdir(img_path)
train_ratio = 0.8  # 训练集比例
val_ratio = 0.1  # 验证集比例
shuffle = True  # 是否随机划分
def data_split(full_list, train_ratio, val_ratio, shuffle=True):
    n_total = len(full_list)
    train_set_num = int(n_total * train_ratio)
    val_set_num = int(n_total * val_ratio)
    if shuffle:
        random.shuffle(full_list)
    train_set = full_list[:train_set_num]
    val_set = full_list[train_set_num:(train_set_num + val_set_num)]
    test_set = full_list[(train_set_num + val_set_num):]
    return train_set, val_set, test_set
if __name__ == '__main__':
    train_set, val_set, test_set = data_split(img_list, train_ratio, val_ratio, shuffle=True)

    with open('train.txt', 'w') as f:
        for img_name in train_set:
            f.write(img_name.split('.png')[0] + '\n')

    with open('val.txt', 'w') as f:
        for img_name in val_set:
            f.write(img_name.split('.png')[0] + '\n')

    with open('test.txt', 'w') as f:
        for img_name in test_set:
            f.write(img_name.split('.png')[0] + '\n')

  
 

读取图片数据:
在这里插入图片描述
划分后的数据:
在这里插入图片描述

文章来源: zstar.blog.csdn.net,作者:zstar-_,版权归原作者所有,如需转载,请联系作者。

原文链接:zstar.blog.csdn.net/article/details/125831710

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。