Giriş: VGG16 Nedir?
VGG16, 2014 yılına ait bir derin öğrenme modelidir ve özellikle görüntü sınıflandırma görevleri için popüler bir seçimdir. Oxford Üniversitesi’ndeki Visual Geometry Group tarafından geliştirilmiştir. VGG16, derin yapılandırması sayesinde karmaşık görüntüleri anlamada etkili bir performans sunar. Toplamda 16 katman derinliği olan model, basit bir mimariye sahiptir ve konvolüsyonel katmanlar kullanarak görsel özellikleri öğrenir.
VGG16’yı diğer modellerden ayıran en önemli özellik, çok katmanlı yapısıdır. Model, 3×3 boyutunda filtrelerle konvolüsyon işlemleri gerçekleştirirken, her katmandan sonra aktivasyon fonksiyonu ve max pooling işlemleri uygular. Sonuç olarak, model derinlik kazanırken, daha soyut özellikleri öğrenme yeteneği de artar.
Bu yazıda, VGG16 modelinin Python ile nasıl kullanılacağına dair bir yol haritası sunacağım. Kütüphanelerin kurulumu, verilerin hazırlanması, modeli oluşturarak eğitim sürecine geçiş yapacağız. Adım adım ilerleyerek, VGG16’yı kendi projelerinizde nasıl kullanabileceğinizi göstereceğim.
Gerekli Kütüphanelerin Kurulumu
VGG16 modelini kullanmak için öncelikle gerekli Python kütüphanelerini kurmalıyız. Genellikle, TensorFlow ve Keras kütüphaneleri bu tür projelerde sıklıkla tercih edilir. TensorFlow, çeşitli derin öğrenme uygulamalarını kolaylıkla geliştirmenizi sağlar. Keras ise TensorFlow üzerinde çalışan yüksek seviyeli bir API’dir ve modeller oluşturmayı, eğitmeyi ve değerlendirmeyi oldukça kolay hale getirir.
Kütüphaneleri kurmak için terminal veya komut istemcisine şu komutları yazabilirsiniz:
pip install tensorflow keras numpy matplotlib
Kurulum tamamlandıktan sonra, kullanacağımız kütüphaneleri projemize dahil etmek için gerekli import ifadelerini yazmalıyız. VGG16 modelini ve gerekli yardımcı kütüphaneleri şu şekilde dahil edebilirsiniz:
import tensorflow as tf
from tensorflow.keras.applications import VGG16
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.models import Model
import numpy as np
import matplotlib.pyplot as plt
Verilerin Ön İşlenmesi
VGG16 modelini kullanmadan önce, verilerimizin uygun bir formatta olması gerekir. Genellikle, görüntüler belirli bir boyuta dönüştürülmeli ve normalleştirilmelidir. VGG16 için standart görüntü boyutu 224×224 pikseldir. Ayrıca, görüntü verilerini normalleştirmek için her piksel değerini 255’e böleriz.
Veri seti olarak, bir sınıflandırma problemi için kullanacağımız görselleri belirlememiz gerekir. Verileri yüklemek için Keras’ın ImageDataGenerator
sınıfını kullanacağız. Bu, veri augmentasyonu uygulayarak modelin aşırı öğrenmesini önlemeye yardımcı olacaktır. Verilerinizi şu şekilde hazırlayabilirsiniz:
train_datagen = ImageDataGenerator(rescale=1./255, rotation_range=20,
width_shift_range=0.2, height_shift_range=0.2,
shear_range=0.2, zoom_range=0.2,
horizontal_flip=True)
train_generator = train_datagen.flow_from_directory(
'data/train/',
target_size=(224, 224),
batch_size=32,
class_mode='categorical'
)
Bu kod parçası, ‘data/train/’ dizinindeki görüntüleri 224×224 boyutuna getirir ve normalleştirir. Ayrıca, çeşitli veri genişletme teknikleri uygular. Kullanacağınız veri setine göre yolu güncelleyebilirsiniz.
VGG16 Modelini Oluşturma
Şimdi modelimizi oluşturalım. VGG16, Keras kütüphanesinde önceden tanımlanmış bir model olarak mevcuttur. Bu modeli kullanırken, genellikle önceden eğitilmiş ağırlıklarını (ImageNet veriseti üzerinde eğitilmiş) alarak yeni sınıflar için son katmanları değiştirmek uygundur. Şimdi VGG16 modelini şu şekilde başlatabiliriz:
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
Bu kod parçası, VGG16 modelinin üst katmanlarını (dense katmanlarını) hariç tutarak görüntü verimiz için uygun bir şekilde modelin tabanını oluşturur. include_top=False
durumu, son sınıflandırma katmanının eklenmeyeceği anlamına gelir.
Base modelimizi son katmanlarla birleştiremeyiz. Bu yüzden, yeni bir model oluşturmamız gerekir. Aşağıda, VGG16 taban modeline iki ek katman ekleyerek yeni bir model yaratıyoruz:
x = Flatten()(base_model.output)
x = Dense(256, activation='relu')(x)
x = Dense(len(train_generator.class_indices), activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=x)
Bu son katmanlar, modelimizin yeni veri seti ile eğitilmesini sağlayacak ve çıktıları uygun bir sınıf sayısına göre ayarlayacaktır.
Modeli Eğitme
Şimdi modelimizi eğitmeye hazırız. Modelin eğitim sürecinde, kayıp fonksiyonu ve optimizer seçeneğini belirlememiz gerekiyor. Genellikle sınıflandırma problemleri için categorical_crossentropy
kayıp fonksiyonu ve adam
optimizasyon algoritması yaygın olarak kullanılır.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Modelimizin derlenmesi tamamlandığında, eğitim işlemini başlatacağız. Eğitim için belirli bir dönem sayısı (epoch sayısı) ve validation data belirleyerek modelimizi eğiteceğiz. Bu, modelin ne kadar süreyle eğitileceğini belirler:
history = model.fit(train_generator, epochs=10)
Bu kod parçası, modelimizi 10 dönem boyunca eğitecektir. Eğitim sonrası, modelin performansını değerlendirmek için grafikler oluşturarak kayıp ve doğruluk değerlerini gözlemleyebiliriz.
Modeli Değerlendirme ve Sonuçlar
Eğitim süreci tamamlandıktan sonra, modelimizin doğruluğunu değerlendirmemiz gerekir. Bu işlem için validation veri setine ihtiyaç duyacağız. Modelimizin doğruluğunu ve kaybını gözlemlemek için şu kod parçasını kullanabilirsiniz:
validation_datagen = ImageDataGenerator(rescale=1./255)
validation_generator = validation_datagen.flow_from_directory(
'data/validation/',
target_size=(224, 224),
batch_size=32,
class_mode='categorical'
)
model.evaluate(validation_generator)
Model sonuçlandıktan sonra, kayıp ve doğruluk değerlerimizi ekranda görünür hale getirebiliriz. Bu bilgi, modelin ne kadar iyi sınıflandırma yaptığını değerlendirmede yardımcı olacaktır. Ayrıca, modelin eğitilmesini ve değerlendirilmesini yayımlamak amacıyla sonuçları görselleştirmek için matplotlib kütüphanesini kullanabilirsiniz.
Sonuç ve Öneriler
Bu rehberde, VGG16 modelinin Python ile nasıl kullanılacağını, veri ön işleme aşamalarını, modelin eğitim sürecini ve sonunda model değerlendirmeyi adım adım ele aldık. VGG16, güçlü bir derin öğrenme mimarisi olarak görüntü sınıflandırma projeleri için etkili bir seçimdir. Kendi projelerinizde bu modeli uygulamak, öğrenim deneyiminizi geliştirecek ve büyük veri setleriyle çalışma yeteneğinizi artıracaktır.
Modelinizi ileri seviyeye taşımak için, hiperparametre optimizasyonunu ve daha fazla veri augmentasyonu tekniklerini keşfetmeyi düşünebilirsiniz. Farklı optimizasyon algoritmalarını denemek de modelinizin performansına katkı sağlayabilir. Ayrıca, VGG16’nın performansını artırmak için transfer öğrenme yöntemlerini uygulayarak modelin eğitilmesine yardımcı olabilirsiniz.
Sonuç olarak, VGG16 ile görüntü sınıflandırma çalışmaları yaparken çeşitli adımları takip ettiğinizi unutmayın. Her aşamada dikkatli olmak, projenizin daha sağlıklı ilerlemesine yardımcı olacaktır. Unutmayın ki, pratik yapmak ve denemeler yapmak, öğrenme sürecinin en kritik parçasıdır!