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.   

[1] Center for Biological and Computational Learning at MIT and MIT, Pedestrian Data,  http://cbcl.mit.edu/software-datasets/PedestrianData.html [Ziyaret Tarihi: 20 Aralık 2017]

[3]The Chinese University of Hong Kong, Person Re-Identification Datasets, http://www.ee.cuhk.edu.hk/~xgwang/CUHK_identification.html, [7], [Ziyaret Tarihi: 20 Aralık 2017]

[7] Li, Wei, et al. "Deepreid: Deep filter pairing neural network for person re-identification." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2014.

Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

İşletim Sistemleri Günlüğüm-2 : PROCESS DURUMLARI (PROCESS STATES)

Bilgem Çakır ile Röportaj (Deneyim Mühim…)