R-CNN Ailesi Part I: R-CNN & Fast R-CNN

Elif Meşeci
6 min readAug 17, 2021

Merhaba, bu yazıda nesne tespiti için kullanılan R-CNN ailesinden R-CNN ve Fast R-CNN’i inceleyeceğiz. Yazının R-CNN ve Fast R-CNN içeriğine geçmeden önce ağların oluşumunda temel alınan Evrişimli Sinir Ağları (CNN) ile konuya giriş yapmak istiyorum. Böylelikle zamansal gelişimini anlayarak adım adım ilerleyeceğiz.

CNN (Evrişimli Sinir Ağı)

Evrişimli Sinir Ağı, görüntülerden özellikleri çıkarmak için filtreler kullanan güçlü bir sinir ağıdır. Ayrıca bunu, piksellerin konum bilgilerinin korunacağı şekilde yapar. Evrişim dediğimiz şey ise bir matrise uygulanan matematiksel bir işlemdir. Bu matris genellikle piksel/sayı şeklinde temsil edilen görüntüdür. Basitçe evrişim işlemi, görüntüden özellikleri çıkarır.

Evrişimli Sinir Ağlarının Yapısı

CNN Katmanları

CNN’in temel amacı, görüntünün özelliğini çıkarmak ve özelliklerini kaybetmeden alt boyuta dönüştürmektir. İşlemler sırasıyla görüntüyü almanız, onu bir dizi evrişimli, ortaklama ve tam bağlantılı katmanlardan geçirmeniz ve bir çıktı almanız olacaktır. CNN’in nasıl işlediğini daha iyi anlamak için katmanları inceleyelim.

🪐 Evrişim Katmanı (Convolution Layer)

Bir evrişim katmanı, görüntünün bir alt kümesini inceleyeceğimiz ve ardından bu pencereden bakarak tüm görüntüyü tarayacağımız bir pencere tanımlar.

Görüntü üzerinde evrişim işlemi

Evrişim katmanında yukarıdaki gibi resmin üzerinden gezgin bir halde filtre (özellik algılayıcısı) kullanılır. Bu filtre, görüntü üzerinde gezerek belirli özellikleri aramak için bulunduğu noktanın piksellerinde hesaplamalar yapar ve o pikseldeki her bir noktayı yeni görüntüde bir piksel haline getirir. Yani görüntüde aradığımız özellikleri sergileyen bölgelerden oluşan bir çıktı görüntüsü üretir. Bir evrişimin çıktısına bir özellik haritası (feature map) denir.

Özellik Haritası

🤽🏽 Havuzlama Katmanı (Pooling Layer)

Havuzlama katmanı, parametre sayısını azaltmaya yöneliktir. Amaç, elimizdeki parametre sayısını azaltıp en kritik parametreleri tutmaktır. Hesaplama karmaşıklığını azaltmak için kullanılan bir adımdır.

Havuzlama katmanı, bir evrişim katmanı tarafından oluşturulan özellik haritasının bir bölgesinde bulunan özellikleri özetler. Böylece, evrişim katmanı tarafından oluşturulan kesin olarak konumlandırılmış özellikler yerine özetlenmiş özellikler üzerinde daha fazla işlem gerçekleştirilir. Bu, modeli girdi görüntüsündeki özelliklerin konumundaki değişikliklere karşı daha sağlam hale getirir. Genellikle maksimum havuzlama (max pooling) kullanılır.

Maksimum Havuzlama (max-pooling)

🌌 Tam Bağlantılı Katman (Fully Connected (FC) Layer)

Düzleştirme (Flattening) işlemi ile matris vektör haline getirilir ve sinir ağındaki tam bağlantılı katmana verilir. Tam bağlantılı katmanlarla, bir model oluşturmak için özellikler bir araya getirilir. Son olarak, çıktıları sınıflandırmak için softmax veya sigmoid gibi bir aktivasyon fonksiyonu kullanılır.

Düzleştirme (Flattening) ve Tam Bağlantılı Katman

CNN mimarilerini daha detaylı incelemek için aşağıdaki tablonun kaynağına gidebilirsiniz.

Kaynak: https://medium.com/analytics-vidhya/cnns-architectures-lenet-alexnet-vgg-googlenet-resnet-and-more-666091488df5

Bölge Tabanlı Evrişimli Sinir Ağları

🌱R-CNN

R-CNN algoritması, çok sayıda bölge üzerinde çalışmak yerine görüntüde bir grup kutu (bölge) önerir ve bu kutuların herhangi bir nesne içerip içermediğini kontrol eder. R-CNN, bu kutuları bir görüntüden çıkarmak için seçici arama (selective search) kullanır.

Önce seçici aramanın ne olduğunu ve farklı bölgeleri nasıl tanımladığını anlayalım. Bir nesneyi oluşturan temel olarak dört bölge vardır: değişen ölçekler, renkler, dokular ve çevre. Seçici arama, görüntüdeki bu kalıpları tanımlar ve buna göre çeşitli bölgeler önerir.

🔸 İlk önce girdi olarak bir görüntü alır.
🔸Ardından, bu görüntüden birden fazla bölgemiz olması için ilk alt segmentasyonları oluşturur.
🔸 Daha sonra daha büyük bir bölge oluşturmak için benzer bölgeleri birleştirir (renk benzerliği, doku benzerliği, boyut benzerliği ve şekil uyumluluğuna dayalı olarak)
🔸 Son olarak, bu bölgeler daha sonra nihai nesne konumlarını (İlgi Bölgesi — ROI) üretir.

Bölge Tabanlı Evrişimli Sinir Ağı Mimarisi (*)

R-CNN’de izlenen adımlar:

🔹 Önceden eğitilmiş bir evrişimsel sinir ağı alıyoruz.
🔹 Daha sonra bu model yeniden eğitilir. Tespit edilmesi gereken sınıfların sayısına göre ağın son katmanını eğitilir.
🔹Her görüntü için İlgi Bölgesi’ni elde edilir. Daha sonra tüm bu bölgeler CNN giriş boyutuna uyacak şekilde yeniden şekillendirilir.
🔹 Bölgeleri aldıktan sonra nesneleri ve arka planı sınıflandırmak için SVM (Support Vector Machine — Destek Vektör Makinesi) eğitilir.
🔹 Son olarak, görüntüde tanımlanan her nesne için daha sıkı sınırlayıcı kutular oluşturmak için bir doğrusal regresyon modeli eğitilir.

⚠️ R-CNN’in Dezavantajları

R-CNN modeli, görüntü özelliklerini etkin bir şekilde çıkarmak için önceden eğitilmiş CNN’leri kullanmasına rağmen, yavaştır. Seçici aramaya dayalı olarak her görüntü için 2.000 bölge çıkarıldığını ve her görüntü bölgesi için CNN kullanarak özelliklerin çıkarıldığı düşünürsek tüm bu işlemler R-CNN’i çok yavaşlatır. Bu da modeli büyük bir veri setiyle karşı karşıya kaldığında kullanmayı imkansız hale getirir.

Makaleyi incelemek için tıklayınız.

🌱Fast R-CNN

R-CNN’den Fast R-CNN’e (*)

R-CNN’in yazarlarından olan Ross Girshick, CNN’i görüntü başına yalnızca bir kez çalıştırma ve ardından bu hesaplamayı 2.000 bölge arasında paylaşma fikrini ortaya attı.

Fast R-CNN, bölgelerden öznitelikleri çıkaran, bunları farklı sınıflara ayıran ve aynı anda tanımlanan sınıflar için sınır kutularını döndüren tek bir model kullanır.

🔹 Bir görüntü girdi olarak alınır.
🔹 Bu görüntü, sırayla İlgi Bölgelerini (ROI) oluşturan bir CNN’e iletilir.
🔹 CNN’in girişine göre yeniden şekillendirmek için bu bölgelerin tümüne bir RoI havuzlama katmanı uygulanır. Ardından, her bölge tam bağlantılı bir ağa geçirilir.
🔹 Çıkış sınıflarına tam bağlantılı ağın üstünde bir softmax katmanı kullanılır. Softmax katmanıyla birlikte, tahmin edilen sınıflar için sınırlayıcı kutu koordinatlarının çıktısına paralel olarak doğrusal bir regresyon katmanı da kullanılır.

🎊 R-CNN ile karşılaştırıldığında algılama süresi ve Ortalama Hassasiyeti (mAP)büyük ölçüde iyileşir.
🎊 Eğitim, tek aşamalıdır ve tüm ağ katmanlarını güncelleyebilir
🎊 Özelliklerin önbelleğe alınması için disk depolaması gerekmez.

⚠️ Fast R-CNN Dezavantajları

RCNN’e göre hızlı olsa bile, ilgi bölgelerini bulmak için bölge teklif yöntemi olarak zaman alıcı bir süreç olan seçici aramayı kullanır.

Makaleyi incelemek için tıklayınız.

💎 Faster R-CNN ve Mask R-CNN anlattığım yazıma göz atabilirsiniz.

Not: (*) ile belirtilmiş görseller yazar tarafından oluşturuldu.

--

--

Elif Meşeci

Artificial Intelligence Specialist at SimurgAI || Computer Engineer