YOLOv3’de Örnek Uygulama ve Etiketleme

Ayla Bilgin
3 min readMay 2, 2021

--

Bu yazımızda YOLO ile bir örnek uygulama gerçekleştireceğiz.

Önce kendimiz bir veri seti oluşturmak için çeşitli şekillerde veriye uygun veriler topluyoruz. Elimizde ne kadar çok veri bulunursa doğruluk payımız o kadar artar ama ben eğitme işini çok uzun tutmamak adına az bir veri seti oluşturdum. Kuşlardan oluşan çeşitli türlerdeki resimleri indirip, labelImg adlı uygulamada etiketleme yaptım. Şimdi labelImg’i nasıl çalıştıracağımızı ve etiketlemeyi nasıl yapacağımıza geçelim.

LabelImg, görüntüleri grafik olarak etiketlemek için ücretsiz, açık kaynak kodlu bir uygulamadır. Direkt kurulum için aşağıdaki kodlar sırasıyla uygulanır.

pip3 install labelImg
veya
pip install labelImg

Çalıştırmak için labelImg yazılır. Uygulama görüntüsü aşağıdaki gibidir.

labelImg

Ardından oluşturduğumuz veri dosyamızı uygulama üzerinden açıyoruz. View kısmından ‘Auto Save Mode’ kutucuğunu işaretleyip her yaptığımız değişiklik sonrası ‘Save’ butonunu kullanıyoruz. ‘Change Save Dir’ ile oluşacak bütün dosyaların yerini belirtiyoruz. Aşağıdaki gibi ‘Create RectBox’ diyerek etiketleme işlemlerini her görüntü için yapıyoruz. Uygulamanın YOLO modunda olduğuna dikkat etmeniz gerekiyor.

Bu etiketleme işlemlerinden sonra seçtiğimiz dosya içerisinde her bir görüntü için .txt dosyaları oluşturuluyor. Bu txt dosyaları içerisine bakarsak aşağıdaki gibi bir görüntüyle karşılaşıyoruz. Yukarıdaki görüntünün txt şekli bu halde çıkıyor. 2 etiketleme yaptığımız için 1 ve 2 şeklinde iki satır oluşmuş. Bu değerler görüntünün orta noktasının x, y koordinatlardan ve uzunluk-genişliğinden oluşmaktadır.

Bu etiketleme işini bitirdikten sonra modelimizi eğitmek için işlemlere başlayabiliriz. önce oluşturduğumuz bu dosya içerisine bazı kodlar ile eklemeler yapacağız. Aşağıdaki kod ile test ve eğitim setlerimizi oluşturuyoruz.

Şimdi de eğitim setimiz için gerekli olan data dosyasını oluşturacağız. Bunu da aşağıdaki kod ile sağlıyoruz.

Bütün bunları yaptıktan sonra daha önceki yazıda bahsettiğimiz darknet’i kuracağız. Eğer sisteminizde git komutu bulunmuyorsa önce aşağıdaki kodları çalıştırmanız sorununuzu çözebilir.

sudo apt update
sudo apt install git

Anaconda ortamına git kurmak için de aşağıdaki komutlar girilir.

conda install git

Bunları girdikten sonra git komutu ile darknet’i yükleyebiliriz. Terminal ekranına aşağıdaki kodu yazıyoruz.

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

Darknet ortamını derlemek için ise önce darknet ortamına girilir. Ardından ‘make’ komutu ile derleme gerçekleştirilir.

cd darknet
make

Şimdi darknet’i düzgün bir şekilde kurabilmiş miyiz ona bakalım. Eğer ilk satırdaki kodu yazdıktan sonra 2. satırdaki yazı çıkıyorsa; kurulum doğru bir şekilde tamamlanmış demektir.

./darknet
usage: ./darknet <function>

Eğitimi CPU üzerinden yapacaksak Darknet dosyası içerisindeki ‘Makefile’ dosyasını açıp OPENCV=1 yapılır ve değişiklikler kaydedilir. Ardından ‘make’ komutu ile darknet ortamı tekrar derlenir.

Büyük bir kısım halloldu. Bütün bunları tamamladıktan sonra, veri setimizin bulunduğu ortamda kodlarla oluşturduğumuz .data dosyası, Darknet dosyası içerisindeki cfg dosyasına kopyalanır. Bu ortamda bir de weights dosyası oluşturduk. Bunun içerisine de bu linkten indirilen dosya yerleştirilir.

Artık terminal ekranına eğitim için kodu yazabiliriz. Aşağıdaki kod ile eğitimimizi başlatıyoruz.

./darknet detector train cfg/dataklasöradınız.data cfg/yolov3.cfg weights/darknet53.conv.74

Bu kısım en can sıkıcı bölüm olabilir. İyi sonuç alabilmek için en az 1000 kez bu işlemlerin gerçekleştirilmesi gerekiyor. Kodu girdiğinizde aşağıdaki gibi bir görüntüyle karşılaşacaksınız.

Aşağıdaki şekildeki gibi de devam edecek.

Eğitim sonunda Darknet ortamında backup içerisinde .weight isimli bir dosya oluşuyor. Bu dosya ile veri setimizi test edeceğiz.

Ben aşağıdaki çıktıyı aldım fakat eğitim setini 400'de bitirdiğim için böyle bir sonuç aldım. Eğer eğitim 8000 yapılırsa en doğru sonuçlar alınabilir.

Şimdilik burada bu yazıyı bitiriyoruz. Sonraki yazılarda görüşmek üzere…

--

--