YOLOv2 ile Gerçek Zamanlı Nesne Tespiti — Bölüm 1: Kurulum ve Demo

Yavuz Kömeçoğlu
Yavuz Kömeçoğlu
3 min readJan 15, 2018

--

Merhaba,

Bu yazıda öncelikle açık kaynaklı yapay sinir ağı kütüphanesi olan Darknet kütüphanesinin kendi bilgisayarımıza kurulumuna değineceğiz. Sonrasında 2017 yılı itibariyle gerçek zamanlı olarak en hızlı şekilde nesne tespiti yapabilen YOLO (You Only Look Once) algoritmasını, önceden eğitilmiş model kullanarak nesne tespiti demosunu nasıl çalıştıracağımızı göreceğiz.

KURULUM

Github üzerinden Darknet deposunu git ile klonlayalım ve darknet klasörü içerisine girelim.

Derleme işlemini başlatmadan önce darknet klasörü içerisindeki Makefile dosyasını inceleyelim. Şimdilik sadece ilk 5 satırı ile ilgileneceğiz.

CUDA destekli NVIDIA ekran kartınız varsa ve GPU üzerinde çalıştırmak istiyorsanız Makefile dosyasında ilk satırdaki GPU değerini 1 olarak değiştirmeniz gereklidir.

  • GPU ile derlemek istiyorsanız bilgisayarınızda CUDA 8 versiyonu yüklü olmalıdır. CUDA kurulumu için daha önceki yazıma buradan göz atabilirsiniz.

Web kameranızdan görüntü almak için Makefile dosyasında, üçüncü satırdaki OPENCV değerini 1 olarak değiştirmelisiniz.

  • OpenCV destekli derleme işlemi için makinanızda OpenCV yüklü ve derlenmiş olmalıdır. Eğer kurulum yapmadıysanız Ubuntu Üzerinde OpenCV Kurulumu başlıklı yazımdaki adımları izleyerek kurulumu gerçekleştirebilirsiniz.

Sadece CPU üzerinde çalıştırmak isterseniz Makefile dosyasında yukarıda anlatılan değişiklikleri yapmadan derleyebilirsiniz.

`make` komutu çalıştırarak derleme işlemini başlatalım.

NOT: -j8 parametresi opsiyoneldir. Derleme işlemini hızlandırmak için “-j çekirdek sayısı” parametresini ekleyebilirsiniz.

CPU üzerinde derleme yaptığınızda sorun yaşayacağınızı düşünmüyorum. Ancak GPU üzerinde ve OpenCV destekli derleme yaparken hata alabilirsiniz. CUDA ve OpenCV kurulum işlemlerinizi kontrol etmeyi unutmayınız.

Derleme işlemi sorunsuz şekilde tamamlandıysa denemeye geçebiliriz.

DEMO

Önceden eğitilmiş modelin ağırlık dosyalarını aşağıdaki komut ile indirelim.

Ağırlık dosyasını da yapılandırma dosyalarının olduğu cfg klasörü altına indirdim. Ama dilediğiniz yere indirebilirsiniz.

Data klasörü altındaki örnek dog.jpg görselinde nesnenin tanınmasını ve yerinin saptanmasını istiyorsak, aşağıdaki şekilde ağ dosyasını (yolo.cfg), indirdiğimiz ağırlık dosyasını (yolo.weights) ve görselin yolunu parametre olarak belirterek detect komutunu çalıştırmalıyız.

İşlem sonunda görsel içerisinde dog: 82%, car: 26%, truck: 65%, bicycle: 85% oranlarında nesneleri içerdiği ve nesnelerin konumlarının sınırlayıcı kutu (bounding box) içerisine alındığını görüyoruz.

Webcam ile gerçek zamanlı nesne tespiti için [1] COCO Veriseti’ni kullanarak detector demo komutunu çalıştırıyoruz

Video üzerinde gerçek zamanlı nesne tespiti için ise webcam ile çalıştırdığımız komut sonuna videonun dosya yolunu belirtmemiz yeterli olacaktır.

ÇALIŞMALARIM

İstanbul trafiğinde çekilmiş olan kısa bir video üzerindeki nesne tespiti denememi izleyebilirsiniz.

Aşağıda da telefon ile çektiğim başka bir video üzerindeki nesne tespiti denemem yer almaktadır.

Bilgisayar özellikleri video açıklamalarında mevcuttur.

Soru ve görüşlerinizi aşağıdaki yorum bölümüne yazabilirsiniz.

Referanslar:

--

--

Yavuz Kömeçoğlu
Yavuz Kömeçoğlu

🇹🇷 Machine Learning R&D Engineer @KodiksBilisim | Deep Learning Enthusiast | http://yavuzkomecoglu.com/