• Hakkımızda
  • Yazı Gönder
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
No Result
View All Result
Home Yapay Zeka

VGG-19 Transfer Learning ile Görüntü Sınıflandırma

Ali Murat Çevik by Ali Murat Çevik
Eylül 12, 2022
in Yapay Zeka
5 min read
0
VGG-19 Transfer Learning ile Görüntü Sınıflandırma
WhatsApp'ta PaylaşTwitter'da PaylaşLinkedIn'de PaylaşTelegram'da Paylaş

VGG19 Nedir?

VGG19, adını Oxford Üniversitesi’nde bulunan “Visual Geometry Group” isimli gruptan almaktadır. Sonda bulunan 19 ise katman sayısını belirtmektedir. VGG19, içerisinde 16 convolution, 3 full connected layer, 5 MaxPool ve 1 SoftMax katmanı yer almaktadır. VGG19, 19,6 milyar flop’a sahiptir. Ayrıca VGG’nin VGG11, VGG16 gibi farklı çeşitleri de bulunmaktadır. 

VGG’nin detaylarına inmeden önce ImageNet ve CNN hakkında ufak bir bilgilendirme yapmak isterim.

ImageNet

WordNet’e göre hazırlanmış ve yaklaşık 14 Milyon görselden oluşan herkese açık bir hazır veritabanıdır. Görüntü işleme üzerine çalışma yapacak bireylere yardımcı olması amacıyla oluşturulmuştur. 

Convolutional Neural Network (CNN)

Makine öğrenimi alanındaki en temel işlerden biri olan görüntü üzerindeki özelliklerin çıkarılması ve tanımlanmasını sağlayan sinir ağıdır. Object detection (nesne tespiti), image classification (görüntü sınıflandırma) gibi pek çok alanda CNN yaygın olarak kullanılmaktadır.

vgg 19
dataset_dir=glob("/content/drive/MyDrive/Dataset/*/*/*")

for idx,data in enumerate(dataset_dir):
  label = data.split('/')[-3] + ' ' + data.split('/')[-2]

  try:
    print("*" * 20 + "Iter: " +str(idx) + "*" * 20)
    img = cv2.imread(data)
    img_fromarray = Image.fromarray(img,"RGB")
    img_resized = img_fromarray.resize((128,128))
    img_np = np.array(img_resized)
    images.append(img_np)
    labels.append(label)

  except Exception as e:
    print(f"{e} Error in {label +'/'+data.split('/')[-1]}")

Veri seti tek bir parçadan oluşuyor. Veriyi split ederek train, test ve validation olarak 3’e bölelim:

#Split Data (Train, Test, Validation)
x_train,x_test,y_train,y_test = train_test_split(images,labels_ohe,test_size=0.33,random_state=77)
x_test,x_val,y_test,y_val = train_test_split(x_test,y_test,test_size=0.75,random_state=77)

Modeli yükleyelim:

myVgg = VGG19(
    input_shape=(128,128,3),
    weights='imagenet',
    include_top=False) 

Katmanları ekleyelim

model = Sequential()
model.add(myVgg)
model.add(BatchNormalization())
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5)) #Katmanlar arası delay
model.add(Dense(classesNum , activation='softmax'))
print (model.summary())

Modelimizi compile edelim:

model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['accuracy'])

Deneme – yanılma yoluyla accuracy oranını artırmaya yönelik birden fazla kez eğitimi baştan yapacağımız için .h5 uzantılı model dosyalarımızın isimlendirilmesinde tarih ve zamandan faydalanabiliriz.

checkpoint = ModelCheckpoint(
    f'/content/drive/MyDrive/VGG-Modellerim/MyVgg19Option{datetime.datetime.now()}.h5', 
     monitor='val_accuracy',
     verbose=1,
     save_best_only=True
)

Eğitim aşamasında overfitting durumuna girilmesi istenmeyen bir durumdur. Early Stop ile bunun gibi istenilmeyen durumlarda eğitimin sonlandırılmasını sağlayabiliriz. Overfitting hakkında detaylı bilgi için “Makine Öğreniminde Aşırı Öğrenme (Overfitting) Durumu” yazısının okuyabilirsiniz. 

Early Stop ayarımızı da patience 5 olacak şekilde yaparak son aşamaya gelelim.

earlystop = EarlyStopping(monitor='val_accuracy', patience=5 , verbose=1)

En heyecanlı kısım: Eğitime başlayabiliriz 🚀

batch_size’ı 64 vererek 5 epoch ile eğitmeyi deneyimleyelim:

result = model.fit(x_train, y_train, batch_size=64, validation_data=(x_val, y_val), epochs=5, verbose=1 , callbacks=[checkpoint,earlystop])

train1

Epochların tamamlanma süreleri zaman zaman uzayabilmekte ancak bu model için verilen parametreler ile hızlı bir şekilde ilerledi. İlk epochda 0.7150 validasyon accuracy elde validasyon los değerinin 1.5171 olduğunu görmekteyiz. Bu iki değerin her epochdaki değişimini inceleyecek olursak değerlerin artma – azalma ve tekrar artma eğiliminde olması istediğimiz sonucu sağlıklı olarak alamayacağımızı göstermektedir.

Bu aşamadan sonra yapılması gereken işlem parametreler ile oynayarak eğitim sürecini stabil ilerletmeye çalışmak olacaktır. Bunun için random_state değerini 50 yaparak tekrar eğitim gerçekleştirdim.

train2

İstenilen tutarlılığa eriştik ancak accuracy değerinin çok yüksek olması dikkat çekiyor. Bunun sebebi veri setinin homojen olmaması olabilir. Şu an için önemli olan nokta val_accuracy ve val_loss değerleri olduğu için veri setinin iyileştirilmesi ile ilgili çalışmaların yapılması ilerleyen dönemde yapılmalıdır. 

Kaynaklar:
https://iq.opengenus.org/vgg19-architecture/
https://medium.com/mlearning-ai/image-detection-using-convolutional-neural-networks-89c9e21fffa3 

Ayrıca Bakınız:
https://keras.io/api/applications/vgg/
Thank you https://medium.com/@melisabardhi

 

alim cevik
Tags: CNNGörüntü SınıflandırmaMakine ÖğrenimiYapay Zeka
SendTweet9Share3Share
Önceki Gönderi

SOC Sistemler Üzerine Faydalı Notlar

Sonraki Gönderi

Telefonlarımız Bizi Dinliyor Peki Ama Nasıl?

İlgili Yazılar

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

by Yazılım Karavanı
Şubat 10, 2025
0

Dijital dünyada her gün milyonlarca veri üretilirken, bireyler ve markalar hakkında yapılan yorumlar, haberler ve paylaşımlar büyük bir bilgi havuzu...

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

by Ali Murat Çevik
Haziran 27, 2023
0

Son zamanların popüler araçlarının çoğunlukla yapay zeka tabanlı olduğunu görmekteyiz. Bu tür sistemlerle ilk defa tanışanlar henüz ChatGPT’ nin verdiği...

Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

by Emre İnaç
Ağustos 23, 2022
0

CHATBOT NEDİR ? Chatbot, bir cihazda, (Siri, Alexa, Google Asistan vb.), uygulamada, web sitesinde veya diğer ağlarda bulunan yapay zeka...

Makine Öğrenimi Nedir?

Makine Öğrenimi Nedir?

by Emre İnaç
Ağustos 4, 2022
0

Makine Öğrenimi (ML), Yapay Zeka(AI)’ nın bir alt sınıfıdır. Makine öğrenimi; insana ait akıllı karar verme ve tahmin davranışlarını taklit...

Makine Öğreniminde Aşırı Öğrenme (Overfitting) Durumu

Makine Öğreniminde Aşırı Öğrenme (Overfitting) Durumu

by Ali Murat Çevik
Eylül 10, 2021
0

Merhabalar, bu yazıda makine öğrenimi alanında sıkça karşılaşılan aşırı öğrenme (overfitting) - ezber problemine değineceğim. “Aşırı öğrenme (overfitting) nedir?”, “Nasıl...

Next Post
Telefonlarımız Bizi Dinliyor Peki Ama Nasıl?

Telefonlarımız Bizi Dinliyor Peki Ama Nasıl?

Risk Yönetimi ve Tehdit Modelleme

Risk Yönetimi ve Tehdit Modelleme

  • Popüler
  • Yorumlar
  • En Yeniler
Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Temmuz 26, 2021
B Ağaçları (B Trees)

B Ağaçları (B Trees)

Ağustos 24, 2020
Gini Index Kullanılarak Karar Ağacının (Decision Tree)  Oluşturulması

Gini Index Kullanılarak Karar Ağacının (Decision Tree) Oluşturulması

Ağustos 20, 2020
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

Mayıs 18, 2018
2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

6
Magento 2 Detaylı Kurulum & Hatalar

Magento 2 Detaylı Kurulum & Hatalar

5
Flutter’da TFLite Kullanımı

Flutter’da TFLite Kullanımı

4
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

2
Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Mart 19, 2025
Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Mart 10, 2025
Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Şubat 10, 2025
OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

Aralık 14, 2024

Reklam

Yazılım Karavanı | Bilim – Teknoloji – Mühendislik

Bilgi Teknolojileri alanına meraklı herkesin buluşma noktası!

No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar

© 2020 Yazılım Karavanı Kaynak gösterilmesini rica ederiz.