自从入坑深度学习,一直都是用现有的数据集进行训练网络,今天想自己制作自己的数据集,因此将收集到的图片进行数据集制作。

我的图片是人眼睛的图片,平均每个人有40张图片,命名是一个人的图片名称的前几个是一样的,后面是按顺序增加的,全部图片是在一个文件夹下,并有一个txt文档罗列出来全部的图片。
目标:将图片分成3大部分,按照7:2:1的比例,分别作为训练集、验证集以及测试集,并实现一个人一个文件夹,文件夹名称是此人图片名称中一样的部分。
话不多说,先上代码~ 好东西要大家分享!

实现将图片进行比例分割,并生成相应的txt,并提取出名称

import os
import numpy as npfile_path = r'E:\datasets\DataPrePro\12.04\box.txt'
save_train_path = r'E:\datasets\DataPrePro\12.04\label_train.txt'
save_valid_path = r'E:\datasets\DataPrePro\12.04\label_valid.txt'
save_test_path = r'E:\datasets\DataPrePro\12.04\label_test.txt'all_person_labels = []
person_dict = {}
person_dict_train = []
person_dict_valid = []
person_dict_test = []
label_dict = {}# 将所有数据按[序号:所有图片]的形式提取
# 生成人序号与标签对于的字典
with open(file_path, 'r') as fp:index = 0#label_dict = {}ori_lines = fp.readlines()for line in ori_lines:line = line.strip().split('\t')name = line[0].split('/')[-1]data = line[1:]label = name.split('_')[0]if label not in person_dict.keys():person_dict[label] = [name]else:person_dict[label].append(name)if label not in label_dict:label_dict[label] = indexindex += 1print(label_dict)print(label_dict.values())#按序号取出该序号人的所有图片,并随机打乱顺序然后按7:2:1保持到训练、验证、测试数据集,最后保持。
with open(save_train_path, 'w') as strp, open(save_valid_path, 'w') as svp, open(save_test_path, 'w') as step:for person in person_dict.keys():img_names = person_dict[person]Num_img = len(img_names)Num_train = int(Num_img * 0.7)Num_valid = int(Num_img * 0.2)Num_test = Num_img - Num_train - Num_validimg_names = np.array(img_names)np.random.shuffle(img_names)img_train = img_names[:Num_train]img_valid = img_names[Num_train:Num_train+Num_valid]img_test = img_names[Num_train+Num_valid:]for img_name in img_train:label = img_name.split(‘_’)[0]strp.write(img_name)strp.write(‘\t’)strp.write(label)strp.write(‘\n’)for img_name in img_valid:label = img_name.split(‘_’)[0]svp.write(img_name)svp.write(‘\t’)svp.write(label)svp.write(‘\n’)for img_name in img_test:label = img_name.split(‘_’)[0]step.write(img_name)step.write(‘\t’)step.write(label)step.write(‘\n’)

下面的部分就添加了将图片按照txt文档中的情况移动到相应的文件夹中:

import os
import numpy as np
import shutil
file_path = r'E:\datasets\DataPrePro\12.04\box.txt'
path = r'E:\datasets\DataPrePro\12.04\imgs'
save_train_path = r'E:\datasets\DataPrePro\12.04\label_train.txt'
save_valid_path = r'E:\datasets\DataPrePro\12.04\label_valid.txt'
save_test_path = r'E:\datasets\DataPrePro\12.04\label_test.txt'train_path = r'E:\datasets\DataPrePro\12.04\train'
valid_path = r'E:\datasets\DataPrePro\12.04\valid'
test_path = r'E:\datasets\DataPrePro\12.04\test'
all_person_labels = []
person_dict = {}
person_dict_train = []
person_dict_valid = []
person_dict_test = []# 将所有数据按[序号:所有图片]的形式提取
# 生成人序号与标签对于的字典
with open(file_path, 'r') as fp:index = 0label_dict = {}ori_lines = fp.readlines()for line in ori_lines:line = line.strip().split('\t')name = line[0].split('/')[-1]data = line[1:]label = name.split('_')[0]if label not in person_dict.keys():person_dict[label] = [name]else:person_dict[label].append(name)if label not in label_dict:label_dict[label] = indexindex += 1print(label_dict)print(label_dict.values())#按序号取出该序号人的所有图片,并随机打乱顺序然后按7:2:1保持到训练、验证、测试数据集,最后保持。
with open(save_train_path, 'w') as strp, open(save_valid_path, 'w') as svp, open(save_test_path, 'w') as step:for person in person_dict.keys():img_names = person_dict[person]Num_img = len(img_names)Num_train = int(Num_img * 0.7)Num_valid = int(Num_img * 0.2)Num_test = Num_img - Num_train - Num_validimg_names = np.array(img_names)np.random.shuffle(img_names)img_train = img_names[:Num_train]img_valid = img_names[Num_train:Num_train+Num_valid]img_test = img_names[Num_train+Num_valid:]if not os.path.exists(train_path):print(“Create new folder:” + train_path)os.mkdir(train_path)for img_name in img_train:label = img_name.split(‘_’)[0]strp.write(img_name)strp.write(‘\t’)strp.write(label)strp.write(‘\n’)for file in os.listdir(path):if os.path.isfile(path + ‘/‘ + file):if img_name in file:shutil.copy(path + ‘/‘ + file, train_path + ‘/‘ + file)if not os.path.exists(valid_path):print(“Create new folder:” + valid_path)os.mkdir(valid_path)for img_name in img_valid:label = img_name.split(‘_’)[0]svp.write(img_name)svp.write(‘\t’)svp.write(label)svp.write(‘\n’)for file in os.listdir(path):if os.path.isfile(path + ‘/‘ + file):if img_name in file:shutil.copy(path + ‘/‘ + file, valid_path + ‘/‘ + file)if not os.path.exists(test_path):print(“Create new folder:” + test_path)os.mkdir(test_path)for img_name in img_test:label = img_name.split(‘_’)[0]step.write(img_name)step.write(‘\t’)step.write(label)step.write(‘\n’)for file in os.listdir(path):if os.path.isfile(path + ‘/‘ + file):if img_name in file:shutil.copy(path + ‘/‘ + file, test_path + ‘/‘ + file)

为了实现将每个人的图片放到同一个文件夹下,代码如下:

import os
import shutiltrain_path = r'E:\datasets\DataPrePro\12.04\label_train.txt'
valid_path = r'E:\datasets\DataPrePro\12.04\label_valid.txt'
test_path = r'E:\datasets\DataPrePro\12.04\label_test.txt'
path_01 = r'E:\datasets\DataPrePro\12.04\train'
path_02 = r'E:\datasets\DataPrePro\12.04\valid'
path_03 = r'E:\datasets\DataPrePro\12.04\test'f = open(train_path, 'r')
lines = f.readlines()
for line in lines:line = line.strip().split(‘\t’)name = line[1]if not os.path.exists(path_01 + ‘/‘ + name):os.mkdir(path_01 + ‘/‘ + name)for file in os.listdir(path_01):if os.path.isfile(path_01 + ‘/‘ + file):if name in file:shutil.move(path_01 + ‘/‘ + file, path_01 + ‘/‘ + name + ‘/‘ + file)f = open(valid_path, ‘r’)
lines = f.readlines()
for line in lines:line = line.strip().split(‘\t’)name = line[1]if not os.path.exists(path_02 + ‘/‘ + name):os.mkdir(path_02 + ‘/‘ + name)for file in os.listdir(path_02):if os.path.isfile(path_02 + ‘/‘ + file):if name in file:shutil.move(path_02 + ‘/‘ + file, path_02+ ‘/‘ + name + ‘/‘ + file)f = open(test_path, ‘r’)
lines = f.readlines()
for line in lines:line = line.strip().split(‘\t’)name = line[1]if not os.path.exists(path_03 + ‘/‘ + name):os.mkdir(path_03 + ‘/‘ + name)for file in os.listdir(path_03):if os.path.isfile(path_03 + ‘/‘ + file):if name in file:shutil.move(path_03 + ‘/‘ + file, path_03 + ‘/‘ + name + ‘/‘ + file)

这是本人第一次制作数据集,如有不妥之处,希望大家多多指教,一起进步~

制作自己的图片数据集(附代码)相关推荐

  1. html5图片平铺的代码,jQuery图片平铺效果制作网页背景图片平铺代码

    插件描述:jQuery图片平铺效果制作网页背景图片平铺代码 调用JS文件 调用插件方法 $(function(){ // 插件初始化 $('img').jqthumb({ classname : 'j ...

  2. html网页背景图片平铺代码,jQuery图片平铺效果制作网页背景图片平铺代码

    插件描述:jQuery图片平铺效果制作网页背景图片平铺代码 调用JS文件 调用插件方法 $(function(){ // 插件初始化 $('img').jqthumb({ classname : 'j ...

  3. Get了!用Python制作数据预测集成工具 | 附代码

    作者 | 李秋键 责编 | 晋兆雨 大数据预测是大数据最核心的应用,是它将传统意义的预测拓展到"现测".大数据预测的优势体现在,它把一个非常困难的预测问题,转化为一个相对简单的描述 ...

  4. 数据可视化干货:使用pandas和seaborn制作炫酷图表(附代码)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 吾日三省吾身:为人谋而不忠乎?与朋 ...

  5. 送书 | 数据可视化干货:使用pandas和seaborn制作炫酷图表(附代码)

    导读:我们介绍过用matplotlib制作图表的一些tips,感兴趣的同学可以戳→纯干货:手把手教你用Python做数据可视化(附代码).matplotlib是一个相当底层的工具.你可以从其基本组件中 ...

  6. ajax js图片上传到php,Ajax上传并预览图片(附代码)

    这次给大家带来Ajax上传并预览图片(附代码),Ajax上传并预览图片的注意事项有哪些,下面就是实战案例,一起来看一下. 1. 直接上最简单的 一种 ajax 异步上传图片,并预览 html: 图片上 ...

  7. pandas 多折线图_干货:使用pandas和seaborn制作炫酷图表(附代码)

    原标题:干货:使用pandas和seaborn制作炫酷图表(附代码) 我们介绍过用matplotlib制作图表的一些tips,感兴趣的同学可以戳→纯干货:手把手教你用Python做数据可视化(附代码) ...

  8. python截取视频图像_python工具-将视频按帧截取图片(附代码)

    描述:将一个视频流按帧数截取大量的图片 用途:ai的数据集制作,得到大量的图片,之后将其打标签 更改的地方 1.default--间隔的帧数   2.input/output--输入视频的路径.存放截 ...

  9. 如何制作自己的图片数据集-基于tensorflow

    写在开始 自己最开始接触python的时候,第一个学会使用的库就是tensorflow,在经历了everyone 都会经历的mnist数据集训练后,就开始想自己做一个图片分类的深度学习,期间也是一波三 ...

最新文章

  1. android加载html
  2. jQuery UI Widget(1.8.1)工作原理--转载
  3. python运维开发常用模块(四)文件对比模块difflib
  4. SAP CRM产品主数据里的七种ID
  5. .NET 社区 NB,2019 中国 .NET 开发者峰会
  6. 日常问题———Attempting to operate on hdfs namenode as root
  7. AAAI 2021中的目标检测(详细版with code)
  8. 【技术角度看问题之一】ARM到底是个啥?
  9. zentaoPHP学习
  10. OpenCV4每日一练day14:光流法跟踪移动物体
  11. 服务器和数据库基本知识
  12. spring 中scope的singleton和prototype区别
  13. JavaScript中document.getElementById和document.write
  14. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 主细表事务处理的标准例子...
  15. python编译型语言和解释型语言的区别_编译型语言和解释型语言的区别?
  16. oracle dbca静默安装,dbca 静默安装
  17. wxpython收费吗_使用wxPython开发一个简单GUI应用
  18. Calibre发邮件至Kindle
  19. 解决jieba分词,切不出分词
  20. py语言和php,php和python什么区别

热门文章

  1. python打印输出12星座_Python采集12星座信息,分析出12星座的各个特点
  2. NeHe_001_创建一个OpenGL窗口
  3. 菩提本无树 明镜亦非台
  4. 英伟达 GPU显卡计算能力查询表
  5. 手机银行APP评测系列:天津银行持续优化手机银行用户体验,但仍需加强细节提升
  6. 从国内跳槽至新加坡工作的经验分享
  7. vite 设置启动Network 为本地ip
  8. python画樱花树教程_Python画樱花树❀
  9. Prometheus入门使用(三)
  10. vs运行程序时报错:“XXX处有未经处理的异常: 0xC0000374: 堆已损坏”