Takip et

PIL Görüntülerini PyTorch Tensörlerine Dönüştürme ve Ölçeklendirme

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

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.