学习Pytorch+Python之⾃定义数据集(创建CSV⽂件)
1、CSV⽂件
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其⽂件以纯⽂本形式存储表格数据(数字和⽂本)。⽂件格式如下图,也可⽤Excel打开。
2、简单分类数据集
本⽂数据集是⼀个蚂蚁(ants)和蜜蜂(bees)的简单的⼆分类数据,分别存放于dataset⽂件夹下的ants_image和bees_image⽂件夹下,⽤⽂件夹名字作为标签。
3、创建CSV⽂件代码
# 导⼊相关库
import csv
import random
import os
import glob
# 数据地址,注意是分类⽂件夹的上层⽂件夹
# dataset⽂件夹中的两个⼦⽂件夹分别对应两个类名
python怎么读csv数据root ='dataset'
# 对数据地址中的⽂件夹进⾏遍历,将类名存放于列表names中
names = os.listdir(root)
# 创建名为images的空列表⽤于存放图像地址
images =[]
# 创建名称、标签字典,⽤于存放⼆分类的类名和标签
names_labels ={}
# 遍历类名
for name in names:
# 遍历第⼀个类名的时候,这个时候仅有⼀个键,为ants_image
# 遍历第⼆个类名的时候,这个时候有两个键,分别为ants_image和bees_image
# 那么字典names_label的键的长度在第⼀次遍历的时候为0,第⼆次遍历的时候为1
names_labels[name]=len(names_labels.keys())
# glob.glob返回所有匹配的⽂件路径列表。
# 相对于本⽂⽽⾔,返回的是路径dataset/ants_jpg的⽂件
# ⽤*号匹配复杂没有规律的所有格式为jpg的图⽚名,且*表⽰匹配0个或多个字符
images += glob.glob(os.path.join(root, name,'*.jpg'))
print(names_labels)
print(images)
# 对csv⽂件进⾏写操作,如果没有csv⽂件会⾃动创建
# (1)图中,逗号前为⽂件名,逗号后为标签
# newline=''的作⽤是防⽌每⼀⾏数据后⾯都⾃动增加了⼀个空⾏
with open(os.path.join(root,'img.csv'), mode='w', newline='')as f:
writer = csv.writer(f)
for img in images:
# ⽤os.sep切割具有通⽤性,⾃动识别路径分隔符windows和linus
name = img.split(os.sep)[-2]
label = names_labels[name]
writer.writerow([name, label])
4、读取CSV⽂件
# 创建images和labels空列表⽤于存放数据和标签
images, labels =[],[]
with open(os.path.join(root, filename))as f:
reader = ader(f)
for row in reader:
img, label = row
label =int(label)
images.append(img)
labels.append(label)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。