Python Dlib Kütüphanesi ile Çoklu Obje İzleme 👩🏻‍🔬

Python Dlib Kütüphanesi ile çoklu obje izleme

Herkese merhabalar, piton dilinde yazdığım projelerde çoğunlukla kullandığım görüntü işleme kütüphanesi olan OpenCV ve bu kütüphaneler için ortaya konulan dlib, imutils gibi modüller hazır olarak mevcuttur. Bugün anlatacağım gerçek zamanlı ( real-time ) video ve görüntülerde birden çok nesneyi etkin bir şekilde izlemek için Pyhton dlib kütüphanesinden oldukça faydalanacağız 🤗

Burada iki türde var olmuş Python kodunu birlikte inceleyeceğiz.
multi_object_tracking_slow.py : dlib çoklu nesne takibinin basit “naif” yöntemi
multi_object_tracking_fast.py : Hızlı yöntem*

👍 Öncelikle gerekli paketleri ve modülleri import edelim. Ayrıca, imutils paketindeki saniye başına kare gibi bir kolaylık işlevleri için FPS’ten bazı özellikleri de kullanacağız.

🔮 Yukarıda gördüğünüz görselde bizim için gerekli kütüphaneleri tanıtmış olduk. IDE’nizde imutils veya dlib paketleriniz yüklü değil ise pip package manager ile bunları terminalden yüklemeniz mümkün.

Aynı zamanda size ufak bir hatırlatma yapmak isterim. Güncel pip versiyonunuz bu paketler için düşük kalabilir, aşağıdaki gibi bir uyarı ile karşı karşıya kalabilmeniz mümkündür.

Bunun için gerekli güncellemeleri pip versiyonunu yükselterek upgrade ile aşağıdaki gibi sağlamalısınız.

👍 Sıra geldi gerekli güven değeri, çıktısı ve model kullanımları için komut satırı argümanlarının bu scripte yazılmasına.. Aşağıda yazılı olan argüman komut satırlarını kütüphanelerin altına yerleştirmemiz gerek.

Bu argümanlara aşina değilseniz yukarıda linke bıraktığım bağlantıyı inceleyebilirsiniz. (komut satırı argümanları)

🔎 Haydi, birlikte bu parametrelere yakından göz atalım, ne dersiniz?

— prototxt: Caffe’nin prototxt dosyasına giden “dağıt” yolu.
 — model: Prototxt ile birlikte gelen model dosyasının yolu.
— video: Giriş videosu dosyasının yolu. 
— output: Bir çıkış video dosyasının isteğe bağlı bir yolu.( .avi , .mp4)
 — confidence: Bu değer, nesne tespitinden gelen zayıf tespitleri filtrelemek için minimum olasılığı temsil eder.

Classes olarak belirtilen dizide tespit edilecek olan çoklu nesnelerin tanımlanmış modeli ile karşı karşıyayız.

Burada eğitilen modeller içerisinde bisiklet, köpek, tren, inek gibi nesneler yer almaktadır. Bu nesneler tamamen modele bağlı çalışmaktadır, isteğe göre değiştirilebilmektedir.

📸 Video üzerinde gerçek zamanlı tespit yapabilmek için ise öncelikle OpenCV üzerinden VideoCapture ile kameranın açılması sağlanmalıdır. Bu tespit uygulamasında bilgisayarın kendi kamerası üzerinden çalışmalar gerçekleştirileceği için parametre 0 seçildi. Eğer harici bir kamera kullanılacak ise -usb webcam- parametre olarak 1 seçilecektir.

Görüntü üzerinde width ve height değerlerini alınan görüntünün boyutlarına göre seçmemiz mümkündür. Bu adımda (320,180) rastgele değerleri seçtik 👩🏽‍🏫

Görüntü işleme alanında genellikle bir görüntü üzerinde değişiklik veya belirleme yapılacak ise o görüntü grayscale formatına dönüştürülür.

Yapılacak olan bu sistemde kayıtlı kamera görüntüsü kullanılabilir veya kamera real time olarak çalıştırılır. Eğer kayıtlı bir video üzerinden tespit işlemi gerçekleştirilecek ise VideoCapture içerisinde videonun isminin çağırılması yeterlidir.

🧷 Son bir dipnot, görüntü işleme alanında sıkça kullanılan kavramlardan bir diğeri de fourcc (four character code) kavramıdır.

Medya dosyasının video kod çözücüsünü 4 baytlık olarak tanımlar. Kaydedilen video kayıtlarında fourcc formatı kullanılmak zorundadır. Sistem için de gerekli olan video kaydı aşağıdaki kod satırları ile sağlandı.

Alınan Görüntünün Video Kaydına Dönüştürülmesi

Nesne tespiti sırasında çalıştırılan model sonucunda aşağıdaki sonuç ile karşı karşıya kalmaktayız. Terminal satırında görüntü boyunca geçen zaman ve FPS(frame per second) değerleri mevcuttur. FPS, saniye başına gelen frame sayısıdır ⏱

Model içerisinde belirtilen nesneleri aşağıdaki görselde gördüğünüz üzere değiştirmeleri sizler de sağlayabilirsiniz.

Bu çıkarımlar real-time olarak kamera üzerinde yüzdelik dilimlerde belirlenmiştir. USB kamera ile de insan tespiti yapmak artık oldukça kolay olacaktır.

Obje Tanımada Confidence Değeri ile Karşılaştırma

  • Sınırlayıcı Kutular, Güven Eşik Değeri ve Sınıf Etiketleri
  • Güven Eşik Değeri ile Filtreleme

 

Confidence değeri ile zayıf hesaplamaları filtrelemek için kullanılmaktadır. İstenmeyen değerler bu şekilde filtrelenmiş oldu. Yani eğer gösterilen nesne 0.5ten daha az isimlendirme yapacak ise o nesneye o ismi etiketlemez.

Kamera üzerinden çoklu nesne tespitini gerçekleştirmiş olduk. Başka bir yazımda daha güzel bilgiler öğrenmek dileğiyle 🙋🏻

REFERANSLAR

  1. https://www.pyimagesearch.com/2018/10/29/multi-object-tracking-with-dlib/
  2. https://dlib.net/
  3. https://opencv.org/
  4. https://csr.bu.edu/BU-TIV/BUTIV.html

Leave a Reply

Your email address will not be published. Required fields are marked *