由于实验用到的代码是python但我没有学过,数据集预处理部分就不知道该怎么做了,求大佬提供一下帮助。
这个步骤主要目的就是生成训练集文件和验证集文件。给出的参考例子中图像数据只有两类猫和狗,并且存放在不同的路径,因此可以通过路径判断图片的类型。两个文件夹下均有1万多张图片,文件名均为数字。
图片文件存放位置
但是实验给定的图像数据则有五类且存放在一起,但训练数据与测试数据被分开,训练数据接近1万张测试数据接近1千张,文件名同样为数字,这样就无法通过路径判断图片类型,实验提供了一个文本文件按文件名顺序列出了全部训练数据的类型,但是没有列出对应的路径,测试数据则没有给出其类型。
实验中的训练与测试数据存放路径
提供的训练数据
这是例子中数据集预处理步骤的参考代码
[Python] 纯文本查看 复制代码 # 1. 解压数据
!unzip -n -q -d data/ data/data221571/archive.zip
# 2.获取图片路径,放到列表里
import os
cat_path=r'./data/kagglecatsanddogs_3367a/PetImages/Cat/'
dog_path=r'./data/kagglecatsanddogs_3367a/PetImages/Dog/'
#label 0 for Cat, label 1 for Dog
all_list=[]
cat_list=os.listdir(cat_path)
cnt=0
for itm in cat_list:
if itm.endswith('.jpg'):
itm=os.path.join(cat_path,itm)
list_item=itm+'\t'+'0'
all_list.append(list_item)
cnt+=1
else:
print(itm)
print(r'猫图片:'+str(cnt))
print(all_list[0])
dog_list=os.listdir(dog_path)
cnt=0
for itm in dog_list:
if itm.endswith('.jpg'):
itm=os.path.join(dog_path,itm)
list_item=itm+'\t'+'1'
all_list.append(list_item)
cnt+=1
else:
print(itm)
print(r'狗图片:'+str(cnt))
print(all_list[-1])
# 3.列表保存到文件,训练集文件,测试集文件
import random
with open('all_list.txt','w') as f:
for itm in all_list:
f.write(itm+'\n')
number_of_samples=len(all_list)
train_num=int(number_of_samples*0.8) #80%做为训练集, 20%作为验证集
random.shuffle(all_list)
train_list=all_list[:train_num]
val_list=all_list[train_num:]
with open('train.txt','w') as f:
for itm in train_list:
f.write(itm+'\n')
with open('val.txt','w') as f:
for itm in val_list:
f.write(itm+'\n')
以下是生成的三个文本文件
训练用的所有图片路径与类型文本
生成的训练集路径与类型文本
生成的验证集路径与类型文本
生成的文本文件中信息包含了数据路径与文件名和类型。
而实验给出的文本本人不知晓如何与训练数据相联系,求大佬指点如何处理
|