YOLO: Gerçek Zamanlı Nesne Tespiti Kütüphanesi (Darknet) Kurulumu

Merhaba,

Bu yazıda açık kaynaklı yapay sinir ağı kütüphanesi olan Darknet kütüphanesinin makinamıza kurulumunu ve 2017 yılı itibariyle gerçek zamanlı olarak en hızlı şekilde nesne tespiti yapabilen YOLO(You Only Look Once) algoritmasının önceden eğitilmiş modelini kullanarak nesne tespiti demosunu nasıl çalıştıracağımızı görelim.

KURULUM

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

git clone https://github.com/pjreddie/darknet.git
cd darknet

Derleme işlemini başlatmadan önce darknet klasörü içerisindeki Makefile dosyasını inceleyelim.

GPU=1
CUDNN=0
OPENCV=1
OPENMP=0
DEBUG=0

...

Biz sadece yukarıdaki 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ştiriyoruz.

  • GPU ile derlemek istiyorsanız makinanızda CUDA 8 versiyonu yüklü olması gerekmektedir. 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ştiriyoruz.

  • OpenCV destekli derlemek için makinanızda OpenCV yüklü ve derlenmiş olması gerekmektedir. Eğer kurulum yapmadıysanız "Ubuntu Üzerinde OpenCV Kurulumu" başlıklı yazımdaki adımları izleyerek kurulum yapabilirsiniz.

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

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

~/darknet$ make -j8

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

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.

wget https://pjreddie.com/media/files/yolo.weights

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

Data klasörü altındaki örnek dog.jpg görselinde nesne tanıma ve yerini saptaması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 komutu çalıştıralım.

./darknet detect cfg/yolo.cfg cfg/yolo.weights data/dog.jpg

 

 

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

 

Webcam ile gerçek zamanlı nesne tespiti için COCO veriseti'ni kullanarak detector demo komutunu çalıştırıyoruz

./darknet detector demo cfg/coco.data cfg/yolo.cfg cfg/yolo.weights

 

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

./darknet detector demo cfg/coco.data cfg/yolo.cfg cfg/yolo.weights <video dosya yolu>

ÇALIŞMALARIM

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

Telefon ile çektiğim başka bir video üzerindeki nesne tespiti denememi izleyebilirsiniz.

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

 
Son olarak
Joseph Redmon'dan "Bilgisayarlar nesneleri anında nasıl tanımayı öğrenirler" başlıklı YOLO sunumunu izleyebilirsiniz

Referanslar:

 

 

Yorumlar (11) -

  • Bu algoritma üzerine kendimiz nasıl veriseti oluşturabiliriz.Mesela Masa algılamasını ve onun masa yazmasını istediğimiz gibi
  • Elinize sağlık çok güzel bir yazı olmuş. Bu işlemleri macOS üzerinde yapmak ile Ubuntu üzerinde yapmak arasında performans, zorluk ve elde edilen sonuçlar bakımından bir farklılık var mı? OpenCV'yi de kullanmak istiyorum, Ubuntu üzerinde bu işlemler daha mı kolay yoksa macOS'ta da yapılabilir mi?
    • Teşekkür ederim güzel geri dönüşleriniz için. Kendim MacOs hiç kullanmadım ama derin öğrenme kütüphaneler C++ ve Python tabanlı olduğundan macOS'da da çalışacaktır.
      Derin öğrenme kütüphaneleri önce linux ortamı için geliştiriliyor. O yüzden Ubuntu tercihi bu alanda çalışma yapmak için ideal ortamdır denebilir.
  • Hocam çok temiz ve faydalı bir yazı olmuş elinize sağlık.
    Resim üzerindeki işlemi sayenizde başarılı bir şekilde hallettim fakat video üzerinde işlem yaparken hata alıyorum.

    Tarif ettiğiniz gibi OpenCV'i yükledim ve makefile dosyasında OpenCV=1 de yaptım. Test ettiğimde opencv 3.4.0 makinemde kurulu olarak görünüyor fakat ona rağmen video üzerinde işlem yapmaya çalıştığımda "demo needs opencv" hatası alıyorum.
    Ekran kartım cuda destekli değil dolayısıyla cpu üzerinden derliyorum sorun bununla alakalı olabilir mi?
    • Merhaba aynı hatayı bende alıyorum bir çözüm bulabildiniz mi acaba ?
      • Merhaba,
        OpenCV için versiyon 2.xx ve CUDA için versiyon 8'i indirip derleyiniz. Ve düzgün derlendiğinden ve çalıştığından emin olunuz. Sonra darknet'i OpenCV=1 ve GPU=1 şeklinde derleyiniz.
        Sorun yaşamayacağınızı düşünüyorum.
  • ...
    0 conv    425  1 x 1 / 1    19 x  19 x1024   ->    19 x  19 x 425
       31 detection
    mask_scale: Using default '1.000000'
    Loading weights from cfg/yolo.weights...Done!
    data/dog.jpg: Predicted in 26.279549 seconds.

    islem bu sekilde sonlaniyor, yuzdelik kisim yazmiyor ve resim acilmiyor. gnome terminali acilmadigi icin terminator xlterminal gibi ucbirimlerde calistirdim.

    opencv versiyonunu kontrol etme komutunu yazdigimda "pkg-config --modversion opencv" pkg-config --modversion opencv
    Package opencv was not found in the pkg-config search path.
    Perhaps you should add the directory containing `opencv.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'opencv' found
    bu hatayi aliyorum.

Yorum ekle

Loading