• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

PyTorch'ta veri artırma dönüşümleri nasıl uygulanır?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
Veri artırma dönüşümlerini eğitim verisine uygulamak için torchvision.transforms.Compose içinde rastgele dönüşümleri bir araya getirip veri kümesini bu dönüşümle oluşturun. Standart doğrulama ve test değerlendirmesinde modele uygun, sabit ön işlemleri kullanın. Böylece model farklılaştırılmış eğitim örnekleri görürken başarı ölçümü rastgele artırma uygulanmayan ve aynı biçimde ön işlenen veriler üzerinden yapılır.

Eğitim ve doğrulama dönüşümlerini ayırın​


Veri artırma, mevcut görüntülerden rastgele yeni görünümler üretir; özgün dosyaları değiştirmez. Yatay çevirme, küçük döndürme, kırpma veya renk değişimi gibi işlemler modelin önemsiz görüntü farklılıklarına daha dayanıklı olmasına yardımcı olabilir. Ancak dönüşüm, sınıf bilgisini bozuyorsa kullanılmamalıdır. Örneğin rakam tanıma probleminde görüntüyü 180 derece döndürmek sınıfı değiştirebilir.

Eğitim için rastgele dönüşümler, doğrulama ve test için sabit dönüşümler seçilebilir:
Dönüşüm grubuAmaçKullanım
RandomHorizontalFlipGörüntüyü belirli olasılıkla yatay çevirirNesnenin yönü sınıfı değiştirmiyorsa eğitimde
RandomRotationGörüntüyü rastgele açıyla döndürürKüçük yön değişimleri geçerliyse eğitimde
ColorJitterParlaklık, karşıtlık veya doygunluğu değiştirirRenk koşulları sınıfı belirlemiyorsa eğitimde
Resize ve CenterCropGörüntü boyutunu model girdisine uyarlarEğitim, doğrulama ve testte uygun biçimde
ToTensorGörüntüyü modele verilebilen tensöre çevirirGenellikle tüm veri kümelerinde
Tablodaki dönüşümlerin tamamını aynı anda kullanmak zorunda değilsiniz. Özellikle döndürme ve renk değişimi, veri kümesindeki gerçek koşulları temsil etmiyorsa modelin öğrenmesini zorlaştırabilir.

torchvision ile veri artırma uygulama​


Ön koşul olarak PyTorch ve torchvision kurulu olmalı; görüntü klasörleri sınıflara göre ayrılmış olmalıdır. Aşağıdaki örnekte veri/egitim ve veri/dogrulama klasörlerinin altında sınıf klasörleri bulunduğu varsayılmıştır.
  1. Dönüşüm zincirlerini tanımlayın. Eğitim zincirine rastgele dönüşümleri, doğrulama zincirine ise yalnızca sabit dönüşümleri ekleyin.

    Python:
    from torchvision import datasets, transforms
    from torch.utils.data import DataLoader
    
    train_transform = transforms.Compose([
        transforms.Resize((224, 224)),
        transforms.RandomHorizontalFlip(p=0.5),
        transforms.RandomRotation(degrees=10),
        transforms.ColorJitter(brightness=0.2, contrast=0.2),
        transforms.ToTensor(),
    ])
    
    valid_transform = transforms.Compose([
        transforms.Resize((224, 224)),
        transforms.ToTensor(),
    ])
    
    train_data = datasets.ImageFolder(
        "veri/egitim",
        transform=train_transform
    )
    
    valid_data = datasets.ImageFolder(
        "veri/dogrulama",
        transform=valid_transform
    )
    
    if train_data.class_to_idx != valid_data.class_to_idx:
        raise ValueError("Eğitim ve doğrulama sınıf eşlemeleri aynı olmalı.")
    
    train_loader = DataLoader(train_data, batch_size=32, shuffle=True)
    valid_loader = DataLoader(valid_data, batch_size=32, shuffle=False)
    
    images, labels = next(iter(train_loader))
    print(images.shape)
    print(labels.shape)
  2. Kodu çalıştırın ve ilk veri grubunu kontrol edin. Önce eğitim ve doğrulama klasörlerinin sınıf adları ile class_to_idx eşlemelerinin aynı olduğunu doğrulayın. Örnekteki kontrol uyuşmazlıkta işlemi durdurur; uyumsuzluk varsa veri bölmelerini ve etiket eşlemesini düzeltin. Klasör yolları doğruysa çıktı, örneğin 32 görüntü ve 3 renk kanalı için [32, 3, 224, 224] biçiminde olur. Gerçek boyut, klasördeki görüntü sayısına ve batch_size değerine göre değişebilir.
  3. Eğitim döngüsünde eğitim veri yükleyicisini kullanın. Her yeni örnekte rastgele dönüşümler yeniden uygulanabilir; bu nedenle aynı özgün görüntü farklı eğitim turlarında farklı görünümlerle modele ulaşır.
  4. Doğrulama sırasında eğitim veri yükleyicisi yerine doğrulama veri yükleyicisini kullanın. valid_transform içinde rastgele işlem bulunmadığı için ölçüm daha tutarlı olur. Doğrulama kaybı veya doğruluğu belirgin biçimde değişiyorsa önce veri bölme işlemini, sınıf sıralarını ve görüntü boyutlarını kontrol edin.

Dönüşümlerin sonucu nasıl yorumlanır?​


images.shape değerinin dört boyutlu olması, yükleyicinin bir görüntü grubunu modelin beklediği tensör düzeninde ürettiğini gösterir; tek başına dönüşümlerin yararlı olduğunu kanıtlamaz. Yararı değerlendirmek için aynı model ve eğitim ayarlarıyla, veri artırmalı ve artırmasız eğitim sonuçlarını karşılaştırın.

Eğitim doğruluğu düşerken doğrulama doğruluğu yükseliyorsa artırma, aşırı öğrenmeyi azaltmış olabilir. Hem eğitim hem doğrulama başarımı düşüyorsa dönüşümler fazla agresif olabilir; örneğin döndürme açısını küçültün, ColorJitter etkisini azaltın veya sınıf bilgisini bozabilecek dönüşümü kaldırın. Eğitim başarımı çok yüksek, doğrulama başarımı düşük kalıyorsa yalnızca dönüşümleri artırmak yerine veri bölme hatalarını, sınıf dengesini ve modelin kapasitesini de inceleyin.

Standart tek-geçişli test değerlendirmesinde rastgele RandomHorizontalFlip, RandomRotation veya ColorJitter kullanmayın. Test sonucunun her çalıştırmada değişmesi, model değişmeden ölçüm koşulunun da değiştiği anlamına gelir; bu durum modelleri adil biçimde karşılaştırmayı zorlaştırır. Bilinçli olarak test-zamanı artırma (TTA) uygulanacaksa dönüşümleri ve tahminleri birleştirme kuralını tanımlayıp aynı protokolle karşılaştırın; bu değerlendirmeyi ayrıca raporlayın.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst