Ana içeriğe atla

Veri Artırmaya Kapsamlı Bir Rehber

TensorFlow ve Keras öğreticisiyle veri artırma teknikleri, kullanım alanları ve araçları hakkında bilgi edinin.
Güncel 16 Nis 2026  · 15 dk. oku

Modeller, yalnızca üzerinde eğitildikleri veri kadar iyidir; ancak büyük ve çeşitli veri setleri toplamak emek yoğun bir süreçtir.

Veri artırma bir çözüm sunar: Mevcut verilerin değiştirilmiş sürümlerini oluşturarak eğitim setinizi yapay olarak genişletebilir, aşırı uyumu azaltabilir ve genelleme yapabilen modeller geliştirebilirsiniz.

Bu rehber, görüntü, metin ve ses için temel veri artırma tekniklerini kapsar. Ayrıca iş akışınıza ekleyebileceğiniz popüler bağımsız araçların bir özetini de bulacaksınız.

Veri Artırma Nedir?

Veri artırma, mevcut veriler kullanılarak bir veri setinin değiştirilmiş kopyalarını oluşturarak eğitim setini yapay olarak artırma tekniğidir. Buna veri setinde küçük değişiklikler yapmak veya derin öğrenme ile yeni veri noktaları üretmek dahildir.

Artırılmış ve sentetik veri

Veri artırma ve sentetik veri üretimi, makine öğreniminde farklı ancak birbirini tamamlayan tekniklerdir:

  • Artırılmış veri: Veri seti çeşitliliğini artırmak için mevcut verilerin değiştirilmiş sürümlerinin oluşturulmasını içerir. Örneğin, görüntü işlemede mevcut görsellere döndürme, çevirme veya renk ayarı gibi dönüşümler uygulamak, modellerin daha iyi genelleme yapmasına yardımcı olabilir.
  • Sentetik veri: Bu, yapay olarak üretilen veriye atıfta bulunur; bu sayede araştırmacılar ve geliştiriciler, gerçek dünya verilerinin gizliliğini veya güvenliğini riske atmadan algoritmaları test edip iyileştirebilir.

Not: artırma teknikleri yalnızca görüntülerle sınırlı değildir. Sesi, videoyu, metni ve diğer veri türlerini de artırabilirsiniz.

Veri artırma neden önemlidir?

Veri artırma, mevcut verilerden en iyi şekilde yararlanarak makine öğrenimi modellerinin daha iyi performans göstermesine yardımcı olur. Aşırı uyumu önler, doğruluğu artırır ve özellikle veri setleri küçük veya dengesiz olduğunda kritik olan eğitim verilerinde çeşitlilik sağlar. Gerçek dünyadaki değişimleri taklit ederek, pahalı veri toplama ihtiyacı olmadan modelleri daha sağlam ve güvenilir hale getirir. Kısacası, modellerin etkili biçimde öğrenip genellemesine yardımcı olan basit ve güçlü bir yöntemdir.

Veri artırmayı ne zaman kullanmalısınız?

  1. Modellerin aşırı uyumunu önlemek için.
  2. Başlangıç eğitim seti çok küçük olduğunda.
  3. Model doğruluğunu artırmak için.
  4. Ham veri setini etiketleme ve temizleme operasyon maliyetini azaltmak için.

Veri artırmanın sınırlamaları

  • Orijinal veri setindeki önyargılar, artırılmış veride de devam eder.
  • Veri artırma için kalite güvence süreçleri maliyetlidir.
  • Gelişmiş uygulamalar için sistem kurmak Ar-Ge gerektirir. Örneğin, GAN'lerle yüksek çözünürlüklü görüntüler üretmek zor olabilir.
  • Etkili bir veri artırma yaklaşımı bulmak zor olabilir.

Veri Artırma Teknikleri

Bu bölümde ses, metin, görüntü ve ileri seviye veri artırma tekniklerini öğreneceğiz. 

Ses verisi artırma

  1. Gürültü ekleme: modele performans kazandırmak için ses veri setine Gauss veya rastgele gürültü ekleyin. 
  2. Kaydırma: sesi rastgele saniyelerle sola (ileri sarma) veya sağa kaydırın.
  3. Hızı değiştirme: zaman serisini sabit bir oranda esnetir.
  4. Perdeyi değiştirme: sesin perdesini rastgele değiştirin. 

Metin verisi artırma

  1. Sözcük veya cümle karıştırma: bir sözcüğün veya cümlenin konumunu rastgele değiştirin. 
  2. Sözcük değiştirme: sözcükleri eşanlamlılarıyla değiştirin.
  3. Sözdizimi ağacı işleme: aynı sözcükle cümleyi yeniden ifade edin.
  4. Rastgele sözcük ekleme: sözcükleri rastgele ekler. 
  5. Rastgele sözcük silme: sözcükleri rastgele siler. 

Görüntü artırma

Uygulamalı alıştırmalarla görüntü dönüştürme ve işleme hakkında daha fazla bilgi edinmek için Python ile Görüntü İşleme beceri yolumuzu inceleyin.

  1. Geometrik dönüşümler: görselleri rastgele çevirin, kırpın, döndürün, esnetin ve yakınlaştırın. Aynı görseller üzerinde birden fazla dönüşüm uygularken dikkatli olmalısınız; bu, model performansını düşürebilir. 
  2. Renk uzayı dönüşümleri: RGB renk kanallarını, kontrastı ve parlaklığı rastgele değiştirin.
  3. Çekirdek filtreleri: görüntünün keskinliğini veya bulanıklığını rastgele değiştirin. 
  4. Rastgele silme: başlangıç görselinin bir bölümünü silin.
  5. Görüntüleri karıştırma: birden fazla görüntüyü harmanlayıp karıştırın. 

İleri teknikler

  1. Çekişmeli üretici ağlar (GAN'ler): yeni veri noktaları veya görüntüler üretmek için kullanılır. Sentetik veri üretmek için mevcut veriye ihtiyaç duymaz. 
  2. Sinirsel Stil Aktarımı: görüntüleri ayrıştırıp içerik ve stili ayırmak üzere eğitilen bir dizi evrişim katmanı.

Veri Artırmanın Uygulamaları

Veri artırma, kaliteli veriye erişimin zor olduğu tüm makine öğrenimi uygulamalarında kullanılabilir. Ayrıca tüm disiplinlerde modelin sağlamlığını ve performansını artırmaya yardımcı olabilir. 

Sağlık

Tıbbi görüntüleme veri setlerini edinmek ve etiketlemek zaman alıcı ve pahalıdır. Veri analizi yapmadan önce veri setini doğrulamak için konu uzmanına da ihtiyaç vardır. Geometrik ve diğer dönüşümleri kullanmak, sağlam ve doğru makine öğrenimi modelleri eğitmenize yardımcı olabilir. 

Örneğin, Zatürre Sınıflandırması durumunda, rastgele kırpma, yakınlaştırma, esnetme ve renk uzayı dönüşümlerini kullanarak model performansını iyileştirebilirsiniz. Ancak, bazı artırmalar konusunda dikkatli olmanız gerekir; aksi sonuçlar doğurabilir. Örneğin, rastgele döndürme ve x ekseni boyunca yansıtma, röntgen görüntüleme veri setleri için önerilmez. 

kaggle-COVID19-Classification.png

Görsel kaynağı: ibrahimsobh.github.io | kaggle-COVID19-Classification

Otonom araçlar

Otonom araçlarla ilgili veriler sınırlıdır ve şirketler, pekiştirmeli öğrenme kullanarak simüle edilmiş ortamlarda sentetik veri üretmektedir. Bu, veri güvenliğinin sorun olduğu makine öğrenimi uygulamalarını eğitip test etmenize yardımcı olabilir. 

Autonomous Visualization System from Uber ATG.png

Görsel: David Silver | Uber ATG Otonom Görselleştirme Sistemi

Artırılmış verinin simülasyon olarak sunduğu olanaklar sınırsızdır; gerçek dünya senaryoları üretmek için kullanılabilir. 

Doğal dil işleme

Metin veri artırma genellikle kaliteli verinin sınırlı olduğu ve performans metriklerini iyileştirmenin öncelik taşıdığı durumlarda kullanılır. Eşanlamlı artırma, sözcük gömme, karakter değiş-tokuşu, rastgele ekleme ve silme uygulayabilirsiniz. Bu teknikler, düşük kaynaklı diller için de değerlidir. 

Selective Text Augmentation with Word Roles for Low-Resource Text Classification.png

Görsel kaynağı: Papers With Code | Düşük Kaynaklı Metin Sınıflandırması için Sözcük Rollerine Dayalı Seçici Metin Artırma.

Araştırmacılar, yüksek hata tanıma senaryolarında dil modelleri, sıralı-sıralı veri üretimi ve metin sınıflandırması için metin artırmayı kullanır. 

Otomatik konuşma tanıma

Ses sınıflandırması ve konuşma tanımada veri artırma harikalar yaratır. Düşük kaynaklı dillerde bile model performansını artırır. 

Noise Injection.png

Görsel: Edward Ma | Gürültü Ekleme

Rastgele gürültü ekleme, kaydırma ve perdeyi değiştirme, son teknoloji konuşmadan metne modeller üretmenize yardımcı olabilir. Ayrıca belirli bir uygulama için gerçekçi sesler oluşturmak üzere GAN'leri kullanabilirsiniz.

Veri Artırmanın Etik Sonuçları

Veri artırma, makine öğrenimi modellerini geliştirmek için güçlü bir araç olmakla birlikte, dikkatli değerlendirme gerektiren çeşitli etik endişeleri de gündeme getirir:

  1. Önyargıların pekişmesi: Önyargılı veri setlerinin artırılması, mevcut eşitsizlikleri yineleyip ağırlaştırabilir ve temsil edilmeyen gruplar için zayıf performans gösteren modellere yol açabilir.
  2. Gizlilik riskleri: Sentetik veri üretimi, orijinal veri setinden hassas ayrıntıları istemeden koruyabilir ve gizlilik düzenlemelerinin ihlali riskini doğurabilir.
  3. Veri özgünlüğü: Yanlış uygulanan artırmalar gerçekçi olmayan veya yanıltıcı veri noktaları üretebilir; bu da model performansını ve güveni zedeleyebilir.
  4. Şeffaflık: Artırma tekniklerinin açıkça belgelenmesi ve paydaşların verilerin nasıl dönüştürüldüğünü veya üretildiğini anlamasının sağlanması kritik önemdedir.
  5. Adalet ve eşitlik: Artırılmış verinin çeşitli nüfusları ve senaryoları yansıtması, istenmeyen önyargıları önlemek ve sağlam model performansını güvenceye almak için esastır.
  6. Mevzuata uyum: Artırılmış veri setlerinin, yasal ve itibar risklerini önlemek için veri koruma yasalarına ve etik ilkelere uyması gerekir.

Veri artırmadan sorumlu şekilde yararlanmak için uygulayıcılar, artırılmış veriyi doğrulamalı, önyargıları ele almalı ve ilgili etik ve yasal standartlarla uyumu sağlamalıdır.

Keras ve TensorFlow ile Veri Artırma

Bu öğreticide, Keras ve TensorFlow kullanarak görüntü verilerini nasıl artıracağımızı öğreneceğiz. Ayrıca artırılmış verinizi kullanarak basit bir ikili sınıflandırıcıyı nasıl eğiteceğinizi de öğreneceksiniz. Aşağıdaki kod, TensorFlow’un resmi örneğinin değiştirilmiş bir sürümüdür. 

Kodu kendi başınıza uygulayarak öğreticiyi takip etmenizi öneririz. Çıktılarıyla birlikte kod kaynağı bu DataLab çalışma kitabında mevcuttur. 

Başlarken 

Veri artırma için TensorFlow ve Keras'ı, görselleri göstermek için matplotlib'i kullanacağız.  

%%capture
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential

Veri yükleme

TensorFlow Dataset koleksiyonu çok büyüktür. Metin, ses, video, grafik, zaman serisi ve görüntü veri setleri bulabilirsiniz. Bu öğreticide cats_vs_dogs veri setini kullanacağız. Veri seti boyutu 786,68 MiB’dir ve çeşitli görüntü artırmaları uygulayıp ikili sınıflandırıcıyı eğiteceğiz.

Aşağıdaki kodda, etiketler ve meta verilerle birlikte %80 eğitim, %10 doğrulama ve %10 test seti yükledik.

%%capture
(train_ds, val_ds, test_ds), metadata = tfds.load(
    'cats_vs_dogs',
    split=['train[:80%]', 'train[80%:90%]', 'train[90%:]'],
    with_info=True,
    as_supervised=True,
)

Veri analizi

Veri setinde iki sınıf vardır: ‘cat’ ve ‘dog’.

num_classes = metadata.features['label'].num_classes
print(num_classes)
2

Eğitim setinden rastgele yalnızca dört görseli ve etiketlerini almak için yineleyiciler kullanacak ve matplotlib'in `.imshow()` fonksiyonu ile göstereceğiz. 

try:
    get_label_name = metadata.features['label'].int2str
    train_iter = iter(train_ds)
    fig = plt.figure(figsize=(7, 8))
    for x in range(4):
        image, label = next(train_iter)
        fig.add_subplot(1, 4, x + 1)
        plt.imshow(image)
        plt.axis('off')
        plt.title(get_label_name(label))
except StopIteration:
    print("Dataset iterator is empty!")

Gördüğümüz gibi, çeşitli köpek görselleri ve bir kedi görseli elde ettik. 

dogsandcats.png

keras.Sequential() ile veri artırma

Genellikle modeli kurmak için keras.Sequential() kullanırız, ancak artırma katmanları eklemek için de kullanabiliriz.  

Yeniden boyutlandırma ve yeniden ölçekleme 

Örnekte, Keras Sequential ve görüntü artırma katmanlarını kullanarak görseli yeniden boyutlandırıp yeniden ölçekliyoruz. Önce görseli 180x180'e yeniden boyutlandıracak, ardından 1/255 ile yeniden ölçekleyeceğiz. Küçük görsel boyutu bize zaman, bellek ve hesaplama tasarrufu sağlayacaktır. 

Gördüğümüz üzere, görseli başarıyla artırma katmanından geçirdik ve nihai çıktı yeniden boyutlandırılıp yeniden ölçeklendirildi. 

IMG_SIZE = 180

resize_and_rescale = keras.Sequential([
  layers.Resizing(IMG_SIZE, IMG_SIZE),
  layers.Rescaling(1./255)
])

result = resize_and_rescale(image)
plt.axis('off')
plt.imshow(result);

cat.png

1

Döndürme ve çevirme

Aynı görsele rastgele çevirme ve döndürme uygulayalım. Altı görseli rastgele geometrik artırmalarla göstermek için döngü, alt grafik ve imshow kullanacağız.

data_augmentation = keras.Sequential([
  layers.RandomFlip("horizontal_and_vertical"),
  layers.RandomRotation(0.4),
])


plt.figure(figsize=(8, 7))
for i in range(6):
  augmented_image = data_augmentation(image)
  ax = plt.subplot(2, 3, i + 1)
  plt.imshow(augmented_image.numpy()/255)
  plt.axis("off")

Not: “WARNING:matplotlib.image:Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).” uyarısını alıyorsanız, görselinizi numpy'a dönüştürüp 255'e bölmeyi deneyin. Bu, soluk bir çıktı yerine net bir çıktı görmenizi sağlar. 

assortedcats.png

Basit artırmanın ötesinde, görsellere RandomContrast, RandomCrop, CenterCrop ve RandomZoom da uygulayabilirsiniz. 

Doğrudan model katmanına ekleme 

Görsellere artırma uygulamanın iki yolu vardır. İlk yöntem, artırma katmanlarını doğrudan modele eklemektir.

model = keras.Sequential([
  # Add the preprocessing layers you created earlier.
  resize_and_rescale,
  data_augmentation,
  # Add the model layers
  layers.Conv2D(16, 3, padding='same', activation='relu'),
  layers.MaxPooling2D(),
  layers.Flatten(),
  layers.Dense(128, activation='relu'),
  layers.Dense(64, activation='relu'),
  layers.Dense(1,activation='sigmoid')
])

Not: veri artırma, test aşamasında etkin değildir. Yalnızca Model.fit için çalışır; Model.evaluate veya Model.predict için çalışmaz.

.map kullanarak artırma fonksiyonunu uygulama

İkinci yöntem, Dataset.map kullanarak tüm eğitim setine veri artırmayı uygulamaktır.

aug_ds = train_ds.map(lambda x, y: (data_augmentation(x, training=True), y))

Veri ön işleme 

Eğitim, doğrulama ve test setlerini işlemek için bir veri ön işleme fonksiyonu oluşturacağız. 

Fonksiyon şunları yapacak:

  1. Tüm veri setlerine yeniden boyutlandırma ve yeniden ölçekleme uygular.
  2. Shuffle True ise veri setini karıştırır.
  3. Veriyi 32’lik yığınlara dönüştürür. 
  4. Augment True ise tüm veri setlerine veri artırma fonksiyonunu uygular. 
  5. Son olarak, veriyi işlerken modelinizin GPU’da eğitimiyle örtüşmesi için Dataset.prefetch kullanır.
batch_size = 32
AUTOTUNE = tf.data.AUTOTUNE

def prepare(ds, shuffle=False, augment=False):
  # Resize and rescale all datasets.
  ds = ds.map(lambda x, y: (resize_and_rescale(x), y),
              num_parallel_calls=AUTOTUNE)

  if shuffle:
    ds = ds.shuffle(1000)

  # Batch all datasets.
  ds = ds.batch(batch_size)

  # Use data augmentation only on the training set.
  if augment:
    ds = ds.map(lambda x, y: (data_augmentation(x, training=True), y),
                num_parallel_calls=AUTOTUNE)

  # Use buffered prefetching on all datasets.
  return ds.prefetch(buffer_size=AUTOTUNE)


train_ds = prepare(train_ds, shuffle=True, augment=True)
val_ds = prepare(val_ds)
test_ds = prepare(test_ds)

Model oluşturma

Evrişim ve yoğun katmanlardan oluşan basit bir model oluşturacağız. Girdi şeklinin görselin şekliyle uyumlu olduğundan emin olun. 

model = keras.Sequential([
    layers.Conv2D(32, (3, 3), input_shape=(180,180,3), padding='same', activation='relu'),
    layers.MaxPooling2D(pool_size=(2, 2)),
    layers.Flatten(),
    layers.Dense(32, activation='relu'),
    layers.Dense(1,activation='softmax')
])

Eğitim ve değerlendirme

Şimdi modeli derleyip bir epoch boyunca eğiteceğiz. Optimize edici Adam, kayıp fonksiyonu Binary Cross Entropy ve metrik doğruluktur. 

Gözlemlediğimiz üzere, tek çalıştırmada %51 doğrulama doğruluğu elde ettik. Daha iyi sonuçlar için birden çok epoch boyunca eğitebilir ve hiperparametreleri optimize edebilirsiniz.

Model oluşturma ve eğitme bölümü, görselleri nasıl artırabileceğinize ve modeli nasıl eğitebileceğinize dair bir fikir vermek içindir.  

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])
epochs=1
history = model.fit(
  train_ds,
  validation_data=val_ds,
  epochs=epochs
)
582/582 [==============================] - 98s 147ms/step - loss: 0.6993 - accuracy: 0.4961 - val_loss: 0.6934 - val_accuracy: 0.5185
loss, acc = model.evaluate(test_ds)
73/73 [==============================] - 4s 48ms/step - loss: 0.6932 - accuracy: 0.5013

Keras ile Görüntü İşleme kursunu alarak görüntü analizi yapmayı; evrişimsel ağları kurmayı, eğitmeyi ve değerlendirmeyi öğrenin. 

tf.image() kullanarak veri artırma

Bu bölümde, veri artırma üzerinde daha ince denetim sağlamak için TensorFlow kullanarak görselleri artırmayı öğreneceğiz.

Veri Yükleme

cats_vs_dogs veri setini etiketler ve meta verilerle tekrar yükleyeceğiz.

%%capture
(train_ds, val_ds, test_ds), metadata = tfds.load(
    'cats_vs_dogs',
    split=['train[:80%]', 'train[80%:90%]', 'train[90%:]'],
    with_info=True,
    as_supervised=True,
)

Bir kedi görseli yerine köpek görseli kullanacak ve çeşitli artırma teknikleri uygulayacağız. 

image, label = next(iter(train_ds))
plt.imshow(image)
plt.title(get_label_name(label));

dog.png

1

Sola-sağa çevirme

Orijinal ve artırılmış görsel arasındaki farkı göstermek için visualize() fonksiyonunu oluşturacağız. 

Fonksiyon oldukça basittir. Girdi olarak orijinal görseli ve artırma fonksiyonunu alır ve farkı matplotlib ile gösterir.

def visualize(original, augmented):
    fig = plt.figure()
    plt.subplot(1,2,1)
    plt.title('Original image')
    plt.imshow(original)
    plt.axis("off")
 
    plt.subplot(1,2,2)
    plt.title('Augmented image')
    plt.imshow(augmented)
    plt.axis("off")

Gördüğümüz üzere, tf.image fonksiyonunu kullanarak görseli soldan sağa çevirdik. keras.Sequential()'dan çok daha basittir. 

flipped = tf.image.flip_left_right(image)
visualize(image, flipped)

dogflipped.png

1

Gri tonlama

Görseli tf.image.rgb_to_grayscale() kullanarak gri tonlamaya dönüştürelim.

grayscaled = tf.image.rgb_to_grayscale(image)
visualize(image,  tf.squeeze(grayscaled))

doggreyscale.png

1

Doygunluğu ayarlama

Doygunluğu 3 katsayısı ile de ayarlayabilirsiniz. 

saturated = tf.image.adjust_saturation(image, 3)
visualize(image, saturated)

dogsaturation.png

1

Parlaklığı ayarlama

Bir parlaklık katsayısı vererek parlaklığı ayarlayın. 

bright = tf.image.adjust_brightness(image, 0.4)
visualize(image, bright)

dogbrightness.png

1

Merkezi kırpma

0,5 merkezi kesir kullanarak görseli ortasından kırpın. 

cropped = tf.image.central_crop(image, central_fraction=0.5)
visualize(image, cropped)

dogzoom.png

1

90 derece döndürme

tf.image.rot90() fonksiyonunu kullanarak görseli 90 derece döndürün.

rotated = tf.image.rot90(image)
visualize(image, rotated)

dogrotate.png

1

Rastgele parlaklık uygulama

Keras katmanlarında olduğu gibi, tf.image() da rastgele artırma fonksiyonlarına sahiptir. Aşağıdaki örnekte, görsele rastgele parlaklık uygulayacak ve birden çok sonucu göstereceğiz. 

Görüldüğü gibi ilk görsel biraz daha karanlık, sonraki iki görsel ise daha parlak. 

for i in range(3):
  seed = (i, 0)  # tuple of size (2,)
  stateless_random_brightness = tf.image.stateless_random_brightness(
      image, max_delta=0.95, seed=seed)
  visualize(image, stateless_random_brightness)

dogdark.png

dogbrightness2.png

dogbrightness3.png

Artırma fonksiyonunu uygulama

tıpkı keras'ta olduğu gibi, Dataset.map() kullanarak veri artırma fonksiyonunu tüm veri setine uygulayabiliriz. 

def augment(image, label):
  image = tf.cast(image, tf.float32)
  image = tf.image.resize(image, [IMG_SIZE, IMG_SIZE])
  image = (image / 255.0)
  image = tf.image.random_crop(image, size=[IMG_SIZE, IMG_SIZE, 3])
  image = tf.image.random_brightness(image, max_delta=0.5)
  return image, label


train_ds = (
    train_ds
    .shuffle(1000)
    .map(augment, num_parallel_calls=AUTOTUNE)
    .batch(batch_size)
    .prefetch(AUTOTUNE)
)

ImageDataGenerator ile Veri Artırma

Keras ImageDataGenerator() daha da basittir. En iyi, veriyi yerel bir dizinden veya CSV'den yüklerken çalışır. 

Örnekte, Keras’ın varsayılan veri seti kütüphanesinden küçük bir CIFAR10 veri setini indirip yükleyeceğiz. 

Ardından keras.preprocessing.image.ImageDataGenerator() kullanarak artırma uygulayacağız. Fonksiyon, görselleri rastgele döndürecek, yükseklik ve genişliği değiştirecek ve yatay olarak çevirecek.

Son olarak, ImageDataGenerator()'ü eğitim veri setine uyduracak ve rastgele artırmalarla altı görsel göstereceğiz. 

Not: görsel boyutu 32x32 olduğundan düşük çözünürlüklü bir görüntü elde ediyoruz. 

(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()

datagen = keras.preprocessing.image.ImageDataGenerator(rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=True,
    validation_split=0.2)

datagen.fit(x_train)

for X_batch, y_batch in datagen.flow(x_train,y_train, batch_size=6):
    for i in range(0, 6):
        plt.subplot(2,3,i+1)
        plt.imshow(X_batch[i]/255)
        plt.axis('off')
    break

lowres.png

Veri Artırma Araçları

Bu bölümde, çeşitli veri artırma tekniklerini uygulamak ve model performansını iyileştirmek için kullanabileceğiniz diğer açık kaynaklı araçları öğreneceğiz. 

Pytorch

Görüntü dönüşümleri torchvision.transforms modülünde mevcuttur. Keras’a benzer şekilde, dönüştürme katmanlarını torch.nn.Sequential içine ekleyebilir veya bir artırma fonksiyonunu veri setine ayrı olarak uygulayabilirsiniz. 

Augmentor

Augmentor, görüntü artırma ve yapay görüntü üretimi için bir Python paketidir. Perspektif Eğme, Elastik Bozulmalar, Döndürme, Kesme, Kırpma ve Ayna Görüntüsü alma işlemlerini gerçekleştirebilirsiniz. Augmentor ayrıca temel görüntü ön işleme işlevleriyle birlikte gelir.

Albumentations

Albumentations, görüntü artırma için hızlı ve esnek bir Python aracıdır. Derin evrişimsel sinir ağlarının performansını artırmak için yarışmalarda, endüstride ve araştırmada yaygın olarak kullanılır. 

Imgaug

Imgaug, görüntü artırma için açık kaynaklı bir araçtır. Gauss gürültüsü, kontrast, keskinlik, kırpma, afin ve çevirme gibi çok çeşitli artırma tekniklerini destekler. Basit ama güçlü bir stokastik arayüze sahiptir ve anahtar noktalar, sınırlayıcı kutular, ısı haritaları ve segmentasyon haritaları ile birlikte gelir.

OpenCV

OpenCV, bilgisayarla görme, makine öğrenimi ve görüntü işleme için kapsamlı bir açık kaynak kütüphanedir. Genellikle gerçek zamanlı uygulamalar geliştirmede kullanılır. Görüntüleri ve videoları zahmetsizce artırmak için OpenCV’yi kullanabilirsiniz.  

Sonuç

TensorFlow ve Keras’ın sunduğu görüntü artırma fonksiyonları kullanışlıdır. Artırma yapmak için yalnızca bir artırma katmanı, tf.image() veya ImageDataGenerator() eklemeniz yeterlidir. Derin öğrenme çatılarına ek olarak, veri artırma yapmak için Augmentor, Albumentations, OpenCV ve Imgaug gibi bağımsız araçları da kullanabilirsiniz.

Bu öğreticide veri artırmanın avantajlarını, sınırlamalarını, kullanım alanlarını ve tekniklerini öğrendik. Ayrıca Keras ve TensorFlow kullanarak cats_vs_dogs veri seti üzerinde görüntü artırmayı uygulamayı öğrendik. Görüntü işlemeyi daha fazla öğrenmek isterseniz, Python ile Görüntü İşleme beceri yolumuza göz atın. Görüntü dönüştürme ve işleme temellerini, tıbbi görüntü analizini ve Keras kullanarak gelişmiş görüntü işlemeyi öğretecektir.

Veri Artırma Hakkında SSS

Veri artırma ne anlama gelir?

Mevcut verilerin kopyalarını değiştirerek veri setini yapay olarak artırma ya da mevcut veri setini kullanarak yeni kopyaları sentetik olarak üretme tekniklerinin bir bütünüdür. Makine öğrenimi modelini eğitirken düzenlileştirme görevi görür ve aşırı uyumu azaltır.

Veri artırma doğruluğu artırır mı?

Çoğu durumda, veri artırma modelin doğruluğunu iyileştirmiştir. Modelin aşırı uyumunu azaltır ve görülmemiş veri seti üzerindeki doğruluğu artırır.

Veri artırmanın dezavantajı nedir?

Veri artırmanın başlıca dezavantajı veri önyargısından kaynaklanır. Orijinal veride önyargılar varsa, artırılmış veride de önyargılar olacaktır ve bu da suboptimal sonuçlara yol açacaktır. 

Veri artırmaya bir örnek nedir?

40 kedi ve köpek görselinden oluşan bir veri setiniz varsa, bunları yatay ve dikey olarak rastgele çevirerek yeni görsel kopyaları oluşturabilir ve eğitim setini iki katına çıkarabilirsiniz.

Birkaç veri artırma tekniği nelerdir?

Görüntü artırma söz konusu olduğunda, rastgele çevirme, kırpma, döndürme, yakınlaştırma, yeniden boyutlandırma, esnetme ve afin dönüşümler uygulayabilirsiniz. Ayrıca doygunluğu, parlaklığı, kontrastı, keskinliği değiştirebilir veya gürültü ekleyebilirsiniz.

CNN'de veri artırma nedir?

Evrişimsel sinir ağlarının (CNN) performansı, eğitim verisi arttıkça iyileşir. CNN'ler geçiş, bakış açısı, boyut ve aydınlatmaya karşı değişmezdir ve veri artırma ile iyi çalışır.

Konular

Öne Çıkan Kurslar

Kurs

Working with Geospatial Data in Python

4 sa
17.4K
This course will show you how to integrate spatial data into your Python Data Science workflow.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow