Makale İncelemesi:CNN ile Çok Kategorili Sınıflandırma

Derin Öğrenmeyi Kullanarak Çok Kategorili Görüntülerin Sınıflandırılması : Evrişimli Bir Sinir Ağı Modeli

Bu yazıda, Ardhendu Bandhu, Sanjiban Sekhar Roy tarafından Hindistan’da 2017 senesinde ortaya konulmuş Classifying multi-category images using Deep Learning: A Convolutional Neural Network Model’ adlı makalenin incelemesi yapılmaktadır. TensorFlow ile evrişimsel sinir ağı kullanan bir görüntü sınıflandırma modeli sunulmaktadır. TensorFlow, makine öğrenimi ve derin sinir ağları için popüler bir açık kaynak kütüphanesidir. Sınıflandırma için çok kategorili bir görüntü veri kümesi dikkate alınmıştır. Geleneksel geri yayılım sinir ağı; bir giriş katmanı, gizli katman ve bir çıktıya sahiptir. Evrişimsel sinir ağında, bir evrişimsel tabaka ve bir maksimum havuzlama katmanı (pooling layer) vardır. Bu önerilen sınıflandırıcıyı, görüntü veri kümesinin karar sınırını hesaplamak için eğitiyoruz. Gerçek dünyadaki veriler çoğunlukla etiketlenmemiş ve yapılandırılmamış biçimdedir. Bu yapılandırılmamış veriler görüntü, ses ve metin verileri olabilir. Yararlı bilgiler sığ olan sinir ağlarından kolayca türetilemez, yani bunlar daha az sayıda gizli tabakaya sahip olanlardır. Çok sayıda gizli katmana sahip olan ve görüntülerden anlamlı bilgiler elde edebilen derin sinir ağı tabanlı CNN sınıflandırıcıyı önerilmektedir.

Anahtar kelimeler: Görüntü, Sınıflandırma, Evrişimsel Sinir Ağı, TensorFlow, Derin Sinir Ağı.

Öncelikle projede ortaya konulmuş adımları anlayabilmemiz için sınıflandırmanın ne olduğunu inceleyelim. Görüntü Sınıflandırması, çok sınıflı bir görüntü kümesinden görüntüleri sınıflandırmanın işlevini ifade eder. Bir görüntü veri kümesini birden çok sınıfa veya kategoriye sınıflandırmak için, veri kümesi ile sınıflar arasında iyi bir anlayış olmalıdır.

Bu makalede;

1. Görüntüleri sınıflandırmak için derin öğrenme tabanlı Evrişimsel Sinir Ağı (CNN) önerilmektedir.

2. Önerilen model, veri kümesini eğitmek ve doğrulamak için yaklaşık 300 dakika süren köpek ve kedilerin 20.000 görüntüsünü içeren veri kümesi içinde 10.000 kez yinelendikten sonra yüksek doğruluk elde eder.

Bu projede, bir evrişimsel tabaka, RELU fonksiyonu, bir pooling (havuzlama) tabakası ve fully connected (tam bağlı) bir tabakadan oluşan bir evrişimsel sinir ağı kullanılmaktadır. Evrişimsel sinir ağı, derin öğrenmeyi kullanarak görüntü tanıma söz konusu olduğunda otomatik bir seçimdir.

Convolutional Neural Network

Sınıflandırma amacıyla, evrişimsel ağı [INPUT-CONV-RELU-POOL-FC] olarak mimariye sahiptir.

INPUT- Görüntü olarak ham piksel değerleri.

CONV- İçeriği nöronların ilk kümesindeki çıktı.

RELU- Aktivasyon fonksiyonunu uygular.

POOL- Aşağı örnekleme işlemi yapar.

FC- Sınıf puanını hesaplar.

Bu yayında, resim karakterizasyonu için çok kademeli bir derin öğrenme sistemi planlanır ve uygulanır. Özellikle önerilen yapı;

1) Resim gruplama sorunu için ayrımcı ve öğretici olmayan yakındaki nöronları nasıl bulunacağı gösterilmektedir.

2) Bu alanlar göz önüne alındığında seviye sınıflandırıcıyı nasıl görüntüleyebileceğini gösterilmektedir.

YÖNTEMLER

Kaggle veri tabanından 20.000 tane köpek ve kedi görüntüsü içeren bir veri kümesi kullanılmıştır. Kaggle veri tabanında, mevcut toplam 25000 görüntü vardır. Görüntüler eğitim ve test setine bölünmektedir. Eğitim setine 12.000 görüntü ve test setine 8.000 görüntü girilmektedir. Eğitim seti ve test setinin bölünmüş veri kümesi, verilerin çapraz doğrulanmasına yardımcı olur ve hatalar üzerinde bir kontrol sağlar; çapraz doğrulama, önerilen sınıflandırıcının kedi veya köpek görüntülerini doğru bir şekilde sınıflandırıp sınıflandırmadığını kontrol eder.

Aşağıdaki deneysel kurulum, bilimsel bir Python geliştirme ortamı olan Spyder üzerinde yapılır.

  1. İlk olarak Scipy, Numpy ve Tensorflow gibi gerekli kullanılmalıdır.
  2. Bir başlangıç zamanı, eğitim yolu ve bir test yolu sabit olarak olmalıdır. Görüntü yüksekliği ve görüntü genişliği 64 piksel olarak sağlandı. Sonra 20.000 görüntü içeren görüntü veri kümesi yüklenir. Boyutların büyük sayılar olmasınedeniyle yeniden boyutlandırılır ve yinelenir. Bu süre yaklaşık olarak 5-10 dakika sürmektedir.
  3. Bu veriler TensorFlow ile beslenir. TensorFlowda, tüm veriler bir hesaplama grafiğindeki işlemler arasında geçirilir.Tensorlerin bu durumu kolayca yorumlayabilmesi için özellikler ve etiketler bir matris formunda olmalıdır.
  4. Tensorflow Tahmini: Model içindeki verileri çağırmak için, oturumu, ilgili verilerle tüm yer tutucuların adının yerleştirildiği ek bir argüman ile başlatırız. TensorFlowdaki veriler değişken şeklinde geçirildiğinden, bir grafik bir oturumda çalıştırılmadan önce başlatılması gerekir.Bir değişkenin değerini güncellemek için, daha sonra çalıştırabilecek bir güncelleme işlevi tanımlarız.
  5. Değişkenler başlatıldıktan sonra, durum değişkeninin başlangıç değerini yazdırırız ve güncelleme işlemini çalıştırırız. Bundan sonra aktivasyon fonksiyonunun dönüşü, aktivasyon fonksiyonunun seçimi ağın davranışı üzerinde büyük bir etkiye sahiptir. Belirli bir düğüm için etkinleştirme işlevi, bir girdi veya bir girdi kümesi sağlanan belirli düğümün çıktısıdır.
  6. Ardından, giriş özelliklerimizi eğitmek için ihtiyaç duyacağımız hiper parametreleri tanımlarız. Daha karmaşık sinir ağlarında daha çok hiper parametreyle karşılaşmaktayız.Hiper parametrelerimizden bazıları öğrenme oranı gibi olabilir.
     Başka bir hiper parametre, verilerimizi kaç kez eğittiğimiz yineleme sayısıdır. Bir sonraki hiper parametre, bir seferde sınıflandırma için gönderilecek görüntü kümesinin boyutunu seçen batch size boyutudur.
  7. Son olarak, tüm bunlardan sonra, TensorFlow oturumunu başlatırız, bu da TensorFlow’un çalışmasını sağlar, çünkü bir oturumu başlatmadan bir TensorFlow işe yaramaz. Bundan sonra modelimiz eğitim sürecine başlayacaktır.

SONUÇLAR

🖇 Derin mimari olarak evrişimsel bir sinir ağı kullandık ve bununla birlikte TensorFlow derin öğrenme kütüphanesini uyguladık. Aşağıdaki deneysel sonuçlar, bilimsel bir Python geliştirme ortamı olan Spyder üzerinde yapıldı. 20.000 görüntü kullanıldı ve batch size 100’e sabitlendi.

🖇 Modellerin doğruluğunun, eğitim verilerinden ziyade test verileri açısından incelenmesi esastır. TensorFlow kullanarakevrişimsel sinir ağını çalıştırmak için, Windows 10 makinesi kullanıldı, donanımın TensorFlow’un CPU sürümüne sahip olan bir 8 GB RAM ‘e sahip olduğu belirtilmiş.

📌 Yineleme sayısı arttıkça eğitim doğruluğu da artar, ancak eğitim süremiz de artar. Tablo 1, elde ettiğimiz doğrulukla sayı çizgisini gösterir.

Number of iterations vs Accuracy

Grafik, birkaç bin tekrarlamadan sonra neredeyse sabite ulaşmıştır. Farklı batch size değerleri farklı sonuçlara yol açabilir. Biz görüntüler için bir batch size değeri 100 olarak belirlenmiştir.

✨ Bu yazıda, önerilen yöntem ile görüntülerin sınıflandırılmasında yüksek doğruluk oranı elde etmiştir. CNN sinir ağı TensorFlow kullanılarak uygulandı. Sınıflandırıcının doğruluğu açısından iyi performans gösterdiği gözlendi. Bununlabirlikte, CPU tabanlı bir sistem kullanıldı. Bu yüzden deney ekstra eğitim süresi aldı, eğer GPU tabanlı bir sistem kullanılsaydı, eğitim süresi kısalırdı. CNN modeli, tıbbi görüntüleme ve diğer alanlarla ilgili karmaşık görüntü sınıflandırma probleminin çözümünde uygulanabilir.

REFERANSLAR

  1. https://www.researchgate.net/figure/Artificial-neural-network-architecture-ANN-i-h-1-h-2-h-n-o_fig1_321259051.
  2. Hinton, G. E., & Salakhutdinov, R. R. (2006). Reducing the dimensionality of data with neural networks. science, 313(5786), 504- 507.
  3. Yoshua Bengio, “Learning Deep Architectures for AI”, Dept. IRO, Universite de Montreal C.P. 6128, Montreal, Qc, H3C 3J7, Canada, Technical Report 1312.
  4. Yann LeCun, Yoshua Bengio & Geoffrey Hinton, “Deep learning “, NATURE |vol 521 | 28 may 2015
  5. Yicong Zhou and Yantao Wei, “Learning Hierarchical Spectral–Spatial Features for Hyperspectral Image Classification”,IEEE Transactions on cybernetics, Vol. 46, No.7, July 2016.

A'dan Z'ye SSD (Single Shot Multibox Detector) Modeli

Bu yazıda, SSD MultiBox nesne algılama tekniğini A’dan Z’ye tüm açıklamaları ile birlikte öğreneceğiz. SSD modeli, RCNN hatta Faster R-CNN mimarisine göre çok daha hızlı çalıştığı için kimi zaman nesne tespiti söz konusu olduğunda kullanılmaktadır.
Liu ve arkadaşları tarafından 2016 senesinde ortaya konulan bu model, arka plan bilgisini kullanarak nesneyi algılamaktadır [2]. Single Shot Multibox Detector yani Tek Atış Çoklu Kutu Algılama (SSD) ilehızlı ve kolay modelleme yapılacaktır. Peki ya tek atış derken neden bahsediliyor olabilir? Adından da anlayacağınız üzere tek seferde nesne algılama imkanını bize sunmaktadır.

Doğru bilgiler vermek adına birçok doküman, video kayıtlarını harmanladım ve sizlere işin tüm alfabesini anlatmaya başlıyorum. RCNN ağlarda öncelikli olarak nesne olması muhtemel bölgeler belirleniyordu ve daha sonra Fully Connected katmanlar ile bu bölgeler sınıflandırılıyordu. RCNN ağı ile nesne tespiti 2 ayrı aşamada gerçekleştirilirken SSD bu işlemleri tek adımda uygulamaktadır.
İlk adım olarak SSD mimarisini yakından inceleyelim. Görüntü biraz ufak geliyorsa yakınlaştırarak konvolüsyon katmanlarının içeriklerini ve boyutlarını görebilirsiniz.

Mimariye her zamanki gibi girdi olarak bir görüntü verilmektedir. Daha sonra bu görüntü konvolüsyonel sinir ağlarından geçirilmektedir. Dikkat ettiyseniz konvolüsyonel sinir ağlarının boyutları farklıdır. Bu şekilde modelde farklı özellik haritaları (feature maps) çıkarılmaktadır. Bu durum istenilen bir durumdur. Özellik haritalarında 3x3lük evrişimsel filtre kullanılarak belirli miktarda sınırlayıcı dikdörtgen elde edilmektedir.
Ek Açıklamalar
Oluşturulmuş bu dikdörtgenler aktivasyon haritasında olduğu için farklı boyutlardaki nesneleri algılamada son derece iyi seviyededir. İlk verdiğim görselde girdi olarak 300×300’lük bir görüntü gönderilmiştir. Dikkat edecek olursanız ilerledikçe görüntü boyutları düşürülmüştür. En son gerçekleşen konvolüsyonel sinir modelinde ise boyut 1 olana kadar düşürülmüştür. Eğitim sürecinde belirlenen sınırlar ile test sonucunda gerçekleşen tahminler arasında karşılaştırma yapılmaktadır. Bu tahminler arasında en iyiyi bulmak için %50 methodu kullanılmaktadır. %50′ den büyük olan sonuç seçilmektedir. Tıpkı lojistik regresyonda var olan durum gibi düşünebilirsiniz.
Örneğin, görüntü boyutları Conv8_2’de 10×10×512 boyutundadır. 3×3 konvolüsyonel işlemi uygulandığında ve 4 sınırlayıcı kutu kullanılarak her sınırlayıcı kutu için (classes + 4) çıkışlara sahip olacaktır. Böylece, Conv8_2’de çıkış 10×10×4×(c+4) ‘ dir. Nesne algılama için 10 nesne sınıfı ve ek olarak bir arka plan sınıfı olduğunu varsayalım. Böylelikle çıktı 10×10×4×(11+4)=6000 olacaktır. Sınırlayıcı kutular ise 10×10×4 = 400 sayısına ulaşacaktır. Girdi olarak aldığı görüntüyü büyükçe bir tensör çıktısı olarak sonlandırıyor. Araştırdığım bir videoda bu bölge seçimleri ile ilgili şöyle açıklayıcı bir yorum dinlemiştim:

Her bölge için farklı işlemler yapmak yerine bütün tahminleri tek seferde CNN ağında gerçekleştirmekteyiz.

Yukarıdaki görselde solda görülen görüntü orijinal iken sağ tarafta yer alan bölgedeki her hücrede 4 sınırlayıcı kutu tahmini yapılmaktadır [3]. Burada görülen grid yapıları içerisinde sınırlayıcı dikdörtgenler bulunmaktadır. Bu şekilde nesnenin yer aldığı gerçek bölgenin tahmini yapılmaya çalışılmaktadır.
Results
Araştırdığım dokümanlarda yukarıda verdiğim örnek ile kaşılaştım. Gerçekten SSD mimarisini anlamak adına muazzam bir kaynak olduğu için sizler ile de paylaşmak istedim. Bakın dikkat ettiyseniz görselde olması muhtemel nesnelere bir yüzdelik atamış. Örneğin arabaya %50 sonucunu vermiş. Ancak %50′ nin üzerindeki ihtimaller daha yüksel ihtimal olacağı için kazanmış olacaktır. Yani bu görselde bir insan ve bir bisiklet olma ihtimali araba olmasından daha yüksek ihtimallidir. SSD yapısını anlamış olmanızı diliyorum. Bir sonraki yazımda ise SSD modelinin kodlanmasını göstereceğim. Esen kalmanız dileğiyle ✨
 

REFERANSLAR

  1. Bilgisayar Görüşü ile Yüz ve Nesne Tanıma | R-CNN, SSD, GANs, Udemy.
  2. Dive to Deep Learning, 13.7. Single Shot Multibox Detection (SSD), https://d2l.ai/chapter_computer-vision/ssd.html.
  3. https://jonathan-hui.medium.com/ssd-object-detection-single-shot-multibox-detector-for-real-time-processing-9bd8deac0e06.
  4. https://towardsdatascience.com/review-ssd-single-shot-detector-object-detection-851a94607d11.
  5. https://towardsdatascience.com/understanding-ssd-multibox-real-time-object-detection-in-deep-learning-495ef744fab.
  6. Single-Shot Bidirectional Pyramid Networks for High-Quality Object Detection, https://www.groundai.com/project/single-shot-bidirectional-pyramid-networks-for-high-quality-object-detection/1.

Relationship Between Human Brain and CNN

Hello, we all know that the image classification process of convolutional neural networks is influenced by the working principle of neural networks in the human brain. Let’s examine the relationship between them.
CONVOLUTIONAL NEURAL NETWORKS
       Convolutional Neural Networks are deep learning architecture that is widely used in computer vision studies such as image classification, localization, object perception. Convolutional neural networks are the field of study associated with machine learning to analyzing visual imagery. CNN choose unique features from pictures to distinguish the given figure. This process also happening in our brains unconsciously.
Biological Inspiration of Convolutional Neural Network (CNN)
Mapping of human visual system and CNN
Research in Sensor Processing (1960’s and 1970’s)
These works are prime Dr. Hubel and Dr. Wiesel worked on the area of Sensory Processing. In which, they inserted a micro-electrode into the primary visual cortex of an partially anesthetized cat so that she can’t move and shown the images of line at different angles to the cat.
Through the micro-electrode they found that some neurons fired very rapidly by watching the lines at specific angles, while other neurons responded best to the lines at different angles. Some of these neurons responded to light and dark patterns differently, while other neurons responded to detect motion in the certain direction.

Where is visual cortex located in humans brain?

 

                                                                                     Figure 1: Functional areas for the human brain

 
Visual Cortex is the part of the Cerebral Cortex of the Brain that processes the visual information. Visual nerves from the eyes runs straight to the primary visual cortex. Based on the structural and the functional characteristics it is divided into different areas, as shown in the following picture:
 

Figure 2: Different areas of visual cortex

 
 Visual cortex: Functions
The visual information is passed from one cortical area to another and each cortical area is more specialized than the last one. The neurons in the specific field only respond to the specific actions.
Some of them with their functions are as follows:

  1. Primary visual cortex or V1: It preserves spatial location of visual information i.e. orientation of edges and lines. It is the first one to receive the signals form what eyes have captured.
  2. Secondary visual cortex or V2: It receives strong feed-forward connections from V1 and sends strong connections to V3, V4 and V5. It also sends strong feedback network to V1. Its function is to collects spatial frequency, size, color and shape of the object.
  3. Third visual cortex or V3: It receives inputs from V2. It helps in processing global motion and gives complete visual representation.

      4. V4: It also receives inputs from V2. It recognizes simple geometric shapes and also forms recognition of object. It is not tuned for complex objects              as Human Faces.

  1. Middle temporal (MT)visual area or V5: It is used to detect speed and direction of moving visual object i.e. motion perception. It also detects motion of complex visual features. It receives direct connections from V1.
  2. Dorsomedial (DM) area or V6: used to detect wide field and self-motion stimulation. Like V5 it also receives direct connections from V1. It has extremely sharp selection of the orientation of visual contours.

Structure of Convolutional Neural Networks
CNN processes the image with various layers.
Layers Of CNN
Input Layer: In this layer, data is transmitted raw to the network.
Convolutional Layer: Used for detecting features.
Non-Linearity Layer: Introduction to nonlinearity to the system
Pooling (Down sampling) Layer: Decrease count of weights and check the conformation
Flattening Layer: Prepare the data for classical neural network
Fully Connected Layer: Standard Neural Network used in classification

                  Figure 3: CovNet Diagram

As a result, CNN imitates the work of the visual cortex in our brain. If we look the plane picture, we can define the plane by separating the features such as two wings, engines, windows. CNN does the same thing but previously they detect low-level properties such as curves and edges and create them up to more abstract concepts. Don’t you think it’s great? Hope to see you in our next blog.
 
REFERENCES

  1. http://scipy.github.io/old-wiki/pages/Cookbook/Matplotlib/HintonDiagrams
  2. https://medium.com/@tuncerergin/convolutional-neural-network-convnet-yada-cnn-nedir-nasil-calisir-97a0f5d34cad
  3. https://medium.com/@gopalkalpande/biological-inspiration-of-convolutional-neural-network-cnn-9419668898ac
  4. Kuş, Zeki.”Mikrokanonikal Optimizasyon Algoritması ile Konvolüsyonel Sinir Ağlarında Hiper Parametrelerin Optimize Edilmesi”Fatih Sultan Mehmet University,2019 (pp. 16-21)

 
 

CNN (Evrişimsel Sinir Ağları) ve Cilt Kanseri Tanısı

Yapay zeka teknolojileri hızla ilerlemekte .Bu ilerleme sayesinde sağlık alanı da birçok yönden gelişim ve değişim süreci içine girmiş durumda. Bu yazımızdaysa yapay zeka destekli bir teknoloji sayesinde cilt kanseri tanısı nasıl konulur ve başarı oranı nedir bunu inceleyeceğiz.