• 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

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

Emre İnaç by Emre İnaç
Temmuz 26, 2021
in Yapay Zeka
10 min read
2
Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)
WhatsApp'ta PaylaşTwitter'da PaylaşLinkedIn'de PaylaşTelegram'da Paylaş

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 kılavuzdur. Yolo modelinin, yerel makinelerde eğitilmesi işleminin bir hayli zorlu olması sebebiyle Google Colab üzerinde eğitilmesini ele alacağız. Google Colab, geliştiriciye tahsis edilen gelişmiş ücretsiz GPU kullanma avantajı da sağlar. Buna rağmen yine de modelin eğitim hızını daha da artırabilmek adına Yolov4’e göre daha kısıtlı ama hızlı sonuç veren Yolov4-tiny’i kullanacağız. Bu makale sayesinde pek çok kişinin nesne algılama ve nesne sınıflandırma alanında ufkunu genişletebileceğini umuyorum.

-YOLOv4 ( You only look once) Nedir ?

YOLOv4, Nisan 2020’de yayınlanan ve COCO veri setinde son teknoloji performansa ulaşan gerçek zamanlı bir nesne algılama modelidir.

Nesne algılama görevini iki parçaya bölerek çalışır; 

  • Sınırlayıcı kutular aracılığıyla nesne konumlandırmasını tanımlamak için regresyon
  • Nesnenin sınıfını belirlemek için sınıflandırma.

Yolov4’ü kullanarak, Yolo ailesindeki geçmiş araştırma katkılarının birçoğu, yeni özellikler de dahil olmak üzere Yolov4’e özgü bir dizi yeni katkı ile birlikte uygulanabilir: WRC, CSP, CmBN, SAT, Mish aktivasyonu, Mozaik veri büyütme, CmBN, DropBlock düzenlemesi ve CIoU kaybı. Kısacası, Yolov4 ile daha iyi bir nesne algılama ağ mimarisi ve yeni veri büyütme teknikleri kullanılabilir.

-YOLO Mimarisi

1

PART 1 – YOLOv4-tiny ORTAMI İÇİN GEREKLİ DÜZENLEMELER

  • İlk olarak Google Colab üzerinde yeni bir notebook dosyası açın.
  • Menü çubuğu üzerindeki “Runtime” sekmesi altından “Change runtime type” a tıklayın ve “Hardware accelerator” seçeneğini GPU olarak değiştirip kaydedin.

2

Daha sonra notebook üzerinde aşağıdaki adımları sırasıyla gerçekleştirin.

1 –  Darknet çerçevesini aşağıdaki şekilde github reposu üzerinden Colab ortamınıza klonlayın.

!git clone https://github.com/AlexeyAB/darknet

3

2 –  Drive üzerinde ‘Yolov4-tiny’ ve ‘training’ adında klasörleri oluşturun.

4

3-  Özelleşmiş Algılayıcı (Custom Detector) için gerekli olan aşağıdaki dosyaları oluşturun ve drive’a yükleyin

  • Daha önceden etiketlendirilmiş, özel veriseti
  • Özel cfg dosyası
  • obj.data ve obj.names dosyaları
  • process.py ( train.txt ve test.txt dosyalarını oluşturmak için gerekli script)


    3.a – Verisetini Etiketlendirme
    Tensorflow kütüphanesine ait LabelImg adlı etiketleme aracını kullanarak etiketleme işlemini gerçekleştireceğin. LabelImg aracının kurulumu için gerekli rehbere bu https://ai.yemreak.com/tensorflow-object-detection-api/labelimg-kurulumu üzerinden ulaşabilirsiniz.

Elimizdeki bir otomobilin, uyarı ışıklarının mevcut olduğu gösterge paneline ait örnek görüntü verisi üzerinde etiketlendirme işlemini gösterecek olursak;

5

Etiketlendirme yapılırken sol taraftan çıktı formatı olarak PascalVOC yerine Yolo seçilmelidir. Etiketlendirme işleminden sonra aşağıdaki şekilde kaydettiğimizde bize Yolov4-tiny ile model eğitimi için gerekli olan fotodaki uyarı ışıklarının sınıf bilgilerini ve etrafında çizdirmiş olduğumuz sınırlandırıcı dikdörtgenlere ait koordinat bilgisini içeren ‘<image_name>.txt’ adlı bir çıktı üretecektir. 

6İlk olarak train için kullanılacak görüntü verisi ve Yolo formatındaki etiketlerin bulunduğu görüntüler ile aynı isimdeki txt dosyaları “obj” adında bir klasöre taşınır ve bu dosya “.zip” uzantısı olacak şekilde sıkıştırılarak “Yolov4-tiny” klasörüne yüklenir.

UYARI *** Yolo algoritması, sadece “.jpg” uzantılı görüntü verilerini kabul etmektedir. Bu sebeple “.png”,”.jpeg” ve hatta ”.JPG” uzantılı görüntü verileri uygun formata dönüştürülmelidir.

    3.b) Özel “cfg” Dosyasının Düzenlenmesi

Github üzerinden daha önce klonlanan Darknet çerçevesi altındaki cfg klasöründen “Yolov4-tiny-custom.cfg” dosyasında aşağıdaki değerler aynı şekilde düzenlenip ve “Yolov4-tiny” kök dizinine taşınmalıdır.

  • batch = 64
  • subdivisions = 16
  • max_batches = (sınıf nesne sayısı * 2000)
  • steps = max_batches değeri * 0.8, max_batches değeri * 0.9
  • her bir [Yolo] katmanındaki classes değeri sınıf nesne sayısı ile değiştirilmelidir.
  • Yine aynı şekilde her bir [Yolo] katmanı öncesindeki [convolutional] katmanı altındaki filters değeri ((sınıf nesne sayısı + 5) * 3) olarak yani 10 sınıf olduğunu varsayarsak “45” olarak değiştirilmelidir.

     

c) “obj.data” ve “obj.names” Dosyalarının Oluşturulması

Bir txt dosyası aşağıdaki şekilde oluşturulup “obj.data” ismiyle kaydedilip yine aynı şekilde “Yolov4-tiny” dizinine yüklenmelidir.

classes = (sınıf nesne sayısı)
train  = data/train.txt
valid  = data/test.txt
names = data/obj.names
backup = /mydrive/Yolov4-tiny/training/

“obj.names” dosyası da “obj.names” gibi aynı şekilde oluşturulup içerisine eğitimde kullanılacak olan etiketlenmiş görüntü verilerindeki bütün sınıf nesnelerinin isimleri etiketleme sonucunda üretilen id değerlerinin sırasına göre yazılıp, “Yolov4-tiny” klasörüne yüklenmelidir

d) “process.py” scripti kullanılarak “train.txt” ve “test.txt” Dosyalarının Oluşturulması

  Bu script etiketlendirilmiş görüntü verisini öntanımlı %80 train ve %20 test olacak şekilde train ve test verisetlerine ayırmak için kullanılır. Dilerseniz bir kod editörü yardımıyla ayırma oranını kendiniz de belirleyebilirsiniz. Bu dosya da diğer dosyalar gibi “Yolov4-tiny” klasörüne yüklenmelidir. “process.py” içeriği aşağıdaki gibidir.

import glob, os

# Current directory

current_dir = os.path.dirname(os.path.abspath(__file__))

print(current_dir)

current_dir = 'data/obj'

# Percentage of images to be used for the test set

percentage_test = 20;

# Create and/or truncate train.txt and test.txt

file_train = open('data/train.txt', 'w')

file_test = open('data/test.txt', 'w')

# Populate train.txt and test.txt

counter = 1

index_test = round(100 / percentage_test)

for pathAndFilename in glob.iglob(os.path.join(current_dir, "*.jpg")):
    title, ext = os.path.splitext(os.path.basename(pathAndFilename))
    
    if counter == index_test:
        counter = 1
        file_test.write("data/obj" + "/" + title + '.jpg' + "\n")

    else:
        file_train.write("data/obj" + "/" + title + '.jpg' + "\n")
        counter = counter + 1

Günün sonunda drive üzerindeki “Yolov4-tiny” dizini şu şekilde olmalıdır.

7

4) Google Colab ile Drive Bağlantısının Kurulması

  • Drive’ın Colab’a Monte Edilmesi

8

  • Drive İçin Sembolik Link Oluşturma

9

Bu komutun çalıştırılması ile artık “/content/gdrive/My\ Drive/” dizinine dosya yolu “/mydrive” dosya yoluna eşitlendirilmiş olur.

5) Makefile Dosyasını Düzenleyip OPENCV ve GPU ‘nun Aktifleştirilmesi

10

6) Darknet Paketinin Make Komutu ile Derlenmesi

11

7) “Yolov4-tiny” Dizinindeki Dosyaların Darknet Dizinine Kopyalanması

Buraya kadar sırasıyla yapılan işlemler sonrasında Colab da çalışma dizini olarak şu an “/content/darknet” olarak ayarlıdır.

“darknet” dizini altındaki “labels” dosyası hariç olmak üzere “data” dizini içindeki bütün dosyalar aşağıdaki komutlar yardımıyla silinir ve “cfg” dizini yeniden oluşturulur.

12

Bu işlemlerden sonra artık “Yolov4-tiny” dizininde yedeklenen daha önce oluşturulmuş eğitim için gerekli düzenlemeler Colab ortamına kopyalama yoluyla aktarılır. Bu işlemlerde aşağıdaki şekilde sırasıyla yapılmalıdır.

13

8) process.py Scriptinin Çalıştırılması ve Train – Test Verisetlerinin Oluşturulması

14

9) Daha Önceden Eğitilmiş YOLOv4-tiny Modelinin İndirilmesi

Yolo ile özel nesne algılayıcı modeli eğitilirken, daha önceden eğitilmiş bir model “transfer learning” yöntemi ile kullanmak üzere aşağıdaki şekilde indirilmelidir.

15

10) Özelleşmiş Nesne Algılayıcı Modelinin Eğitilmesi

Nihayet, eğitim için gerekli olan bütün hazırlıkları bitirip artık modelin eğitimine başlanılabilir.

Eğitim işlemi sınıf nesnesi sayısına bağlı olarak uzayabilir bu sebeple en iyi skor için “average loss” metriği gözlemlenmeli ve eğer ki “0.05” değerinin altına indiği ve o değer bandında sabit kaldığı gözlemleniyorsa eğitim durdurulabilir.

Ortalama hassasiyet skoru ya da mAP olarak bilinen metrik, eğitilen modelin başarısı hakkında ortalama bir değer sunar. Bu değer ne kadar yüksek olursa model o kadar kaliteli bir eğitimden geçirilmiş anlamı taşır. Eğitim işlemini başlatmak için aşağıdaki komutlar kullanılır.

16

Bağlantınız koparsa veya oturumunuzu kaybederseniz, modelinizi yeniden eğitmeye baştan başlamanız gerekmez. Eğitime kaldığınız yerden yeniden başlayabilirsiniz. En son kaydedilen ağırlıkları kullanın. Ağırlıklar, drive üzerinde “Yolov4-tiny/training” klasörüne her 100 epoch’da bir “yolov4-tiny-custom_last.weights” olarak kaydedilir. (“obj.data” dosyasında yedek olarak verdiğimiz yol).

Bağlantıyı yeniden başlatmak için aşağıdaki komut kullanılır.

17

UYARI Zaman aşımına bağlı olarak, Colab bağlantısının kopmasını önlemek amacıyla tarayıcı konsolu üzerinde küçük bir javascript kod parçası kullanılabilir. Bu kod parçasının çalışması için  “Ctrl + Shift + i” klavye kısayolunu kullanarak tarayıcı konsolunu açılmalı ve en alt satıra kod parçasını yapıştırıp “Enter” tuşuna basılmalıdır.

 

18

11) Modelin Performansının Kontrol Edilmesi

Eğitim işlemi sonrasında elde edilen sonuçların test verileri üzerinde görselleştirilmesi için aşağıdaki yardımcı fonksiyon kullanılır.

19

Eğitim durdurulduktan sonra, modelin en son kalınan noktadaki ortalama hassasiyet skoruna aşağıdaki komut ile erişilebilinir. Komut üzerindeki “xxxx” yazan kısımda her 100 epoch’da yedeklenen modelin en son hangi epoch’da yedeklendiğine ait bilgi yazılmalıdır.

Ayrıca her 1000 epoch’da bir en iyi mAP skorunun elde edildiği eğitim aşaması da “Yolov4-tiny-custom_best.weights” ismiyle yedeklenir.

20

12) Eğitilen Özelleşmiş Nesne Algılayıcı Modelinin Test Edilmesi

Öncelikle “cfg” dosyası altına daha önceki aşamalarda kopyalanan “Yolov4-tiny-custom.cfg” dosyasında test işlemi için bir takım değişiklikler yapılır. Sonrasında bir test verisi kullanılarak model test edilir.

21

Sonuç olarak çıktı aşağıdaki gibi olacaktır:

22

 

einac
Tags: Makine ÖğrenimiYapay ZekaYolo
SendTweet20Share5Share
Önceki Gönderi

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

Sonraki Gönderi

Google Cloud Teknolojileri

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

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

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

by Ali Murat Çevik
Eylül 12, 2022
0

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

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

Next Post
Google Cloud Teknolojileri

Google Cloud Teknolojileri

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

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

Yorumlar 2

  1. uğur says:
    3 sene ago

    process.py dosyasında pathandfile kısmına kendi dosya yolumuzu mu yazacağız veya neyin dosya yolunu yazacağız yoksa öyle mi kalacak

  2. ismail says:
    3 sene ago

    Sınıf nesne sayısı dediğiniz tam olarak ne oluyor.

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