100 Satır Kod ile Derin Öğrenme

Alperen Bayramoğlu
2 min readAug 8, 2020

--

Python, OpenCV kullanarak resimlerde basit obje sistemlerini tanıma. Konu resimler ve obje tanıma olduğu zaman OpenCV kütüphanesi yine bu konuda yardımımıza koşuyor ama sadece o değil bir diğer yardımcı YOLO. Darknet tarafından geliştirilen YOLO açılımı ile You Only Look Once(Sadece Bir kere Bak) anlamına gelmekte olup obje tanıma sistemlerine, hızı açısından fayda sağlamaktadır.

YoloV3 kullanılarak obje tanıma sistemi uygulanmış resim.

Tek aşama dedektörler(Single Stage Dedectors), yani örnek olarak YOLO İkili aşama dedektörlerine(Two Stage Dedectors örneğin R-CNN) göre daha hızlı çalışır ancak doğruluk oranı daha düşüktür. YOLO saniyede 45 kare işleyebilirken( ki şuan eklemeler ile FastYOLO dediğimiz sistemde 155 kare) R-CNN saniyede 5 kare işlebilmektedir. Yani YOLO R-CNN’e göre 9 kat hızlı!

İkili aşama dedektörleri selektif arama yöntemi(1.Aşama) kullanarak nesneleri kutu içerisine alıp sınıflandırma problemi için konvensiyonel ağa(CNN) aktarır.(2.Aşama). YOLO ise Tek Aşama Dedektör olarak gerileme yani Regression problemini kullanmaktadır. Bu yazıda Microsoft tarafından önceden öğretilmiş ve 80 objeyi tanıyabilen COCO veri setini kullanacağız. COCO veri setini burada ki linkten indirebilirsiniz.

Gerekli kütüphaneler

opencv-python, numpy

opencv-python yüklemek için konsola ;

pip install opencv-python

numpy için ise:

pip install numpy

Gerekli Dosyalar:

Resim, YOLO ayar dosyası, Önceden öğretilmiş veri seti(COCO), Sınıf isimlerini barındıran dosya.

Terimler

Confidence: Gerçekliğe yakın olabilmek için gereken minimum olasılık örneğimiz 0.5 yani %50 olarak kullanacağız.

Threshold: Non-Maxima supression(NMS) dediğimiz obje için çevresine dikdörtgen oluştururken birden fazla oluşturmamıza engel olmak için kullandığımız sayı.

Ortalama Çıkarma(Mean Substraction): Resimlerin RGB olmak üzere 3 kanalı vardır bu kanalların her birinden aynı kanalın ortalamasının çıkarılmasına verilen isim. Yani:

new_R = old_R — mean(R); new_G = old_G — mean(G) …

Çarpma faktörü(Scaling factor): Ortalama çıkarması uygulanan resme belirlenen sayının bölünmesi işlemidir. Bu sayı verinin standart sapması olabilmektedir veya manüel olarak belirlenebilmektedir. Ancak tamamen sistemin mimarisine ve ağın nasıl öğretildiğine bağlıdır. Örneğin: new_R = new_R / scale_factor

NOT: Ortalama Çıkarma ve Çarpma Faktörü, uygulaması verinin konvensiyonel ağa veya YOLO’ya girmeden önce ön işlenme aşamasıdır. Ancak her derin öğrenme uygulamasında kullanıldığı anlamına gelmez.

OpenCV blobFromImage fonksiyonu

Fonksiyon prototipi: blobFromImage(image, scaleFactor, size, mean, swapRB)

Fonksiyon konvensiyonel ağa girmeden önce gereken(veya gerekmeyen) ön işleme aşamasını gerçekleştirmektedir.

image: İşlenecek resim

scaleFactor: Çarpma faktörü

size: Konvensiyonel ağa en uygun uzay.(boyut)

mean: Ortalama çıkarma

swapRB: OpenCV resimleri BGR sırasına göre kabul etmektedir. Bu paremetreye true verdiğimiz zaman OpenCV’ye BGR sırasını değil RGB sırasını kullanmasını söyleriz.

--

--

No responses yet