Я пытаюсь создать классификатор, который классифицирует изображения жестов на языке жестов. есть папка с подпапками следующим образом: 1) Поезд 2) Проверка 3) Тест
В каждой подпапке есть папки с именами от A до I. Эти имена папок являются метками для изображений в этих папках.
Я не совсем уверен, как можно связать эти ярлыки с изображениями и передать их в модель.
В большинстве документов Pytorch, размещенных в Интернете, используются встроенные наборы данных, а для кого-то, кто является новичком в этой области,трудно понять, что происходит за кулисами. Я читал о загрузчиках данных, наборах данных, ImageFolder. Я только недавно начал глубокое изучение, и разделение данных было легко в машинном обучении с использованием встроенных функций и столбцов панд, а не столько с изображениями.
Все, что я мог сделать, это эти две функции, но не знал, какперейти оттуда:
Первая функция - загружать обучающие картинки
data_path = 'C:/Users/.../Train/'
train_dataset = torchvision.datasets.ImageFolder(
root=data_path,
transform=torchvision.transforms.ToTensor()
)
train_loader = torch.utils.data.DataLoader(
train_dataset,
batch_size=10,
num_workers=0,
shuffle=True
)
return train_loader
Вторая функция - извлекать метки из имен картинок в одной конкретной папке, имена файлов имеют соглашение uselessinfo_letter_uselessnumbers
import os
data_path = r"C:\Users...\small_sample"
labels = []
for img_filename in os.listdir(data_path):
if img_filename.endswith(".jpg"):
useless1, letter, useless2 = img_filename.split('.')[0].split('_')
labels.append(letter)
Я пытаюсь создать train_loader и думаю, что train_loader будет иметь как тензорный формат изображений с их метками.
для подачи в
for i, data in enumerate(train_loader, 0):
# Get the inputs
inputs, labels = data
labels = normalize_label(labels) # Convert labels to 0/1
# Zero the parameter gradients
optimizer.zero_grad()
# Forward pass, backward pass, and optimize
outputs = net(inputs)
loss = criterion(outputs, labels.float())
loss.backward()
optimizer.step()