前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【目标检测】小脚本:数据集划分

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

作者头像
zstar
发布2022-09-08 11:35:22
5750
发布2022-09-08 11:35:22
举报
文章被收录于专栏:往期博文

需求内容

之前写了一篇【目标检测】YOLOv5跑通VOC2007数据集里面写了个脚本是将xml标注格式转换称Yolo格式,同时读取数据集划分。

在训练自己的数据时,我发现没有现成的数据集划分文件,于是就写了这个小脚本来读取文件名,并划分成train/val/test三个文件。

需求实现

完整脚本:

代码语言:javascript
复制
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')

读取图片数据:

划分后的数据:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求内容
  • 需求实现
相关产品与服务
图像识别
腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档