Aktivasyon Fonksiyonlarının Etkileri

Derin Öğrenme içerisinde aktivasyon fonksiyonları, kilit bir rol oynayarak başarı oranlarına doğrudan etki ederler. Bunun temel nedeni, sinir ağları içerisindeki çıkış katmanlarında başarı değerlerine ulaşmadan önce, belirlenen katsayıların ve ağırlıkların değişimi ile başarı değerinin değişimine aktivasyon fonksiyonu sayesinde erişebiliriz. Genellikle fonksiyonların yapıları lineer ve lineer olmayan şeklinde değişiklik gösterir. Bu da kümeleme, regresyon gibi yapılar için hangisinin başarısının daha iyi olduğuna modeller üzerinde denenerek bulunabilir ya da halihazırda kaynaklar kısmına bıraktığım linkler aracılığıyla ulaşabilirsiniz. Her aktivasyon fonksiyonu için farklı şekilde formüller vardır ve bunlar için kurulacak olan kod dizinlerini dikkatli şekilde oluşturmalıyız. Nöron işlemleri için formül, ağırlıklar ve bias (yanlılık) değerinden meydana gelir. İstatistik bilgisi, bu işlemler bünyesinde en önemli noktalardan birisidir. Göz önünde çok bulundurulmayıp genelde kod yazım kritik rol gibi gözükse bile, asıl önemli olan şey ne yaptığını bilmektir. Matematik ve İstatistik bilgisi göz ardı edilemeyecek kadar mühim bir konudur. Veri Bilimi, Derin Öğrenme ve Makine Öğrenmesi süreçlerinin tamamında matematik ve istatistik önemli rol oynamaktadır.

 

 

Üstteki formülde de gördüğünüz gibi, beta olarak bilinen ek hata parametresi aslında bias yani yanlılıktır. İstatistik eğitimi boyunca öğretilen en önemli yapılardan birisi yanlılık yapısıdır. Kullandığımız ve işlediğimiz sinir ağları yapısında da yanlılık son derece değerli bir konudur ve göz ardı edilemez. Aktivasyon fonksiyonları, sinir ağları üzerinde etkin bir şekilde çıkış ve giriş kısımlarında sonuç için seçimi çok önemlidir. Öğrenme katkısı sağlayan bu fonksiyonların görüntüsü, girdi başına ve seçilen parametreler, katsayılar boyunca değişiklik göstermektedir. Alt tarafta sunduğum görüntü, aktivasyon fonksiyonlarının girdileri ve çıktıları olarak değerlendirilen durumu içermektedir. Bu kodlara erişmek isteyenler için son kısımda link olarak bırakacağım. Her aktivasyon fonksiyonun kendi içerisinde başarı kriterleri değişkenlik göstermektedir. Çıkış katmanında başarısı ve daha mantıklı geldiği için çoğunlukla Softmax kullanılmaktadır. Yaygın olarak bilinen iki isim vardır. Bunlar için örnek softmax ve sigmoid söylenebilir. Bu alanda kariyer yolculuğuna girişen çoğu insan, bu iki aktivasyon fonksiyonunu sık bir şekilde duymaktadır. Sinir ağları üzerine çalışan veri bilimciler, ilk başlangıç adımında ReLU ile denemeler yapmaktadır.

 

 

Aktivasyon fonksiyonları, x ve y eksenleri boyunca başarı parametrelerine göre değişiklik gösterir. Hedeflenen asıl başarı oranı, y ekseni boyunca veri arttıkça tepe noktasına denk gelmektir. Bunu sağlamak için hem parametre değerleri hem katsayı ayarlaması hem de yapılan işlemler boyunca seçilen aktivasyon fonksiyonu etkilidir. Back propagation – forward propagation olarak bilinen ileri ve geri yayılım sayesinde katsayıların tekrardan belirlenip optimum seviyede tutulması sinir ağları boyunca inanılmaz bir yeri vardır. Bu işlemler tamamen matematik ile bağlantılıdır. Türev konusunda bilgi sahibi olmalısınız ve bu alanda çalışıyorsanız önemli olan kod yazmak değil, tam olarak ne yaptığınızı bilerek yapmaktır. Alt tarafta bıraktığım şekilde gözlemleyebilirsiniz, zaten geriye doğru dönüş için sürekli türevsel işlemler yapıyoruz. Burada matematik altyapısı üzerine kurulan bir sinir ağları vardır. Bu işlemler sonrası aktivasyon fonksiyonları çıkış kısmında en uygun olanı bularak başarısını gözlemleyebiliriz. Böylece model için optimum fonksiyonu bulup onun kullanım durumlarını da proje bazlı denedikçe rahatlıkla görebiliriz. Bu durumlar sonucunda başarı durumları değişkenlik gösterir.

 

 

Son kısımda aktivasyon fonksiyonlarını anlatıp ne işe yaradıklarından kısaca bahsedeceğim. Step Fonksiyonu, Doğrusal Fonksiyon, Sigmoid Fonksiyonu, Hiperbolik Tanjant Fonksiyonu, ReLU, Leaky ReLU, Swish, Softmax Fonksiyonu aktivasyon fonksiyonları için örnek verilebilir.

Step Fonksiyonu: Eşik değeri ile ikili sınıflandırma yapar.

Doğrusal Fonksiyon: Birkaç aktivasyon değeri üretir fakat türevi sabittir.

Sigmoid Fonksiyonu: Hemen herkesin bildiği fonksiyondur ve [0,1] aralığında çıktı verir.

Hiperbolik Tanjant Fonksiyonu: [-1,1] aralığında çıktı veren non-linear bir fonksiyondur.

ReLU Fonksiyonu: Esasında doğrusal olmayan bir fonksiyondur. ReLU fonksiyonun özelliği, negatif girdiler için 0 değeri ve pozitif değerleri sonsuza kadar alır. [0, + ∞ )

Leaky ReLU Fonksiyonu: Leaky ReLU ayırıcı özellik, 0 değerine yakın eksenler ile geçiş yapmış fakat 0 a orijin üzerinde temas etmesi ve ReLU’daki kaybolan gradyanları negatif bölge ile bünyesinde tutar.

Swish Fonksiyonu: Bu fonksiyon, girdiler ile sigmoid fonksiyonunun çarpımını çıktı olarak üretmektedir.

Softmax Fonksiyonu: Çoklu sınıflandırma problemleri için kullanılan bu fonksiyon, verilen her bir girdinin bir alt sınıfa ait olma olasılığını gösteren [0,1] arası çıktılar üretmektedir.

 

 

Aldığım görselleri ve tanımlarından faydalandığım kısımları references bölümünde yazdım. Yazımı sevdiyseniz geri bildirimde bulunursanız çok sevinirim.

 

References :

-https://www.derinogrenme.com/2018/06/28/geri-yayilim-algoritmasina-matematiksel-yaklasim/

-https://medium.com/smlr-center/sinir-a%C4%9Flar%C4%B1-ve-derin-%C3%B6%C4%9Frenme-vi-hesaplama-grafi%C4%9Fi-1caf57ec03f9

-https://ayyucekizrak.medium.com/derin-%C3%B6%C4%9Frenme-i%C3%A7in-aktivasyon-fonksiyonlar%C4%B1n%C4%B1n-kar%C5%9F%C4%B1la%C5%9Ft%C4%B1r%C4%B1lmas%C4%B1-cee17fd1d9cd

-http://buyukveri.firat.edu.tr/2018/04/17/derin-sinir-aglari-icin-aktivasyon-fonksiyonlari/

-https://www.aliozcan.org/ai/aktivasyon-fonksiyonlari/

-https://globalaihub.com/degisken-secimi-hakkinda-temel-bilgiler/

-https://globalaihub.com/basic-information-about-feature-selection/

Featured Image for Keras

Keras ve TensorFlow’a Hızlı Bir Başlangıç

Keras, Python dilinde tasarlanmış bir derin öğrenme kütüphanesidir. Bir derin öğrenme projesinde çalıştıysanız veya bu alana aşinalığınız var ise mutlaka Keras ile karşılaşmışsınız demektir. İçerisinde derin öğrenme modellerinin oluşturulmasına imkan verecek ve verilerimizi eğitmemiz için ortam sağlayacak birçok seçenek mevcuttur.

Keras başlangıçta araştırmacıların daha hızlı denemeler yapabilmeleri için geliştirilmiştir.

Keras, gerçekten de veri eğitimi ve ön işlenmesi için olabildiğince hızlı çalışmaktadır. Keras’ı daha yakından tanımak isterseniz bu link üzerinden kendi dokümantasyonlarına erişim sağlayabilirsiniz.

Keras’ın Öne Çıkan Avantajları

🔹Hem CPU hem GPU üzerinde işlemlerinizi gerçekleştirebilmenizi sağlar.

🔹Evrişimli ve yinelemeli ağlar için  önceden tanımlı modüller barındırmaktadır.

 

Keras, makine öğrenimi platformu Theano ve TensorFlow üzerinde çalışan Python’da yazılmış bir derin öğrenme API’sidir.

🔹 Keras, Python 2.7′ den itibaren tüm versiyonları desteklemektedir.

Keras, Tensorflow, Theano ve CNTK

Keras, yüksek seviyeli derin öğrenme modellerini gerçekleştirebilecek yapıları sunan kütüphanedir. Birçok kez projelerimizde kullandığımız backend enginleri bu yazıda tanımlayacağız. Sanırım Türkçe olarak bu kavramı arka uç motor olarak tanımlıyorlar ancak ben kavramı türkçeleştirmeyeceğim. Arka planda çalışan bu motorlardan aşağıda Tensorflow’un kullanımına yer vermekteyiz.

Keras Upload

Activation Function

🔹 Kullanmak istediğimiz kütüphaneleri aşağıdaki görseldeki gibi seçerek uygulayabiliriz. Kullanmakta olduğumuz 3 adet backend uygulaması bulunmaktadır. Bunlar TensorFlow, Theano ve Microsoft Cognitive Toolkit (CNTK) backend uygulamalarıdır.

Uploading Library

Aşağıda gördüğünüz platformlar derin öğrenmede çokça karşılaştığımız platformlardır. Dipnot olarak TensorFlow kullanırken GPU tabanlı çalışmanızı öneririm. Performans açısından GPU kullanımı ile daha hızlı ve performanslı sonuçlar elde ettiğinizi göreceksiniz.

Özetle demek istediğim, Keras bu 3 kütüphane ile uyumlu olarak çalışmaktadır. Üstelik kodda herhangi bir değişiklik yapmadan bu üç kütüphane ile backend engine değiştirerek çalışmaktadır.

Gelin sizlerle birlikte Keras ile birlikte kullanabileceğimiz TensorFlow’ a daha yakından değinelim.

TensorFlow

➡️ Çalışacağınız proje için Python ve Pip kurulu olup olmadığını versiyon kontrolü ile sağlayalım.

Version Control

➡️ Aktif olarak çalıştığım Mask RCNN projem için çalışmalara devam ediyorum. Sizler de herhangi bir proje oluşturabilir veya benim gibi segmentasyon projesi oluşturabilirsiniz. Eğer aynı projede devam etmek istiyorsanız bağlantıya tıklayarak gerekli olan kütüphanelerin listesine erişebilirsiniz.

Collecting Requirements

Dilerseniz bu kütüphaneleri teker teker de yükleyebilirsiniz. Fakat ben hızlı olması açısından requirements.txt dosyası olarak yüklemekteyim.

➡️ Amacımızdan şaşmadan, Keras ve TensorFlow’a geri dönüş yapalım. Mask RCNN projem için başka bir yazıda daha buluşabiliriz. Şimdi TensorFlow’ a hızlıca bir giriş yapalım. Hem projemize import edelim hem de kullandığımız versiyonu yazdıralım.

TensorFlow

Çıktı olarak gördüğünüz üzere TensorFlow’ un 2.3.1 versiyonunu kullanmaktayım. Söylediğim gibi bunu CPU veya GPU tabanlı kullanabilirsiniz.

Output Version

➡️ Veride ön işleme yaparken ise aşağıdaki gibi tensorflow.keras tpreprocessing modülünü dahil ederek işlemlerimize devam edebiliyoruz. Şuan aktif olarak metot çalıştırmadığım için pasif görünüyor ancak kullanacağımız metotu yazdığımızda otomatik olarak rengi aktifleşecektir.Tensorflow Preprocessing

➡️ Örnek olarak TensorfFlow ile ön işlemeyi aşağıdaki gibi gerçekleştirebiliyoruz. Veri setimizi eğitim ve test olarak ayırıyoruz ve validation_split değişkeni ile %20’sinin test verisine ayrıldığını biliyoruz.

Bu şekilde sizlerle birlikte Keras’ a ve TensorFlow’a hızlı bir başlangıç yapmış bulunmaktayız. Bir sonraki yazımda görüşmek dileğiyle. Esen kalın ✨

REFERANSLAR

  1. https://keras.io/about/.
  2. Wikipedia, The free encyclopedia, https://en.wikipedia.org/wiki/Keras.
  3. https://keras.rstudio.com/articles/backend.html.
  4. François Chollet, Python ile Derin Öğrenme, Buzdağı Yayıncılık.
  5. https://www.tensorflow.org.
  6. https://www.tensorflow.org/tutorials/keras/text_classification.

Öksürük Sesinden Koronavirüs Tespiti

Toplumumuz gibi diğer tüm dünya ülkelerini etkisi altına almış olan Koronavirüs hız kesmeden can almaya devam ediyor. İçinde bulunduğumuz süreçte virüsle savaşmak güç olmaya başlamış durumda. Her gün artan vaka sayısının tedbirsizlikle ve alınan önlemlerin yetersizliği ile doğru orantılı olduğu gözler önünde iken maske takmama konusunda inatçı vatandaşların ya da Covid pozitif olduğundan bir haber olan insanlar için çözümü ABD´de Massachusetts Teknoloji Enstitüsü (MIT) uzmanları buldu. ,yapay zeka teknolojisiyle birlikte geliştirdikleri model ile öksürük sesinden hastalık belirtisi göstermeyen insanların tespitini yapacaklarını duyurdu.

 

Peki Nedir Bu Yapay Zeka Modeli?

Covid 19 ile enfekte olmuş kişilerin bir kısmı asemptomatik olarak tanımlanırlar yani virüse dair fiziksel bir belirti, semptom taşımadan hastalığı geçirirler. Belirti taşımayan insanların test yapma olasılığı düşük olacağı için farkında olmayan pozitifli hasta, virüsü başka bir insana geçirebilir. Bu olasılığın yüzdesinin fazla olduğunu ve sonucunda ölümün kaçınılmaz olduğunu savunan MIT araştırmacıları, asemptomatik kişilerdeki görülen öksürüğün sağlıklı bir bireyin öksürüğünden farklı olduğunu tespit ettiler. Bu keşfedilen farklılığın,insan kulağı tarafından belirlenemeyeceğini ancak yapay zeka destekli bir modelin buna çözüm olabileceğini düşünüp bir model geliştirdiler.

Geliştirilen model için gönüllü insanlar bulunup, onların kaydetmiş olduğu öksürük sesi örneği ve kelime sesleri üzerinde model eğitildi. Eğitilen model, Covid 19 pozitifli insanların yüzde 98,5’ini, asemptomatik Covid-19 hastalarının yüzde 100’ünü doğru bir şekilde tespit etti ve böylece modelin yüzde 95 başarı oranı gerçekleşmiş oldu.

Ekip, modeli kullanıcı dostu bir uygulamaya dahil etmek için çalışıyor; model FDA onaylıysa ve büyük ölçüde kullanılmaya başlanırsa, korona virüs için asemptomatik olma ihtimali yüksek olan kişilerin kullanımı ücretsiz, kullanışlı bir ön tarama aracı olabilir. Bu kullanıcı telefonuna indirdiği bu uygulamayla her gün telefonuna öksürüp, virüsü taşıyıp taşıyamadığını öğrenebilir dolayısıyla bu yöntem resmi bir testin onayına tabiidir.

MIT’nin Auto-ID Laboratuvarı’nda araştırmacı bilim insanı olan ortak yazar Brian Subirana, “Bu grup teşhis aracının etkili bir şekilde uygulanması için bir sınıfa, fabrikaya veya restorana gitmeden önce kullanılırsa, salgının yayılması azaltılabilir.” Açıklamasında bulundu.

Pandeminin başlangıcı olan günlere baktığımızda, birçok araştırmacı aslında bu konunun etrafında dolaşıyordu ama hiç hayata geçen bir proje olmamıştı. Daha önceleri de araştırmacılar, zatürre ve astım gibi durumları doğru bir şekilde teşhis etmek için öksürük kayıtları üzerine algoritmalar eğitiyordu. Aynı işlemleri tekrar eden MIT ekibi de sadece hafızadaki bilgilerin kaybı değil, zayıflamış ses tellerin de görülen zayıflığı da nöromüsküler bozulmayla ilişkilendirip, alzheimer hastalığı üzerinde çalışmalar yapmıştı. Alzheimer hastalığının belirtilerini tespit edip edemeyeceklerini görmek için zorunlu öksürük kayıtlarını analiz ederek AI modelleri geliştiriyordu.

Öncelikli olarak, farklı derecelerde vokal kord gücü ile ilişkili sesleri ayırt etmek için ResNet50 olarak bilinen, genel bir makine öğrenme algoritması veya sinir ağını eğittiler. Daha önce yapılmış araştırmalarda insan duygusu olarak gösterilen ‘Hmmm’’ sesinin kalitesinin, bir kişinin ses tellerinin ne kadar zayıf veya güçlü olduğunun bir göstergesi olabileceğini göstermişti. Araştırmacılar, “onlar” kelimesini “o” ve “o zaman” gibi diğer kelimelerden ayırmak için sinir ağını 1000 saatten fazla konuşma içeren bir sesli kitap veri seti üzerinde eğitti.

Ekip konuşmada en belirgin olarak görülen duygusal ifadelerin ayırt edilebilmesi için ikinci bir sinir ağından destek almak zorunda kaldı çünkü Çünkü Alzheimer hastalarının (ve daha genel olarak nörolojik düşüşü olan kişilerin) mutluluklarını ifade etmekten çok üzgün oldukları, acı çektikleri, hayal kırıklığa uğradıklarını gösteren duyguları sergiledikleri görüldü. Bu deneyin üzerine araştırmacılar sakin, mutlu, huzurlu, nötr gibi duygusal ruh hallerini canlandıran bir veri kümesi oluşturarak, bir duyarlı konuşma sınıflandırıcı modeli geliştirdiler.

Ardından üçüncü sinir ağına ihtiyaç duyan araştırmacılar, akciğer ve solunum performansındaki değişiklikleri ayırt etmek için bir öksürük veri tabanı üzerinde yeniden bir sinir ağını eğitti.Son olarak ekip eğitmiş olduğu üç modelide birleştirerek kas zayıflamasını tespit etmek için bir algoritma yerleştirdi. Aslında algoritma bu işlemi, işittiği gürültüyü simüle ederek, güçlü öksürükleri (gürültü üzerinden duyulabilenleri) daha zayıf olanlardan ayırt ederek yapıyor.

Tüm bunların sonucunda ekip, Al desteğiyle, alzheimer hastalığı dahil olmak üzere, ses kayıtları üzerinde denemeler yaparak bunu geliştirdi ve alzheimer’in örneklerini mevcut modellerden daha iyi belirleyebileceğini göstermiş oldu. Elde edilen verilen doğrultusunda, ses teli gücü, duygu, akciğer ve solunum performansı ve kas bozulması ile birlikte hastalığın teşhisinde etkili belirteçler olduğunu gösterdi.

Aynı ekip nisan ayında, alzheimer, astım, zatürre ve Covid 19 pozitifli hastalardan on binlerce öksürük numunesi topladı. İnsanların web tarayıcısına sahip herhangi bir araçtan, bu telefon olabilir, tablet,dizüsüstü bilgisayar olabilir, öksürüklerini kaydedebilecekleri bir internet sitesi kurdular. Uygulamaya katılan katılımcılar, bu uygulamanın deneme amaçlı olup, herhangi bir doktor kontrolü veya test dahilinde olmadığına dair bir anket doldurdular. Çünkü yaptıkları bu uygulama henüz yasallaşmamış olduğu için verilen sonuçlarda tamamen deney üzerine kurulu, başarı oranı 95 e yakın olmuş olsa bile. Aynı zamanda anketin içeriğinde kullanıcıların daha önce geçirmiş olduğu hastalıklar, yaşadıkları coğrafi konum, cinsiyetleri gibi ayırt edici özellikler vardı.

         

 

Bugüne kadar araştırmacılar; her biri birkaç öksürük içeren, yaklaşık 200.000 zorla öksürük ses örneğine karşılık gelen 70.000’den fazla kayıt topladı. Araştırmacılarında kanıtladığı üzere bu zamana kadar yapılmış en kapsamlı ve belirleyici öksürük veri setine sahip bir araştırma oldu.Asemptomatik olanlar da dahil olmak üzere Covid-19 olduğu doğrulanan kişiler tarafından yaklaşık 2.500 kayıt sunuldu.

Ekip, topladıkları verileri dengelemek için kayıtlardan rastgele seçtikleri 2.500 kayıt ile birlikte Covid ile ilişkili 2.500 kaydı kullandı. AI modelini eğitmek için bu örneklerden 4.000’ini kullandılar. Kalan 1000 kaydı da daha sonra Covid hastalarının ve sağlıklı bireylerin öksürüklerini doğru bir şekilde ayırt edip edemeyeceğini görmek için model geliştirildi.

Temmuz ayında İngiltere’nin Cambridge kentindeki ‘Covid-19 Sesler Projesi’nde, nefes ve öksürük seslerinin birleşimine dayanarak, pozitif koronavirüs vakalarının yüzde 80 oranında başarıyla tespit edildiğini açıklamıştı.Uygulamanın geliştirildiği takdirde virüsün yayılma hızının,yayılma oranın düşeceği kaçınılmaz bir gerçek olduğu ispatlanmış oldu.

REFERANSLAR:

https://haberglobal.com.tr/dunya/yapay-zeka-oksuruk-sesiyle-kovid-19-hastasini-boyle-tespit-etti-77528

https://onedio.com/haber/oksuruk-sesinden-yuzde-100-isabet-koronavirus-teshisi-koyan-yapay-zeka-gelistirildi-940627

https://www.ntboxmag.com/2020/10/29/yapay-zeka-modeli-cep-telefonuyla-kaydedilen-oksurukler-sayesinde-asemptomatik-

 

 

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.

Microsoft Seeing Al İle Görme Engellilerin Dünyasını Aydınlatıyor

Günümüz ilerleyen teknolojisinde, sürekli geliştirilen ve üstüne yenilikler eklenilerek bize sunulan akıllı telefonların yanında yapay zekayla ilişkili ürünlerin hayatımızı kolaylaştırması hız kesmeden devam ediyor. ABD merkezli teknoloji devlerinden Microsoft, hızla gelişen ve değişen teknolojiye ayak uydurarak gündelik yaşamı kolaylaştırmak ve gelişen teknolojiyi yakalamak için ürünler çıkarıyor.Bu ürünlerden bence en önemlisi ve en çok işe yarayanı yeni duyurmuş olduğu “Seeing Al” isimli yapay zeka destekli mobil uygulaması.

Seeing Al, görme engelli insanlar için tasarlanmış bir yapay zeka uygulaması. Peki nedir bu Seeing Al? Seeing Al, telefonların kameraları yardımıyla elde ettiği görüntüleri sesli bir yapay zeka tarafından alıcıya ileten bir uygulama. Biraz daha açmamız gerekirse, görme engelli insanlara etraflarında ne olduğunu, şu an nerede olduklarını anlatan bir akıllı telefon uygulaması. Öyle ki, kameraya karşı taraf ne gösteriyorsa uygulama birebir ekranda gördüklerini sesli bir şekilde görme engelli kullanıcıya aktarıyor. Kamera tutulan nesnenin veya kişinin nasıl olduğunu, ne hissettiğini, kim olduğunu da aktaracak. Aynı zamanda uygulama, kamera bir ürünün üzerine tutulduğunda ürünün ne olduğunu da söyleyecek. Tüm bu uygulamalar telefonda bulunan yapay zeka yardımıyla gerçekleştirilecek.

Microsoft, geçtiğimiz yıllarda mart ayında düzenlediği Build konferansında Seeing Al uygulamasının ön hazırlık şeklinde prototipini göstermişti. Uygulama yaklaşık olarak 16 ayın ardından ABD’de İOS yazılımlı cihazlara sahip kullanıcılarla buluştu. Android ve diğer yazılımlı telefonlara ne zaman geleceği henüz bilinmiyor.

Uygulamanın çalışma prensibine bakacak olursak, daha önce görmüş olduğu kişileri tanıyan, yabancılarında, hislerini, duygularını, yaşlarını, fiziksel özelliklerini tahmin edebilen Seeing Al, barkod okuma özelliği sayesinde de gösterilen ürünlerin ne olduğunu iletebiliyor. Belgeleri okuyabilen ve tarayan uygulama, Amerika para birimi olan doları da tanıyabiliyor. En çok işe yarayan özelliğinin bu olduğunu savunarak size de açıklamak istiyorum. Görme engellilerin günlük yaşantılarında ne kadar zorluk çektiklerini anlamaya çalışıyor olsak da bir yere kadar onları anlayabilir onların yaşadığı zorluklara tanıklık edebiliriz. Bizim görebildiğimiz en azından şahit olduğumuz zorlukların başında alışveriş yapabilme konusu geliyor. Alışveriş esnasında yaşadıkları zorluklarla biz de zaman zaman karşılaşıyoruz. Ödeme aşaması ise alışveriş yapıyor olmanın en son ve zor adımı, ödeme yapacakları yöntemin nakit olduğu zamanlar, verdikleri paranın ne olduğunu bilemiyor, paraları birbirinden ayırt edemiyorlar ve bu durum alışveriş yapmak kadar alışverişin sonunu da zor hale getiriyor. Ki sadece para kısmıyla alışverişte karşılaşmıyorlar, bindikleri taksi, ödemeye çalıştıkları fatura, ve bunun gibi birçok para alışverişi gerektiren yerlerde zorluk çekiyorlar. Bahsetmiş olduğum gibi Seeing Al’nin ben tarafından en çok takdir gören ve yararlı bulduğum özelliği para tanıyor olabilmesi. Dolar işareti değerinden bağımsız olarak paraların boyutu, rengini ayırt etmek onlar için imkansızken Seeing Al sayesinde bu imkanlı hale geliyor.

Yapay zeka yardımıyla geliştirilen bu uygulama,etrafındakileri tanıyıp algılayabilmek için nöral ağlardan yararlanıyor. Nöral ağ teknolojisi bildiğiniz üzere, Silikon vadisinde tanıtımı yapılan sürücüsüz yani otonom araçlarda, belirli drone’larda ve daha birçok teknolojide kullanılan bir yenilik. Uygulamanın temelinde nöral ağlardan yararlanıldığı için fonksiyonları, doğrudan cihazın üzerinde yerine getiriliyor böylece uygulamanın hız konusunda ya da internete bağlantısının gecikmesi gibi sorunlar ortaya çıkmıyor. Görüş alanındaki her şeyi tanıyıp anlayabilmesi için,buna el yazısı gibi denetlenmesi gereken şeylerde dahil,bunlar için bulut bağlantısına ihtiyaç duyuyor.

Seeing Al, ilk olarak ABD’de tanıtılmış, yalnızca İngilizce dil desteğine sahip olan uygulama İOS kullanıcılarına sunulmuştu.Ülkemizde bugüne kadar İngilizce olarak kullanılıyordu bu nedenle birçok kullanıcı bu uygulamadan habersizdi. Microsoft geçtiğimiz günlerde yaptığı açıklamalarda Seeing Al’nin Türkçe dil desteğine sahip versiyonunun yayınlandığını duyurdu. Uzun bir süredir Türkçe dil desteği üzerine çalışan Microsoft Türkiye Ekibi 3 Eylül Perşembe günü Seeing AI’nin Türkçe versiyonunu Apple Store’da kullanıcıların erişimine açtı. Hâlâ sadece IOS kullanıcılarının yararlanabildiği bu uygulama ücretsiz olarak sunuldu. Yani bu uygulamaya sahip olmak isteyen tüketiciler, herhangi bir ödeme yapmak zorunda kalmıyorlar.

Microsoft Türkiye Genel müdür vekili uygulamanın Türkçe sürümünü erişime açarak Türkiye’de çok daha fazla sayıda görme engelliye ulaşacak olmanın heyecanını yaşadıklarını belirtti. Yılmaz, “Seeing AI, yapay zekâ ile engellilerin gündelik hayatına ne kadar büyük katkı sağlanabileceğini kanıtlayan eşsiz bir uygulama. Bir süpermarkette ne satın aldığından emin olmak; ödeme adımında Türk lirasını tanıtarak alışverişi güvenle tamamlayabilmek; sokakta çevresindekileri algılayabilmek, görme engelli bir birey için son derece özgürleştirici deneyimler. Seeing Al uygulamasıyla kullanıcıların WhatsApp ve sosyal medyada paylaşılan metinleri okuması; görsellerin sesli betimlemesini dinlemesi dahi artık mümkün” olduğunu söyleyerek, uygulamanın engellilerin bireysel özgürlüklerine katkı sağladığına değindi.

Yaşadığımız dönemin her alanın görsele dayalı olduğunu dile getiren Murat Yılmaz, “Teknoloji, insanların hayat kalitesini yükselttiği oranda değer kazanıyor. Ücretsiz ve kayıt gerektirmeyen bir telefon uygulamasının bizi çevreleyen dünyayı bu kadar kapsamlı şekilde betimleyebilmesi, görme engelliler için de, bu teknolojinin yaratıcısı olan Microsoft için de paha biçilemeyecek kadar değerli”dedi. Uygulamanın Türkçe sürümünün hazırlık aşamasında Microsoft ailesine katkıları bulunan birçok marka olduğunu söyleyen Murat Yılmaz, bu uygulamaya sosyal sorumluluk projesi olarak yaklaşan tüm markalara teşekkür etti.

Barkod okuma özelliğinden bahsettiğimiz bu uygulamanın veritabanına Türkiye’de bulunan 6 Milyon ürünün barkod numarası eklenmiş durumda. Bu markalar arasında, Boyner, Evyap, Koçtaş, MediaMarkt, Mondelēz International Türkiye, P&G Türkiye, Unilever Türkiye ve Watsons Türkiye gibi ünlü markalarının ürünlerinin barkodları artık Seeing Al’nin veritabanında. Söz konusu markaların tek bir alışveriş kategorisinde olmaması ise uygulamanın yelpazesinin genişliğini öne sürüyor. Bu markaların yanı sıra Microsoft’un bu uygulamasına destek veren bir diğer markada Turkcell oldu. Turkcell, uygulamayı kullanan müşterilerinin data kullanımını ücretsiz hale getirdi. Yani herhangi bir Turkcell kullanıcısı bu uygulamayı kullanırken internet paketinde azalmayla karşılaşmayacak.

Microsoft Türkiye, verileri toplu almak yerine markalarla birebir görüşerek, ürünlerin tüm özelliklerini; ölçü, renk, beden, malzeme, gramaj ve alerjen bilgisi gibi detayları göz önünde bulundurarak, sürekli değişen barkodları, düzenli güncelleyen bir veritabanı oluşturmuş oldu. Bu sayede ise, görme engelli insanlar, kimseden destek almadan ürünleri rahatlıkla tanıyabiliyor.

Microsoft Türkiye’nin hedeflemiş olduğu görme engellilere yönelik bu uygulamanın benim nezdimde de en büyük artısı olan para tanıma özelliği ile ilgili bir destek de Kuveyt Türk’ten geldi. Kuveyt Türk, banknotların görselleriyle gerekli barkodları oluşturdu. Bu sayede uygulama,dolarla birlikte Türk lirasını da tanır hale geldi.

Microsoft Türkiye yapmış olduğu bu uygulamayla görme engellilere büyük ölçüde fayda sağlayacak gibi görünüyor,Diliyorum ki diğer engellere sahip vatandaşlarımız içinde en kısa zamanda bu ve bunun gibi pek çok uygulama geliştirilir,bir nebzede olsa onlara fayda sağlanmış,hayatları biraz olsun onlar için kolay hale gelmiş olur.

REFERANSLAR:

https://shiftdelete.net/microsoft-seeing-al-uygulamasi-83563

https://www.webtekno.com/microsoft-seeing-ai-turkce-indir-h99180.html

https://www.donanimhaber.com/Microsoftun-gorme-engelliler-icin-gelistirdigi-Seeing-Ai-uygulamasi-35-ulkeye-gidiyor–95934

 

 

 

 

 

Featured Image

Yapay Zekaya Adım Adım Yolculuk

Makine öğrenimi (ML), deneyim yoluyla otomatik olarak gelişen bilgisayar algoritmalarının incelenmesidir [1]. Wikipedia’ ya göre ise makine öğrenimi, bilgisayarların, açıkça programlanmadan görevleri nasıl gerçekleştirebileceklerini keşfetmelerini içerir [2]. Yapay Zeka denilince çoğunuzun aklına ilk gelen şey kuşkusuz görselde gördüğünüz gibi robotlar gelmektedir. Bugün makine öğrenimi ve yapay zekanın temelleri seviyesinde ilgili kursları sizler için araştırdım ve en çok memnun kaldığım DataCamp ve Coursera kurslarını burada listeleyeceğim.

DataCamp Kursları

💠 Image Processing with Keras in Python:  Bu kurs boyunca CNN ağları nasıl inşa edileceği, eğitileceği ve değerlendirileceği öğretilecektir. Verilerden öğrenme yeteneklerinin nasıl geliştirileceğini ve eğitimin sonuçlarını nasıl yorumlanacağı öğretilecektir.
Kursa gitmek için tıklayın 🔗

💠 Preprocessing for Machine Learning in Python:  Verilerinizi, modeliniz için doğru biçimde olacak şekilde standartlaştırmayı, veri kümenizdeki bilgilerden en iyi şekilde yararlanmak için yeni özellikler oluşturmayı ve model uyumunuzu iyileştirmek için en iyi özellikleri seçmeyi öğreneceksiniz.
Kursa gitmek için tıklayın 🔗 

💠 Advanced Deep Learning with Keras: Hem sınıflandırma hem de regresyon yapan bir ağı eğiterek çok yönlü keras işlevsel API’sini kullanarak çeşitli problemleri nasıl çözeceğinizi gösterir.
Kursa gitmek için tıklayın 🔗

💠 Introduction to TensorFlow in Python: Bu derste, tensorflow 2.3’ü, öneri sistemleri, görüntü sınıflandırması ve Fintech’teki önemli ilerlemelere güç veren modellerle geliştirmek, eğitmek ve tahminler yapmak için kullanacaksınız. Hem 15 satırlık kodda derin öğrenme modelleri tasarlamanıza ve eğitmenize izin verecek üst düzey API’leri hem de hazır rutinlerin ötesine geçmenize izin verecek düşük seviyeli API’leri öğreneceksiniz.
Kursa gitmek için tıklayın 🔗

💠 Introduction to Deep Learning with PyTorch: PyTorch, aynı zamanda hem güçlü hem de kullanımı kolay olan önde gelen derin öğrenme çerçevelerinden biridir. Bu derste, MNIST veri kümesinden rakamları tahmin etmek için ilk sinir ağınızı oluşturmadan önce sinir ağlarının temel kavramlarını öğrenmek için Pytorch’ u kullanacaksınız. Daha sonra CNN hakkında bilgi edinecek ve daha doğru sonuçlar veren daha güçlü modeller oluşturmak için kullanacaksınız. Sonuçları değerlendirecek ve bunları geliştirmek için farklı teknikler kullanacaksınız.
Kursa gitmek için tıklayın 🔗

💠 Supervised Learning with scikit-learn: 

  • Classification
  • Regression
    • Fine-tuning your model
    • Preprocessing and pipelines

Kursa gitmek için tıklayın 🔗

💠 AI Fundamentals:

  • Introduction to AI
  • Supervised Learning
    • Unsupervised Learning
    • Deep Learning & Beyond

Kursa gitmek için tıklayın 🔗


Coursera Kursları

💠 Machine Learning: Classification, University of Washington: 

  • Hem ikili hem de çok sınıflı sınıflandırma problemlerinin çözümü
  • Boosting kullanarak herhangi bir modelin performansını artırımı
  • Stokastik gradyan yükselişi ile yöntem ölçeklendirme
  • Eksik verileri işleme teknikleri kullanımı
  • Hassas hatırlama metrikleri kullanılarak model değerlendirme

Kursa gitmek için tıklayın 🔗 

💠 AI For Everyone, deeplearning.ai:  

  • Gerçekçi AI ne olabilir ne olamaz?
  • Kendi kuruluşunuzdaki sorunlara yapay zeka uygulamak için fırsatlar nasıl belirlenir?
  • Makine öğrenimi ve veri bilimi projeleri oluşturmak nasıl bir şeydir?
  • Bir AI ekibi ile nasıl çalışır ve şirketinizde bir AI stratejisi nasıl oluşturulur?
  • Yapay zeka ile ilgili etik ve sosyal tartışmalarda nasıl gezinilir?

Kursa gitmek için tıklayın 🔗 

💠 AI for Medical Diagnosis, deeplearning.ai: 

  • Ders 1’de, akciğer ve beyin bozukluklarını teşhis etmek için konvolüsyonel sinir ağı görüntü sınıflandırması ve segmentasyon modelleri oluşturacaksınız.
  • Ders 2’de, hasta prognozunu belirlemek için istatistiksel yöntemler ve rastgele bir orman belirleyicisi kullanarak kalp hastalığı için risk modelleri ve sağkalım tahmincileri oluşturacaksınız.
  • Ders 3’te, bir tedavi etkisi belirleyicisi oluşturacak, model yorumlama tekniklerini uygulayacak ve radyoloji raporlarından bilgi almak için doğal dil işleme kullanacaksınız.

Kursa gitmek için tıklayın 🔗
Yapay zeka öğrenirken öncelikli adımlar olarak Yüksek Lisans dönemimde Yapay Sinir Ağları ve Örüntü Tanıma derslerini aldım. Bu alanlar ile ilgili projeler geliştirdim ve bu projeleri sunma fırsatım oldu. Böylelikle bildiklerimi aktarırken kendime daha çok şey kattığımı fark ettim. Bu yazıda özet olarak öğrenmeniz gereken DataCamp ve Coursera kurslarından bahsettim. Bunlardan önce Machine Learning Crash Course‘ u da bitirmenizi şiddetle tavsiye ediyorum.

REFERANSLAR

  1. Mitchell, Tom (1997). Machine Learning. New York: McGraw Hill. ISBN 0-07-042807-7. OCLC 36417892.
  2. From Wikipedia, The free encyclopedia, Machine learning, 19 November 2020.
  3. DataCamp, https://learn.datacamp.com.
  4. Coursera, https://www.coursera.org.
Featured Image

HTC (Hybrid Task Cascade) Ağ Mimarisi

Son günlerde görüntü segmentasyonu için yaptığım literatür araştırması sonucunda çok farklı segmentasyon mimarileri ile karşılaştım. Bu yazımdan önce sizlere Mask R-CNN mimarisinden bahsetmiştim. Tıpkı bu Mask R-CNN mimarisi gibi Cascade Mask R-CNN yapısı da literatürde karşıma çıktı. Okuduğum orijinal akademik dokümanlardan ve araştırmalarımdan topladığım bilgiler ile sizleri bu konuda aydınlatmaya çalışacağım.

Cascade,çeşitli görevlerde performansı artıran klasik ama güçlü bir mimaridir. Bununla birlikte, örnek segmentasyonuna basamaklar ile nasıl girilir açık bir soru olmaya devam etmektedir. Cascade R-CNN ve Mask R-CNN’ in basit bir kombinasyonu sadece sınırlı kazanç sağlar. Daha etkili bir yaklaşımı keşfederken, başarılı bir örnek bölümleme (instance segmentation) kademesinin anahtarının, algılama ve bölümleme arasındaki karşılıklı ilişkiden tam olarak yararlanmak olduğu görülmüştür.
Hybrid Task Cascade for Instance Segmentation adlı çalışmada iki önemli açıdan farklılık gösteren yeni bir Hybrid Task Cascade (HTC) çerçevesi önerilmektedir:

  1. Bu iki görevi ayrı ayrı basamaklı olarak rafine etmek yerine, bunları ortak çok aşamalı işleme için birbirine bağlar.
  2. Uzamsal bağlam sağlamak için tamamen evrişimli bir dal benimser, bu da sert ön planı karmaşık arka plandan ayırt etmeye yardımcı olabilir. 

Temel fikir, her aşamada basamak ve çoklu görev dahil ederek bilgi akışını iyileştirmek ve doğruluğu daha da artırmak için mekansal bağlamdan yararlanmaktır. Özellikle, ilerici arıtma için basamaklı bir boru hattı tasarlanmıştır. Her aşamada, hem sınırlayıcı kutu regresyonu hem de maske tahmini, çok görevli bir insanda birleştirilir.

Yenilikler ✨

HTC mimarisinin ana yeniliği, nesne algılama ve segmentasyonu birbirine bağlayarak daha iyi performans sağlayan basamaklı bir çerçevedir. Bilgi akışı, önceki ve sonraki maske belirleyicileri arasındaki doğrudan dallar aracılığıyla da değiştirilir. Mimari ayrıca, dağınık arka planlardan örnekleri daha iyi ayırt ederek performansı artırabilen mekansal bağlamı geliştiren tamamen konvolüsyonel bir dal içerir.
2017 Winner

Hybrid Task Cascade (Hibrit Görev Basamağı) : Örnek Segmentasyon Çerçevesi
  • Paralel olarak yürütmek yerine sınırlayıcı kutu regresyonunu ve maske tahminini birleştirir. 
  • Önceki aşamadaki maske özelliklerini mevcut olana besleyerek maske dalları arasındaki bilgi akışını güçlendirmek için doğrudan bir yol oluşturur.
  • Ek bir semantik segmentasyon dalı ekleyerek kutu ve maske dalları ile kaynaştırarak daha fazla bağlamsal bilgi edinmeyi amaçlamaktadır. 
  • Genel olarak, çerçeve mimarisindeki bu değişiklikler, yalnızca aşamalar arasında değil, görevler arasında da bilgi akışını etkili bir şekilde geliştirir.


HTC ağının Tablo 1′ deki COCO veri kümesindeki en son teknoloji ürünleri ile örnek belirleme yaklaşımlarının karşılaştırılması görülmektedir. Ayrıca, Bölüm 1’de açıklanan Cascade Mask R-CNN’i makalede kullanılan yöntemin güçlü bir temeli olarak değerlendirilmektedir. Mask R-CNN ile karşılaştırıldığında, naif basamaklı taban çizgisi, box AP ve mask AP açısından %3.5 ve %1.2’lik bir artış getiriyor. Bu taban çizgisinin, en gelişmiş örnek segmentasyon yöntemi olan PANet ‘ den daha yüksek olduğu belirtilmektedir. HTC, etkinliğini kanıtlayan farklı omurgalarda tutarlı iyileştirmeler gerçekleştiriyor. ResNet-50, ResNet-101 ve ResNeXt-101 için sırasıyla %1.5, %1.3 ve %1.1 kazanç sağlar.
📌 NOT: Cascade Mask R-CNN, kademeye bir maske başlığı ekleyerek Cascade R-CNN’yi örnek segmentasyonuna genişletir [3].
Aşağıda görmüş olduğunuz görsel ise COCO veri setindeki bu segmentasyon sonuçlarını göstermektedir.
New
Makalede sonuç bölümünde ise oluşturdukları HTC modelinin diğer modellere göre üstünlüklerinden bahsedilmektedir.

Örnek bölümleme (Instance Segmentation) için yeni bir kademeli mimari olan Hibrit Görev Kademesini (HTC) öneriyoruz. Ortak bir çok aşamalı işleme için kutu ve maske dallarını iç içe geçirir ve uzamsal bağlam sağlamak için anlamsal bir bölümleme dalı kullanır. Bu çerçeve, maske tahminlerini aşamalı olarak iyileştirir ve her aşamada tamamlayıcı özellikleri bir araya getirir. Çanlar ve ıslıklar olmadan önerilen yöntem, MS COCO veri setinde güçlü bir Cascade Mask R-CNN taban çizgisine göre% 1.5 iyileştirme elde eder. Özellikle, genel sistemimiz test-sorgulama veri setinde 48.6 maske AP’ye ve test-dev’de 49.0 maske AP’ye ulaşır.

📌 Son olarak tablodaki değişkenlerin değişimlerini anlamanız adına sizlere MS COCO metriklerinin tablosunu not olarak bırakıyorum.

REFERANSLAR

  1. Kai Chen, Jiangmiao Pang, Jiaqi Wang, Yu Xiong, Xiaoxiao Li, Shuyang Sun, Wansen Feng, Ziwei Liu, Jianping Shi, Wanli Ouyang, Chen Change Loy, Hybrid Task Cascade for Instance Segmentation, April 2019.
  2. Zhaowei Cai and Nuno Vasconcelos, Cascader-cnn:Delving into high quality object detection, In IEEE Conference on Computer Vision and Pattern Recognition, 2018.
  3. https://paperswithcode.com/method/cascade-mask-r-cnn.
  4. https://cocodataset.org/#home

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.

Image Segmentation

Mask R-CNN ile Görüntü Segmentasyonu

Görüntü Segmentasyonu

Son zamanlarda çok sık uğraştığım CNN mimarilerine yenilerini ekleyerek öğrenmeye devam etmekteyim. Daha önceki yazımda görüntü segmentasyonunun ne anlama geldiğini örnekler ile betimlemiştim. Eğer ilgilenirseniz profilimden ulaşabilirsiniz. Görüntü segmentasyonu alanında şöyle açıklayıcı bir yorum okumuştum:

Görüntü segmentasyonu, görüntüdeki her pikseli belirli bir kategoriye ait olarak sınıflandırma işlemidir.

Buradan yola çıkarak amacımızın sınıflandırmaya yönelik yardımcı maskelerin belirlenmesi olduğunu da gözlemleyebiliriz. Daha önceki yazımda sizlere segmentasyon işleminin neden ve nasıl yapıldığını aktarmıştım. Bu konuda daha çok bilgilenmek istiyorsanız eğer yazımı incelemenizi tavsiye ederim. Görüntü işleme ve derin öğrenme alanında yaptığım birçok çalışmada baz aldığım bir site önerisi vereceğim. Umarım benim kadar sizlere de yardımcı olabilir. Takıldığım her noktada

Sınıflandırma gerçekleştirilirken bir girdi (input) görüntüsünün içeriğini analiz etmek için bir dizi etiket tahmin edilmektedir. Ancak segmentasyonda bu tahmin işlemi gerçekleştirilirken aynı nesne olma ihtimali olan pikseller boyanmaktadır. Segmentasyonun anlaşıldığını umut ederek biraz daha teknik yaklaşıyorum ve konunun Mask RCNN kısmına geçiyorum.

Mask R-CNN

Mask-RCNN, mantıksal açıdan Faster-RCNN’ e benzerlik göstermektedir. Peki bu Faster-RCNN tam olarak ne yapmaktadır? Görüntüde bulunan objeleri maskeleyerek bizlere nesne tanıma imkanı sağlamaktadır. Bakın bu maskeleme işlemi çok mühimdir. Mask-RCNN de maskeleme işlemi yapılmaktadır. Ancak şöyle bir durum mevcut, Mask-RCNN yapısı gereği eklenen bölüm için binary değer kullanmaktadır. Yani demek istediğim tanınacak obje için maske kullanılacak ise 1, kullanılmayacak ise 0 değeri çıkarmaktadır.

Semantic segmentation (Anlamsal bölümleme)’ ın amacı, nesne örneklerini ayırt etmeden bir nesnenin her pikselini bilinen kategoriler halinde sınıflandırmaktır. Instance Segmentation ise, tespit edilen her nesnenin sınıflandırıldığı, yerelleştirildiği ve bölümlere ayrıldığı bu iki klasik bilgisayarlı görü görevini (algılama ve anlamsal bölümleme) birleştirir [2]. Burada önereceğim sistemde görüntüler için nesnelerin segmentasyonunda Mask R-CNN kullanmaktadır. Bunun yanı sıra terimleri dikkat ettiyseniz İngilizce kullanıyorum çünkü terimler kalıplaştığı için Türkçe söylendiğinde kulağıma tuhaf geliyor. Siz nasıl isterseniz öyle devam edebilirsiniz.

Faster R-CNN’nin bir uzantısı olarak Mask R-CNN, instance segmentation görevini gerçekleştirmek için evrişimli ağların bir dalını içerir. ResNet101’den özellikleri çıkardıktan sonra, bu özellikler bir feature pyramid network (FPN) oluşturur; burada nihai olarak bağlantılar (anchors) tanımlanır ve ilgili bölgeler (RoI’ler) çıkarılır [3].

Mask R-CNN Çalışma Yapısı

ROI Align modülünden çıkan iki adet evrişim CONV katmanı bulunmaktadır. Bu katmanlar, görüntüdeki maskemizin gerçekte oluşturulduğu yerdir [1]. CONV katmanından daha önce bahsetmiştim. Görüntüde yer alan pikseller teker teker taranıp evrişim işlemi uygulanmaktadır. Şimdi sizlere çok daha önemli bir detay paylaşacağım. Bildiğimiz gibi, Faster R-CNN / Mask R-CNN mimarileri, bir görüntünün potansiyel olarak bir nesne içeren bölgelerini oluşturmak için Bölge Teklif Ağı’ndan (RPN-Region Proposal Network) yararlanır. Bu bölgelerin her biri,“objectness score” yani “nesnelik puanına” ( belirli bir bölgenin potansiyel olarak bir nesne içerme olasılığı) göre sıralanır ve ardından en güvenli ilk N adet nesne bölgesi tutulur [1]. Böylelikle tespit edilecek nesneye daha dikkatli yaklaşmış olmaktayız. Görüntülerde seçilen 300 adet ROI (Region of Interest) bölgesinin her biri, ağın üç paralel şubesinden geçecektir:

  • Etiket tahmini (Label prediction): Nesnenin hangi sınıfa (türe) ait olduğunu belirleyen etiketler tahmin edilir.
  • Sınırlayıcı kutu tahmini (Bounding box prediction): Belirlenen nesne etiketleri sınırlayıcı kutular ile çizilir.
  • Maske tahmini (Mask prediction): Daha sonra alınan etiketler baz alınarak kutuların sınırlarından itibaren nesne boyanarak maskelenir.

Mask R-CNN Kod Dizimi

En sık kullandığım Mask R-CNN Github bağlantısını sizler için linkliyorum. Bu kod üzerinden çalışarak nesneler için segmentasyon işlemini birlikte başarabiliriz. Feature Pyramid Network (FPN) ve ResNet101 ağına dayalı oluşturulmuştur.

Oluşturulmuş bu repository içerisinde adım adım tespit anlatılmaktadır. Adım adım ilerlediğinizde önce anchorların filtrelendiğini daha sonra sınırlayıcı kutuların ve maskelerin oluştuğunu göreceksiniz. Daha önceden eğitilmiş COCO veri seti üzerinde nesne tespiti gerçekleştiriliyor. Eğer sizin kendinize ait bir veri setiniz mevcut ise bu verilerde kullanmanızı tavsiye ederim. Bununla birlikte Tensorflow Object Detection API ile nesnelerinizi tespit edecek modeli oluştumanız da mümkün. Bunun ile ilgili bilgilendirici nitelikte bir yazı daha oluşturmuştum, dilerseniz okuyabilirsiniz.

COCO Nedir?

COCO

 

Yukarıdaki görselde de görüldüğü üzere İngilizce Bağlam İçinde Ortak Nesneler anlamına gelen Common Objects in Context kelimesinin belirli harflerinden oluşmaktadır.

Ne İşe Yarar? [6]

  • Nesne segmentasyonu
  • Bağlam içinde tanıma
  • Superpiksel malzeme segmentasyonu
  • 330.000 görüntü (> 200.000 etiketli)
  • 1,5 milyon nesne örneği
  • 80 nesne kategorisi
  • 91 malzeme kategorisi
  • Resim başına 5 başlık
  • Kilit noktalara (keypoints) sahip 250.000 kişi görüntüsü

Görselde eğitilmiş Coco veri setini ve modülleri kullanabileceğimiz kodlara yer verilmektedir. Referans olarak verdiğim Mask RCNN Github bağlantısı üzerinden bu kodlara erişim sağlayabilirsiniz.

Uploading Libraries

Model Direction 

Gördüğünüz üzere Mask RCNN modülünü dahil ederek modeli yüklemeyi başardık. ResNet101 mimarisinin kullanıldığını belirgin konfigürasyonlardan da anlayabiliriz.

Backbone ResNet101

Ardından COCO veri setinde yer alan sınıfları bu şekilde inceleyebiliriz.

Class Names

Sonuç olarak nesne tespitinde son adıma gelmiş bulunmaktayız. Görüntüde yer alan objeleri yüzde değerleri vererek tanımayı başarmıştır. Umarım anlattıklarım sizler için bir nebze faydalı olabilmiştir. Herkese iyi kodlamalar ve güzel günler dilerim 😇

 

REFERANSLAR

  1. https://www.pyimagesearch.com/2018/11/19/mask-r-cnn-with-opencv/
  2. Gil Jader, Jefferson Fontinele, Marco Ruiz, Kalyf Abdalla, Matheus Pithon, Luciano Oliveira, Intelligent Vision Research Lab, Deep instance segmentation of teeth in panoramic X-ray images, 2018 31st SIBGRAPI Conference on Graphics.
  3. S. Ren, K. He, R. Girshick, and J. Sun, “Faster r-cnn: Towards real-time object detection with region proposal networks,” in Advances in neural information processing systems, 2015, pp. 91–99.
  4. https://en.wikipedia.org/wiki/Image_segmentation.
  5. https://github.com/matterport/Mask_RCNN.
  6. https://cocodataset.org/#home.
  7. https://modelzoo.co/model/mask-r-cnn-keras.

Sağlık Sektöründe Yapay Zeka

Sağlık hizmetlerinde yapay zekâ, karmaşık tıbbi ve sağlık verilerinin analizinde, yorumlanmasında ve anlaşılmasında insan bilimini taklit etmek için karmaşık algoritmaların veya başka bir deyişle yapay zekanın (AI) kullanılmasıdır. Bir bilgisayar mühendisi olmama rağmen daha önce hayata geçirdiğim uygulamalar genellikle sağlık hizmetlerine de dokunmaktadır.