PIL Görüntülerini PyTorch Tensörlerine Dönüştürme ve Ölçeklendirme
Merhaba, Fatih Soysal burada! Bu makalede, PIL (Pillow) kütüphanesi ile oluşturulmuş görüntülerin PyTorch tensörlerine nasıl dönüştürüleceğini ve ölçekleneceğini adım adım açıklayacağız. PyTorch, derin öğrenme modelleri için popüler bir kütüphane ve görüntü işlemede sıkça kullanılır. Bu nedenle, PIL görüntülerini PyTorch ile uyumlu hale getirmek, derin öğrenme projelerinizde olmazsa olmaz bir adımdır. Öncelikle, gerekli kütüphaneleri içe aktararak başlayalım. Daha sonra, PIL görüntülerinin PyTorch tensörlerine dönüştürülmesi ve ölçeklendirilmesi için çeşitli yöntemleri inceleyeceğiz. Sonrasında da birkaç pratik örnek üzerinde bu işlemleri uygulayacağız.
Gerekli Kütüphanelerin İçe Aktarılması
Başlamadan önce, PyTorch ve Pillow kütüphanelerinin kurulu olduğundan emin olun. Bunları pip install torch pillow komutu ile kurabilirsiniz. Ardından, kütüphaneleri kodumuza içe aktarmalıyız:
import torch
from PIL import Image
PIL Görüntüsünü PyTorch Tensörüne Dönüştürme
Bir PIL görüntüsünü PyTorch tensörüne dönüştürmek oldukça basittir. Öncelikle, PIL ile bir görüntü yükleyin. Sonrasında, torch.from_numpy() fonksiyonunu kullanarak numpy dizisine, ardından da torch.Tensor() fonksiyonunu kullanarak PyTorch tensörüne dönüştürebiliriz. Ancak, bu dönüşümden önce dikkat etmemiz gereken birkaç nokta var. Özellikle, görüntünün renk kanallarının sırasının PyTorch ile uyumlu olması önemlidir. PyTorch genellikle ‘CHW’ (kanal, yükseklik, genişlik) formatını beklerken, PIL ‘HWC’ (yükseklik, genişlik, kanal) formatını kullanır. Bu nedenle, dönüşüm öncesinde kanalların sırasını değiştirmeniz gerekebilir.
pil_image = Image.open("image.jpg") # Görüntüyü yükleyin
numpy_image = np.array(pil_image) # Numpy dizisine dönüştürün
# Renk kanallarının sırasını değiştirin (HWC -> CHW)
numpy_image = np.transpose(numpy_image, (2, 0, 1))
# PyTorch tensörüne dönüştürün
pytorch_tensor = torch.from_numpy(numpy_image)
Görüntü Ölçeklendirme
Görüntüleri derin öğrenme modelleriyle kullanmadan önce genellikle ölçeklendirmek gerekir. Bu, modelin performansını artırmaya yardımcı olur. PyTorch’te, tensörün her bir değerini 255’e bölerek görüntüyü [0, 1] aralığına ölçeklendirebiliriz. Bu, görüntünün piksel değerlerini 0 ile 1 arasında normalize eder.
# Görüntüyü [0, 1] aralığına ölçeklendirin
pytorch_tensor = pytorch_tensor.float() / 255.0
Ayrıca, torchvision.transforms kütüphanesini kullanarak daha gelişmiş dönüşümler uygulayabilirsiniz. Örneğin, resimleri yeniden boyutlandırmak, kırpmak veya rastgele döndürmek için bu kütüphaneden faydalanabilirsiniz. Bu yöntem, daha esnek ve daha kontrol edilebilir bir dönüşüm sunar. Daha fazla bilgi için PyTorch torchvision.transforms dökümanına göz atabilirsiniz.
Örnek Uygulama
Şimdi, bu adımları bir araya getiren basit bir örnek uygulama yapalım:
import torch
from PIL import Image
import numpy as np
pil_image = Image.open("image.jpg")
numpy_image = np.array(pil_image)
numpy_image = np.transpose(numpy_image, (2, 0, 1))
pytorch_tensor = torch.from_numpy(numpy_image).float() / 255.0
print(pytorch_tensor.shape)
print(pytorch_tensor.dtype)
Bu kod, “image.jpg” adlı bir görüntüyü yükler, PyTorch tensörüne dönüştürür ve [0, 1] aralığına ölçeklendirir. Son olarak, tensörün şeklini ve veri tipini yazdırır. Bu örnek, PIL görüntülerinin PyTorch ile nasıl kullanılacağına dair temel bir anlayış sağlar. Daha karmaşık uygulamalar için, torchvision.transforms kütüphanesini kullanarak daha fazla dönüşüm ekleyebilirsiniz. Daha fazla bilgi ve derin öğrenme projeleriniz için web sitemi ziyaret edebilirsiniz.
#Etiketler: PIL, PyTorch, Görüntü İşleme, Tensör, Dönüştürme, Ölçeklendirme, Derin Öğrenme, Python, Pillow, torchvision.transforms, Image.open, torch.from_numpy, numpy.transpose