Bitirme Projesi 6 - Rapor - İkili Sınıflandırma (Binary Classification)
Bir
görüntüde insan olup olmadığını tespit etmek amacıyla, projede ikili
sınıflandırma işlemi kullanılmıştır. Bu işlem Derin Öğrenme metotlarıyla
gerçekleştirilmiştir. Projede derin öğrenme için oluşturulmuş olan model
katmanları temel olarak iki gruptan meydana gelir. İlk grup özellik çıkarımı
için kullanılan Konvolüsyonel Sinir
Ağından [İng. Convolutional Neural Network] meydana gelmektedir. İkinci
kısım ise sınıflandırma işlemini yapacak olan tamamen birbirine bağlı
modüllerden oluşan Tam Bağlı Katman [İng.
Fully Connected Layer] grubudur. Bu grup sonunda tek bir değer üretecek olan
tek bir modüle bağlanır. Sonuçta sistem 0 yada 1 olarak iki değer üretmektedir.
0 çıktısı verilen görüntü içerisinde aranan objenin bulunmadığını, 1 çıktısı
görüntüde aranılan objenin bulunduğunu ifade etmektedir. Proje kapsamında
üzerinde çalışılan obje insan figürüdür. İfade edilen yapı genel hatlarıyla Şekil-3.1’de gösterilmektedir.
Şekil-3.1: İkili Sınıflandırma
Gösterimi: Görüntü; 64x128x3 boyutlarında herhangi insan yada insan olmayan
görüntüyü ifade etmektedir. Özellik
çıkarımı konvolüsyonel sinir ağından meydana gelir. Sınıflandırma kısmında
tamamen birbirine bağlı olan katmanlar bulunmaktadır. Sonuçta 0 (insan yok)
veya 1 (insan var) üretilmektedir.
Böylece eğitim ve tahmin için kullanılacak
olan modeli temel hatlarıyla ifade etmiş olduk. Bu bölümün alt başlıklarında
İkili Sınıflandırma eğitimi için kullanılan veri setleri, modelin detayları ve
test sonuçları sunulacaktır.
i. Veri Seti
Eğitim pozitif
verilerle ve negatif verilerle
gerçekleştirilmiştir. Pozitif veri ifadesi içerisinde insan bulunan görüntüyü
ifade ederken negatif veri içerisinde insan bulunmayan görüntüleri temsil
etmektedir. Bu veriler için kaynak olarak MIT’nin Pedestrian [1] data seti ve
INRIA, GRAZ01 data seti [2] kullanılmıştır.
MIT data seti 64x128 boyutlarında 3 kanallı
924 tane görüntüden oluşmaktadır. Her bir görüntüde insan bulunmaktadır. INRIA
data seti farklı boyutlarda ve formatlarda insan bulunan ve insan bulunmayan
görüntülerden oluşmaktadır. Boyut ve format farklılığını gidermek için her bir
görüntüde bulunan insan formu kesilerek MIT data setindeki gibi 64x128
boyutlarında 227 tane insan bulunan görüntü oluşturulmuştur. Veri setini
genişletmek amacıyla her bir pozitif görüntünün ayna yansıması alınmıştır. Obje
formunda herhangi bir özellik kaybına neden olmamak için genişletme daraltma
gibi işlemlere başvurulmamıştır. Negatif görüntü için de INRIA data seti
içerisinde bulunan görüntülerden 64x128 boyutlarında insan bulunmayan
görüntüler üretilmiştir. Sonuç olarak 2300 tane pozitif ve 2600 tane negatif
görüntü elde edilmiştir. Mevcut veri setinden örnekler Şekil-3.2’de gösterilmiştir.
Şekil-3.2: Veri
Setinden Örnekler: Eğitim için kullanılan veri setinden pozitif (insan bulunan)
ve negatif (insan bulunmayan) görüntü örnekleri.
ii. Model
Eğitim için oluşturulan taslak model daha
önce tanımlanmıştı. Bu bölümde eğitim için modelin nasıl tasarlandığı detaylı
bir şekilde açıklanmaktadır. Katmanların nasıl dizayn edildiği, kullanılan
fonksiyon ve değerlerin neler olduğu ifade dilmektedir. Daha önce de
belirtildiği gibi modelimiz konvolüsyonel sinir ağından ve tam bağlı
katmanlardan oluşan bir sinir ağından oluşmaktadır.
İlk katmanlar grubu olan konvolüsyonel sinir
ağının amacı görüntü üzerinde çeşitli değişiklikler yaparak görüntünün içeriği
hakkında bilgiler oluşturmaktır. Bu değişimler filtre uygulama işlemi ile
gerçekleştirilir ve bu işleme katlama ya
da konvolüsyon [İng. Convolution] denir. Görüntü üzerinde yapılan bu değişimler
görüntü içerisindeki bazı bilgileri ön plana çıkarmaktadır. Bu işlem uygulanan
filtrenin özelliğine göre farklı sonuçlar üretecektir. Konvolüsyonel sinir
ağının yaptığı işlem ise bir görüntüye birden fazla filtre uygulayarak
görüntünün farklı özelliklerini ön plana çıkaran birden fazla görüntü elde
etmektir. Daha sonra bu görüntüleri genel özelliklerini kaybetmeden
olabildiğince küçültüp ana görüntünün bir özellik vektörünü elde etmek
amaçlanır.
İkinci katmanlar grubu olan tam bağlı
katmanlar ise konvolüsyonel sinir ağı ile elde edilen özellik vektörü
içerisindeki değerlere göre görüntüde insan olup olmadığını tahmin edecek
kısımdır. Temel olarak eldeki tek boyutlu özellik vektörü daraltılarak bir
sınıfa yaklaşması diğer sınıflardan ise uzaklaşması beklenmektedir. İkili
sınıflandırmanın amacı gereği bu daraltma işleminin sonucunun tahmindeki hatayı
olabildiğince azaltarak sıfır yada bire yaklaşması amaçlanmaktadır. Bu şekilde
sıfır görüntüde insan bulunmadığını, bir ise görüntüde insan bulunduğunu ifade edecektir.
Bu aşamada yukarıda amaç ve genel işleyişi
tanımlanan katmanları bir bütün olarak ele alıp tasarlayalım. İlk konvolüsyon
katmanı 64x128 boyutlarında üç kanallı bir matris beklemektedir. Bu katman
görüntünün matrisine 32 tane 3x3 boyutlarında filtre uygulayarak 32 farklı
matris elde eder. Keras uygulamalarında bu işlemi Con2D katmanı
karşılamaktadır. Bu katmanda olduğu gibi modelin son katmanı hariç her
katmanında Relu aktivasyon fonksiyonu
uygulanmaktadır. Genel olarak aktivasyon fonksiyonlarının amacı elde edilen
sonuçları belli değer aralıklarına indirgeyerek sonuçların sonsuza gitmesini
engellemektir. Relu fonksiyonu ise sıfırdan küçük değerleri sıfıra eşitlerken
sıfır ve sıfırdan büyük olan değerleri korumaktadır. Aktivasyon
gerçekleştirildikten sonra Alt Örnekleme[İng.
Subsampling] işlemi uygulayarak görüntü boyutları yarıya indirilir. Alt
Örnekleme işlemi belirli kurallara uygun olarak matrisin bir alt kümesini
oluşturma işlemidir. Bu aşamada orijinal boyutun yarısı boyutunda alt örnek oluşturmak
üzere Keras fonksiyonu olan MaxPooling2D
katmanı kullanılmıştır. Burada matris 2x2 boyutlarında alt kümelere ayrılmış ve
her kümedeki en büyük eleman yeni matrisin elemanı olarak atanmıştır. Böylece ana
matrisin boyutu yarıya indirilmiştir. En büyük değerin alınması işleminde
görüntünün ana temasından uzaklaşmamak amaçlanmaktadır. Bu şekilde elde edilen
görüntülere iki kez daha çeşitli filtre ve sayılarda konvolüsyon, aktivasyon ve
alt örnekleme işlemleri uygulanır. Sonuç olarak ilk katmanlar grubu olan
konvolüsyonel sinir ağı tamamlanmış olur.
İkinci aşama olan sınıflandırma katmanlarına
geçmeden önce elde edilen tüm matrislerin tek boyutlu bir özellik vektörüne
dönüştürülmesi gerekmektedir. Sınıflandırma katmanları bu tek boyutlu özellik
vektörü üzerinde bir karar mekanizması oluşturacaktır. Bu işlem için Keras
katmanı olan Flatten kullanılmıştır.
Son aşamada ise elde edilen vektöre iki tane
tam bağlı katman uygulanarak karar vermesi beklenmektedir. Bu katmanlar Keras
kütüphanesinde Dense olarak ifade
edilir. Dense katmanında yada genel ifadesiyle tam bağlı katmanlarda,
belirlenen sayıdaki tüm düğümler bir önceki ve bir sonraki katmanda bulunan tüm
düğümler ile bağlantılıdır. Proje kapsamında oluşturulan modelde iki Dense
katmanı kullanılmıştır. İlk katmanda 64 düğüm bulunmaktadır. Flatten katmanı
ile oluşturulan tek boyutlu vektörün elemanları bu katman için girdi olarak
kullanılır. Bu katmanda da aktivasyon fonksiyonu olarak Relu belirlenmiştir.
İkinci Dense katmanı ise İkili Sınıflandırmanın gerektirdiği şekilde tek bir
düğüme sahiptir. Diğer katmanlardan farklı olarak bu katmanda sigmoid aktivasyon fonksiyonu kullanılmıştır.
Bu fonksiyon değeri sıfır ile bir aralığına çekecektir. Bu şekilde son katmanda
görüntüde insan olup olmadığını ifade eden tek bir sonuç üretilmiş olacaktır.
Son olarak 64 düğüm bulunduran Dense
katmanından sonra 0.5 değerinde Dropout
işlemi uygulanmıştır. Bu işlem bu katmanda oluşturulan bazı sonuçları eğitimde
kullanmayarak ezberleme [İng.
Overfitting] sorununu azaltmaya yöneliktir. Ezberleme eğitimde kullanılan
verileri gereğinden fazla öğrenme sorunudur. Bu durumda modelin eğitim için
kullanılan veriler dışındaki tahminlerinde yanılma olasılığı artacaktır.
Yukarıda ifade edilmiş olan model
katmaları, ayrıntılarıyla birlikte Tablo-3.1’de
gösterilmektedir.
Katman
|
Con2D
|
Con2D
|
Con2D
|
Flatten
|
Dense
|
Dense
|
Filtre/Node
sayısı
|
32
|
32
|
64
|
-
|
64
|
1
|
Filtre
Boyutu
|
3x3
|
3x3
|
3x3
|
-
|
-
|
-
|
MaxPooling
|
2x2
|
2x2
|
2x2
|
-
|
-
|
-
|
Aktivasyon
Fonksiyonu
|
Relu
|
Relu
|
Relu
|
-
|
Relu
|
Sigmoid
|
Çıktı
Boyutu
|
31x63
|
14x30
|
6x14
|
5376
|
64
|
1
|
0.5 Dropout
|
Tablo-3.1: İkili Sınıflandırma Katmanları: Eğitim için
kullanılan model katmanları ifade edilmektedir. Katmanlarda bulunan filtre yada
node sayıları filtre boyutları yapılan pooling işlemi ve küçültme işleminin
boyutları, kullanılan aktivasyon fonksiyonları ve yapılan işlemlerin tek bir
görüntüde yapmış olduğu değişim gösterilmiştir. 5. Sütunda 0.5 değerindeki
dropout ifade edilmiştir.
iii. Eğitim
Modelin eğitimi sırasında kayıp fonksiyonu [İng. Loss function]
olarak çıktı değerimiz sıfır yada bir gibi tek bir değer olduğu için “binary_ crossentropy” kullanılmıştır.
Kayıp fonksiyonu modelin ürettiği tahmin ile gerçek değer arasındaki hatayı
ölçer. İyileştirici [İng. Optimizer]
olarak 0.001 öğrenme oranına [İng.
Learning Rate] sahip “rmsprop”
kullanılmıştır. Batch size 16, epoch değeri ise 50 olarak belirlenmiştir. Her epoch
sonunda model kaydedilmiştir. Ayrıca herhangi bir epoch sonunda en iyi olarak
nitelendirilebilecek eğitim de kaydedilmiştir. Eğitim sonunda gerçekleştirilen
testler ile en iyi sonucu veren model de kaydedilen bu modeldir.
iv. Testler ve Sonuçları
Üç farklı grupta test verileri oluşturulmuş
ve eğitim sonunda bu verilerle model test edilmiştir. Eğitim verisine benzeyen
görüntülerle, aynı boyut ve formattaki görüntüler üzerinde yapılan test
sonucunda pozitif görüntülerin doğruluk oranı %84 iken negatif görüntülerin
doğruluk oranı %92 olarak alınmıştır.
Eğitim verisine benzeyen fakat farklı boyut ve formattaki görüntülerden
elde edilen sonuçların doğruluk oranları ise pozitif görüntüler için %92,
negatif görüntüler için %84’tür. Son grup olarak da eğitim verisine benzemeyen,
farklı boyut ve farklı formatlardaki görüntülerle yapılan testler pozitif
girdiler için %71 negatif girdiler için %85 doğruluk vermiştir. Bu en iyi
sonuçları veren modelin pozitif ve negatif veriler üzerindeki tahminlerinin
doğruluk oranları Tablo-3.2’de de
gösterilmiştir.
Test Verisi
|
Pozitif Veriler
|
Negatif Veriler
|
Eğitim verisine benzeyen görüntülerle, aynı boyut ve
formatta
|
84
|
92
|
Eğitim verisine benzeyen görüntülerle, farklı boyut
ve formatta
|
92
|
84
|
Eğitim verisine benzemeyen, farklı boyut ve farklı
formatta
|
71
|
85
|
Tablo-3.2: Modelin test sonuçları: üç farklı
test veri grubunun pozitif ve negatif görüntüler üzerindeki tahminlerinin yüzdelik
bazında doğruluk oranları gösterilmiştir.
Ayrıca daha sonra Siamese ağını test etmek
için kullanılan CUHK01 [3] veri setinde bulunan 3884 adet pozitif görüntü ile
yapılan teste %81 değerinde doğruluk oranı vermiştir.
threshold değerlerinide yazar mısın lütfen :D
YanıtlaSil