
PyTorch, açık kaynak makine öğrenimi çerçevesi, basitliği ve derin öğrenme uygulamalarında kullanım kolaylığı nedeniyle popülerlik kazanıyor. Moda endüstrisi uzmanlar, trendleri ve stilleri belirlemek, giysi kombinasyonları önermek ve hatta stillerin gelecek sezonlardaki başarısını tahmin etmek için PyTorch'tan yararlanabilir. Bu yazıda, basit bir uygulamanın nasıl uygulanacağını paylaşacağız. moda analizi PyTorch'u kullanarak.
Problem tanımı
Amacımız, her biri çeşitli giyim eşyalarını temsil eden bir görüntü veri kümesini analiz etmek ve bu görüntüleri farklı stillere ve trendlere göre kategorize edebilen derin bir öğrenme modeli oluşturmak için PyTorch'u kullanmaktır. Bunu yaparak, moda endüstrisinde öne çıkan trendleri ve birlikte iyi çalışan giysi kombinasyonlarını belirlemeyi amaçlıyoruz.
Ortamın Ayarlanması
Başlamak için sahip olmamız gerekecek Python hem de PyTorch sistemimizde yüklü. Ek olarak, bilgisayar görüşü için popüler veri kümeleri, model mimarileri ve yaygın görüntü dönüşümlerini içeren bir paket olan torchvision'u kullanacağız.
pip install torch torchvision
Bu paketler yüklendiğinde, artık sorunu çözmeye başlayabiliriz.
Veri Kümesi ve Veri Yükleyici
Bu yazıda kullanacağımız ModaMNIST görüntü sınıflandırması için popüler bir veri kümesi olan ve torchvision aracılığıyla kullanılabilen veri kümesi. Veri seti, 60,000 eğitim görüntüsü ve 10,000 test görüntüsü içerir ve her görüntü 10 farklı sınıftaki giyim eşyalarını temsil eder.
from torchvision import datasets, transforms
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
train_data = datasets.FashionMNIST(root="./data", train=True, download=True, transform=transform)
test_data = datasets.FashionMNIST(root="./data", train=False, download=True, transform=transform)
Ayrıca kurmamız gerekiyor Veri Yükleyiciler veri kümesi görüntülerini verimli bir şekilde yüklemek ve önceden işlemek için.
from torch.utils.data import DataLoader train_loader = DataLoader(train_data, batch_size=64, shuffle=True) test_loader = DataLoader(test_data, batch_size=64, shuffle=False)
Model Mimarisi
Ardından, derin öğrenme modelimizi tanımlayacağız. Evrişimli Sinir Ağı (CNN). Bir CNN, moda verileri içindeki karmaşık kalıpları ve yapıları öğrenebildiği için görüntüleri analiz etmek için uygundur.
import torch.nn as nn
import torch.nn.functional as F
class FashionModel(nn.Module):
def __init__(self):
super(FashionModel, self).__init__()
self.conv1 = nn.Conv2d(1, 32, 3, padding=1)
self.conv2 = nn.Conv2d(32, 64, 3, padding=1)
self.pool = nn.MaxPool2d(2, 2)
self.fc1 = nn.Linear(64*7*7, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 64*7*7)
x = F.relu(self.fc1(x))
x = F.log_softmax(self.fc2(x), dim=1)
return x
model = FashionModel()
Eğitim ve Değerlendirme
Şimdi, optimize edicimiz olarak Çapraz Entropi Kaybı ve Stokastik Gradient Descent (SGD) kullanarak modeli eğiteceğiz. Ardından, performansını kontrol etmek için modeli test veri kümesinde değerlendireceğiz.
import torch.optim as optim
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
epochs = 10
for epoch in range(epochs):
running_loss = 0.0
for inputs, labels in train_loader:
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
print(f"Epoch {epoch + 1}, Loss: {running_loss / len(train_loader)}")
correct = 0
total = 0
with torch.no_grad():
for inputs, labels in test_loader:
outputs = model(inputs)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print(f"Accuracy: {correct / total * 100}%")
Bu model ve eğitim prosedürü ile etkileyici bir başarı elde edebiliriz. doğruluk test veri setinde, moda endüstrisindeki çeşitli stilleri ve trendleri tanımamızı ve kategorize etmemizi sağlıyor.