Pascal VOC Data Setleri ile YOLO Modeli Eğitim Aşamaları

meyraaslihan
Dec 2, 2020 · 3 min read
Image for post
Image for post
Fotoğraf üzerinden insan tespiti yapıldığına dair bilgisayar görüntüleri

Görsel üzerinde tespit edilen nesneler dışında, tespit edilmesi gereken daha spesifik nesneler de bulunabilir bu gibi durumlarda kendi veri setimiz ile model eğitim işlemi gerçekleştirmeliyiz.

Pascal VOC Data Setleri ile YOLO Modeli Nasıl Eğitilir ?

Farklı kişi ve nesneleri tespit etmek için YOLO modelini sıfırdan eğitme kararı aldım. Eğitim işleminden önce kendi veri setlerimiz ile birleştirilmesi gereken üzerine eklenecek veri setleri bulunuyordu ve Pascal VOC veri kümesi bunlardan birisiydi.

Pascal VOC Verilerini Alınması

YOLO’yu eğitmek için 2007'den 2012'ye kadar tüm VOC verilerine ihtiyacımız var. Verileri cihazımıza indirmek ve hepsini depolamak için bir dizin oluşturalım ve bu dizin içerisinde aşağıdaki komutlar çalıştıralım:

Image for post
Image for post
Yolo Uygun Format

Bu işlemlerden sonra VOC eğitim verilerinin bulunduğu bir VOCdevkit/ alt dizini oluşturulmuş olmalı.

VOC İçin Etiket Oluşturma İşlemi

Bu işlemde Darknet’in kullandığı etiket dosyalarını oluşturmamız gerekiyor. Darknet, görüntüdeki her zemin gerçeği nesnesi için bir çizgi içeren her görüntü için bir .txt dosyası istiyor:

<object-class> <x> <y> <genişlik> <yükseklik>

Uygun format bu şekilde olmalıdır. Burada x, y, genişlik ve yükseklik görüntünün genişliğine ve yüksekliğine göredir. Bu dosyayı oluşturmak için voc_label.py betiğini Darknet’in script/ dizininde çalıştıracağız. Aşağıdaki komut kullanılarak voc_label.py dosyasını indirelim.

Image for post
Image for post
voc_label.py dosyası indirilir ve çalıştırılır

Python script dosyası birkaç dakika çalıştıktan sonra bu komut dosyası gerekli tüm dosyaları oluşturur. Bu oluşturulan çoğunlukla VOCdevkit/VOC2007/labels/ ve VOCdevkit/VOC2012/labels/ dizinlerinde çok sayıda etiket dosyası oluşturur. Oluşturulan dizinler aşağıda da yer almaktadır:

Image for post
Image for post
Oluşturulan dizinler

2007_train.txt gibi metin dosyaları, o yıl için resim dosyalarını ve resim kümesini listeler. Darknet’in üzerinde train yapmak istediğiniz tüm resimlerin bulunduğu bir metin dosyası gerekir. Bu çalışmada modeli test edebilmemiz için 2007 test seti dışındaki her şeyle çalıştırılmalıdır.

Image for post
Image for post
Oluşturulan dizinler

Şimdi 2007 train verileri ve 2012 train verilerine tek bir büyük listede sahip olmuş olduk.

.data Dosyasında Kişiselleştirme

Eldeki Pascal verilerine göre CFG dosyasında değişiklikler yapılması gerekir. Darknet dizininize gitmelisiniz. Verilerinize işaret etmek için cfg/voc.data config dosyasını değiştirilmesiniz:

Image for post
Image for post

<path-to-voc> yazan yeri VOC verilerinin koyulduğu dizin yolu ile değiştirmeliyiz.

.cfg Dosyasında Kişiselleştirme

yolov3-voc.cfg dosyasında bazı değişiklikler yapalım.

  1. Batch değeri aynı anda kaç resmin işleme gireceğini belirler bu değeri batch=64 olarak değiştirelim.
  2. Subdivisions değeri resmin işleme girdiği sırada kaç parçaya bölüneceğini ifade eder. Bu değeri subdivisions=8 olarak değiştirelim.
  3. max_batches değerini “class sayısı * 2000” olacak şekilde değiştirilir. Fakat bu değer 4000’den az olamaz. Proje örneğinde 22 * 2000 = 44000 olarak değiştirildi.
  4. steps değeri max_batches değerinin %80 ve %90 değerleri olacak şekilde değiştirilmesi gerekir. Proje örneğinde steps=35200,39600 olarak değiştirelim.
  5. class=80 değerleri, her 3 [yolo] katmanındaki nesnelerin sayısına göre değiştirilir. Bu proje de bu değeri 22 olarak değiştirdim.
  6. Her [yolo] katmanından önceki 3 [convolutional] ‘de [filters = 255]’ i filters = (class sayısı + 5) x3 olarak değiştirilir. Projedeki bu değeri 81 olarak değiştirdim.

Sonuç olarak bu değişiklikleri gerçekleştirdikten sonra dosyayı kaydedelim.

.names Dosyasında Kişiselleştirilmesi

yolov3-voc.names dosyasının sonuna sonradan eklenecek olan etiketleri yerleştirelim. Bu dosyada yapılacak değişiklikler bu kadardır.

Yarı Eğitilmiş Konvolüsyon Ağırlık Dosyalarının Elde Edilmesi

Projede model eğitimi için Imagenet’te önceden yarı eğitilmiş evrişimli ağırlıkları kullandım. Darknet53 modelindeki ağırlıkları kullandım. Konvolüsyon katmanlarının ağırlıklarını aşağıdaki komutları kullanarak indirebilirisiniz.

Image for post
Image for post
Yarı eğitilmiş konvolüsyon ağırlık dosyası indirilir

Bu işlemden bir sonraki aşama ise Google Colab ile Train İşlemi aşamasıdır. Ayrıntıları ile birlikte sonraki yazımda bu aşamayı göreceğiz.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store