• Hakkımızda
  • Bize Katıl
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilişim - Teknoloji - Blog
  • 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ı | Bilişim - Teknoloji - Blog
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
SendTweet5Share1Share
Önceki Gönderi

SOC Sistemler Üzerine Faydalı Notlar

İlgili Yazılar

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...

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)

by Emre İnaç
Temmuz 26, 2021
2

Bu makale, YOLO v4 teknolojisini kullanarak özelleşmiş nesne algılama ve nesne sınıflandırma için izlenmesi gereken işlemleri adım adım anlatan bir...

Makine Öğrenimi İçin Veri Artırımı (Data Augmentation)

Makine Öğrenimi İçin Veri Artırımı (Data Augmentation)

by Emre İnaç
Temmuz 23, 2021
0

Görüntü verisi büyütme, veri kümesinde görüntülerin değiştirilmiş versiyonlarını oluşturarak eğitim veri kümesinin boyutunu yapay olarak genişletmek için kullanılan bir tekniktir....

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

  • 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
Splash Screen Yapımı #Flutter

Splash Screen Yapımı #Flutter

Mayıs 25, 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
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
VGG-19 Transfer Learning ile Görüntü Sınıflandırma

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

Eylül 12, 2022
SOC Sistemler Üzerine Faydalı Notlar

SOC Sistemler Üzerine Faydalı Notlar

Eylül 2, 2022
Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

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

Ağustos 23, 2022
Makine Öğrenimi Nedir?

Makine Öğrenimi Nedir?

Ağustos 4, 2022

Reklam

Yazılım Karavanı | Bilişim – Teknoloji – Blog

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.