Porque cada vez que leo un conjunto de datos, tengo que escribir código de carga, lo cual es una pérdida de tiempo, y soy vago. Por lo tanto, escribí una pequeña herramienta de Python, operación de un clic, leí todos los archivos debajo del archivo de conjunto de datos y mezclé la división para generar archivos txt de prueba de entrenamiento (generar train.txt, test.txt, el orden es aleatorio, el predeterminado proporción es 8: 2), muy conveniente.
Antes de ejecutar el script, debe organizar las carpetas en esta forma:
root = "C: \ Users \ hq \ Desktop \ HoldingObject \ pokemon" (recuerde cambiar a su propia ruta raíz) El
árbol de ruta es el siguiente (el número de carpetas e imágenes es ilimitado
): -pokemon
- 0 (aquí la
)etiqueta con el ---- 1, .jpg, 2.jpg, 3.jpg,. . . (El nombre aquí no importa y no afecta)
——1 (La carpeta se denomina etiqueta aquí)
———— 1, .jpg, 2.jpg, 3.jpg ,. . . (El nombre aquí no importa y no afecta)
——2 (La carpeta se denomina etiqueta aquí)
———— 1, .jpg, 2.jpg, 3.jpg ,. . . (El nombre aquí no importa y no afecta) **
La carpeta del autor es como se muestra en la siguiente figura:
import os
import numpy as np
root = r"C:\Users\hq\Desktop\HoldingObject\pokemon"
#构建所有文件名的列表,dir为label
filename = []
#label = []
dirs = os.listdir(root)
for dir in dirs:
dir_path = root + '\\' + dir
names = os.listdir(dir_path)
for n in names:
filename.append(dir_path + '\\' + n + '\t' + dir)
#打乱文件名列表
np.random.shuffle(filename)
#划分训练集、测试集,默认比例4:1
train = filename[:int(len(filename)*0.8)]
test = filename[int(len(filename)*0.8):]
#分别写入train.txt, test.txt
with open('train.txt', 'w') as f1, open('test.txt', 'w') as f2:
for i in train:
f1.write(i + '\n')
for j in test:
f2.write(j + '\n')
print('成功!')
El archivo generado se muestra a continuación:
train.txt
test.txt