CUB200分割训练集测试集到txt文件

有时候跑论文代码需要从文件里面读取图片到内存
先分析一下官方给的数据集结构
在这里插入图片描述
images.txt:编号与图片名称
train_test_split.txt:编号和表示是否训练的1、0
image_class_labels.txt:编号和类别标签
代打如下:

# *_*coding: utf-8 *_*
 # author --liming--
 
"""
读取images.txt文件,获得每个图像的标签
读取train_test_split.txt文件,获取每个图像的train, test标签.其中1为训练,0为测试
读取image_class_labels.txt文件,获取每个图像的类别标签
"""
import os
import time
time_start = time.time()
# 文件路径
path_images = 'D:/BaiduNetdiskDownload/CUB_200_2011/CUB_200_2011/images.txt'
path_split =  'D:/BaiduNetdiskDownload/CUB_200_2011/CUB_200_2011/train_test_split.txt'
path_class="D:/BaiduNetdiskDownload/CUB_200_2011/CUB_200_2011/image_class_labels.txt"
path="D:/BaiduNetdiskDownload/CUB_200_2011/CUB_200_2011/images/"#图片所在路径
#新建txt文件
f_test=open("D:/BaiduNetdiskDownload/CUB_200_2011/CUB_200_2011/test.txt","w")
f_train=open("D:/BaiduNetdiskDownload/CUB_200_2011/CUB_200_2011/train.txt","w")
# 读取images.txt文件
images = []
with open(path_images,'r') as f:
    for line in f:
        images.append(list(line.strip('\n').split()))
# 读取train_test_split.txt文件
split = []
with open(path_split, 'r') as f_:
    for line in f_:
        split.append(list(line.strip('\n').split()))
 # 读取image_class_labels.txt文件
clss=[]
with open(path_class, 'r') as f_c:
    for cls in f_c:
        clss.append(list(cls.strip('\n').split()))
# 根据train_test_split.txt文件信息1、0划分
num = len(images) # 图像的总个数
print(num)
for k in range(num):
    file_name = images[k][-1]
    label = split[k][-1]
    Class=clss[k][-1]
    if int(label) == 1: # 划分到训练集
        f_train.write(path+file_name+" "+Class+"\n")
    else:
        f_test.write(path+file_name+" "+Class+"\n")
time_end = time.time()
print('CUB200训练集和测试集划分完毕, 耗时%s!!' % (time_end - time_start))
f_test.close()
f_train.close()

这样、图片路径和标签就被加载到文件里了:
在这里插入图片描述
当然,也可以推广到自己的数据集上!


版权声明:本文为hb_learing原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。