Я работаю над классификатором жестового языка с использованием pytorch, у меня есть картинки, напоминающие каждую букву, находящиеся в папке, озаглавленной этой конкретной буквой. Например, папка "A" содержит "1_A_1.jpg", "1_A_2.jpg", "21_A_3.jpg" .. и т. Д.
Я пытаюсь создать функцию, которая:
- Перебирает различные папки
- Разбивает данные на обучающие, проверочные и тестовые наборы
- Помечает эти изображения соответствующими именами папок (т.е. буквенной меткой)
- Возвращает 3созданные папки, которые обучаются, тестируются и проверяются
Весь онлайн-код показывает примеры разделения данных, поступающих из наборов данных torchvision (встроенных наборов данных), ничего с нуля.
Iобнаружил следующее в stackoverflow:
import os
import numpy as np
import argparse
def get_files_from_folder(path):
files = os.listdir(path)
return np.asarray(files)
def main(path_to_data, path_to_test_data, train_ratio):
# get dirs
_, dirs, _ = next(os.walk(path_to_data))
# calculates how many train data per class
data_counter_per_class = np.zeros((len(dirs)))
for i in range(len(dirs)):
path = os.path.join(path_to_data, dirs[i])
files = get_files_from_folder(path)
data_counter_per_class[i] = len(files)
test_counter = np.round(data_counter_per_class * (1 - train_ratio))
# transfers files
for i in range(len(dirs)):
path_to_original = os.path.join(path_to_data, dirs[i])
path_to_save = os.path.join(path_to_test_data, dirs[i])
#creates dir
if not os.path.exists(path_to_save):
os.makedirs(path_to_save)
files = get_files_from_folder(path_to_original)
# moves data
for j in range(int(test_counter[i])):
dst = os.path.join(path_to_save, files[j])
src = os.path.join(path_to_original, files[j])
shutil.move(src, dst)
и когда я попытался сделать следующее:
path_to_data= r'path\A'
path_to_test_data=r"path\test"
train_ratio=0.8
main(path_to_data,path_to_test_data,train_ratio)
Ничего на самом деле не произошло ..
Если я смогу заставить это работать дляобучить и проверить, я могу легко продлить его для проверки.