关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件

这篇具有很好参考价值的文章主要介绍了关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

在做图像分类任务的时候,数据格式是文件夹格式,相同文件夹下存放同一类型的类别

不少网上的数据,没有划分数据集,虽然代码简单,每次重新编写还是颇为麻烦,这里记录一下

如下,有的数据集这样摆放:

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件,# 关于 classification,分类,数据挖掘,人工智能

可以看出这是个三分类任务,不过没有划分测试集、验证集

代码存放位置:和数据集dataset 同一路径

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件,# 关于 classification,分类,数据挖掘,人工智能

2. 完整代码

如下:

import random
import os
import shutil
from tqdm import tqdm
import json


def split_data(root, test_rate, flag=True):
    # 待分类数据的当前目录
    classes_directory = [i for i in os.listdir(root) if os.path.isdir(os.path.join(root, i))]

    # 建立生成后的目录,方便拷贝
    for i in classes_directory:
        os.makedirs(os.path.join('./data/train', i))  # 训练集
        os.makedirs(os.path.join('./data/test', i))  # 测试集

    # 是否生成类别的 json 字典文件,默认生成
    if flag:
        class_indices = dict((k, v) for v, k in enumerate(classes_directory))
        json_str = json.dumps(dict((val, key) for key, val in class_indices.items()), indent=4)
        with open('class_indices.json', 'w') as json_file:
            json_file.write(json_str)

    # 遍历每个文件夹下的文件
    for cla in classes_directory:
        cla_path = os.path.join(root, cla)  # 每个文件夹的路径
        images_path = [os.path.join(root, cla, i) for i in os.listdir(cla_path)]

        # 按比例随机采样测试集样本
        test_split_path = random.sample(images_path, k=int(len(images_path) * test_rate))

        # 划分数据
        for i in tqdm(images_path, desc=cla):
            if i in test_split_path:
                shutil.copy(i, os.path.join('./data/test', cla))
            else:
                shutil.copy(i, os.path.join('./data/train', cla))


if __name__ == '__main__':
    rawDataSet = './dataset'  # 原始数据的路径

    if os.path.exists('./data'):  # 如果之前有,那么删除
        shutil.rmtree('./data')

    os.makedirs('./data/train')
    os.makedirs('./data/test')

    # 划分数据
    split_data(root=rawDataSet, test_rate=0.2)

运行代码过程:

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件,# 关于 classification,分类,数据挖掘,人工智能

运行结果:

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件,# 关于 classification,分类,数据挖掘,人工智能

生成的json文件:

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件,# 关于 classification,分类,数据挖掘,人工智能

3. 代码介绍

首先,rawDataSet 传入的是待划分的数据集根目录,这里会将之前划分的删掉,这样每次生成的结果不一样。训练集和测试集的比例为0.2

这里按照本人平时的习惯,划分好的目录结构如下

--data-train- 不同类别的文件夹

--data-test- 不同类别的文件夹

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件,# 关于 classification,分类,数据挖掘,人工智能

接下来这部分是读取每个子文件夹,或者说分类的classes(因为分类任务的文件夹就是class)

这里根据子文件夹名生成对应的json字典文件

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件,# 关于 classification,分类,数据挖掘,人工智能

划分数据,测试集会根据总数据的个数 * 划分比例 (test_rate)

遍历全部的数据,如果目标在测试集,那么就是测试集数据;否则为训练数据

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件,# 关于 classification,分类,数据挖掘,人工智能

如果是目标检测或者分割,数据和标签是分开的单独文件,划分的过程类似,后续会看着写写看文章来源地址https://www.toymoban.com/news/detail-786448.html

到了这里,关于关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【图像分类】基于计算机视觉的坑洼道路检测和识别(2个类别)

    写在前面: 首先感谢兄弟们的支持,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬

    2024年02月04日
    浏览(57)
  • PyTorch: 基于【MobileNet V2】处理MNIST数据集的图像分类任务【准确率99%+】

    PyTorch: 基于【VGG16】处理MNIST数据集的图像分类任务【准确率98.9%+】 在深度学习和计算机视觉的世界里,MNIST数据集就像一颗璀璨的明珠,被广大研究者们珍视并广泛使用。这个数据集包含了大量的手写数字图像,为图像分类任务提供了丰富的素材。今天,我们将带您一同探索

    2024年02月04日
    浏览(48)
  • (一)图像分类任务介绍 Image Classification

    目录 一、什么是图像分类任务?它有哪些应用场景? 二、图像分类任务的难点? 三、基于规则的方法是否可行? 四、什么是数据驱动的图像分类范式? 数据集构建 分类器设计与学习 分类器决策 五、常用的分类任务评价指标是什么?          图像分类任务是计算机视

    2024年02月11日
    浏览(43)
  • SeaFormer实战:使用SeaFormer实现图像分类任务(二)

    在上一篇文章中完成了前期的准备工作,见链接: SeaFormer实战:使用SeaFormer实现图像分类任务(一) 这篇主要是讲解如何训练和测试 完成上面的步骤后,就开始train脚本的编写,新建train.py 在train.py导入 os.environ[‘CUDA_VISIBLE_DEVICES’]=“0,1” 选择显卡,index从0开始,比如一台

    2024年02月08日
    浏览(44)
  • FasterNet实战:使用FasterNet实现图像分类任务(二)

    在上一篇文章中完成了前期的准备工作,见链接: FasterNet实战:使用FasterNet实现图像分类任务(一) 这篇主要是讲解如何训练和测试 完成上面的步骤后,就开始train脚本的编写,新建train.py 在train.py导入 os.environ[‘CUDA_VISIBLE_DEVICES’]=“0,1” 选择显卡,index从0开始,比如一台

    2024年02月01日
    浏览(43)
  • InternImage实战:使用InternImage实现图像分类任务(一)

    论文翻译:https://wanghao.blog.csdn.net/article/details/129379410 官方源码: https://github.com/OpenGVLab/InternImage 他来了!他来了!他带着氩弧焊的光芒过来了!作为CV的大模型,InternImage的光芒太强了。 2023年3月14日: 🚀 “书生2.5”发布! 2023年2月28日: 🚀 InternImage 被CVPR 2023接收! 2022年11月

    2023年04月08日
    浏览(36)
  • CloFormer实战:使用CloFormer实现图像分类任务(二)

    在上一篇文章中完成了前期的准备工作,见链接: CloFormer实战:使用CloFormer实现图像分类任务(一) 这篇主要是讲解如何训练和测试 完成上面的步骤后,就开始train脚本的编写,新建train.py 在train.py导入 os.environ[‘CUDA_VISIBLE_DEVICES’]=“0,1” 选择显卡,index从0开始,比如一台

    2024年02月10日
    浏览(53)
  • EMO实战:使用EMO实现图像分类任务(一)

    论文翻译:https://blog.csdn.net/m0_47867638/article/details/132034098?spm=1001.2014.3001.5501 官方源码:https://github.com/zhangzjn/EMO EMO是高效、轻量级的模型,以在参数、FLOPs和性能之间实现平衡,适用于密集预测任务。文章从倒立残差块(IRB)和Transformer的有效组件的统一角度出发,将基于CNN的I

    2024年02月12日
    浏览(37)
  • ConvNeXt V2实战:使用ConvNeXt V2实现图像分类任务(一)

    论文:https://arxiv.org/pdf/2301.00808.pdf 论文翻译:https://wanghao.blog.csdn.net/article/details/128541957 官方源码: https://github.com/facebookresearch/ConvNeXt-V2 当前的主干网络几乎是Transformers的时代,ConvNeXt为数不多的的高性能CNN网络,V1版本就证明了其强大的存在,在V2版本中,作者提出了一个全

    2024年02月02日
    浏览(43)
  • 深度学习---自有图像数据集划分

    如需转载,请注明:来源于 深度学习—自有图像数据集划分 | 老五笔记      要对自有图像数据集进行图像分类,首选需要将自有图像数据集划分为train和val(或者test)数据集。        当然 前提是将自有图像数据集已经按照分类进行了预处理,每个分类的图像作为一个单独

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包