YAPAY ZEKA İÇ MEKANLARA ŞEKİL VERİYOR

yapay zeka ve iç mekanlar

Günümüzde yapay zeka  hayatın her yerinde kullanılan bir güç haline gelmiştir. Tartışmalı konulara sebep olsa da günlük hayatın içinde sürekli kullanılmaktadır. Günlük hayatın içinde aktif kullanılması, yapay zekanın kullanım alanlarının çeşitlenmesinde önemli bir faktör olarak görülebilir. Kullanıcıların talepleri doğrultusunda geliştirilen sistemler ve yazılımlar gibi her türlü ürün hayatın içinde giderek daha fazla pay sahibi olmaya başlamıştır. Bu gelişmeler, iç mimari alanında da geçerli olmakla birlikte insanların yaşam kalitesini ve yaşayış biçimlerini doğrudan ilgilendirmektedir. Yapay zeka ve iç mekanlar arasında olan etkileşim önem kazanmaya ve ön plana çıkmaya başlamıştır. 

         Tasarım süreci doğası gereği yeni ürünleri, yeni üretim teknikleri gibi gelişmeleri güncel olarak takip etmeyi barındırır. Bu durum dünyada hızla gelişen yapay zeka uygulamalarını da içermektedir. Günümüzde yapay zeka yardımıyla yapılan akıllı binalar bir çok açıdan kullanıcıların yaşam kalitesini arttırmaktadır.

Yapay zeka ve iç mekanlar arasındaki etkileşime örnek olarak, evlerdeki yapay zekaya sahip sistemler verilebilir. Bu sistemler, yapay zekalara makine öğrenmesi yoluyla verilerin girişiyle birlikte, sistemin ev ortamının kalitesini ve kullanıcı memnuniyetini arttırmaya yöneliktir. Ürünlere gerekli bilgilerin girişi yapılarak kullanıcının talepleri, ürünler ve yazılımlar sayesinde karşılanmaktadır. Bu durum evlere yerleştirilen güvenlik sistemleri, termostatlar, aydınlatma, doğal aydınlatmanın kullanımı ve havalandırma sistemleri gibi çeşitli sistemlerde güncel olarak kullanılmaktadır. Kullanıcının ihtiyaçları ve beklentileri doğrultusunda programlanan sistemler içmimari uygulama sürecinde çözülerek mekanın önemli bir parçasına haline gelmektedir. Bu bakış açısıyla bakıldığı zaman yapay zeka ve içmimari tasarım süreç içerisinde birbirini etkilemektedir. Kullanıcı yapay zeka destekli bir tasarım tercih ettiği zaman içmimar proje özelinde kullanılan tekstil seçimlerini bu doğrultuda yapmalıdır. Örnek olarak, perdelerde kullanılan sistemin akıllı sistemlere uygun olması ve oturma birimlerinde kullanılan kumaşlar için tasarım sürecinde verilen kararları etkileyebilir. Bu durum sabit tasarım elemanları ve sabit akıllı sistemler arasında geçerli olduğu kadar sonradan edinilen ürünler özelinde de önem arz etmektedir. 

         Yapay zekaya sahip akıllı ev sistemleri kullanımının tercih edildiği durumlarda mekanın tasarımının da bu sistemlere izin vermesi veya tasarımıcı tarafından bu sistemlerin kullanımı ve yerleştirilmesi çözülmüş olması gerekmektedir. Yapay zekaya sahip duvara yerleştirilen bir termostat sayesinde mekanların ısı kalitesi sürekli ölçülerek hava kalitesi otomatik olarak sağlanmaktadır.

[gdlr_core_space height=”30px”]

Görsel: Termostat 
Kaynak: https://www.youtube.com/watch?v=izHUzKtlGxM&feature=youtu.be

[gdlr_core_space height=”30px”]

Bu sistemler mekanın hava kalitesini sağlamanın yanında fazladan enerji harcanmasını önlemektedir. Akıllı sisteme kullanıcının mekanları kullanım saatleri girildiğinde veya uzaktan yönetim imkanı sağlandığında sıcaklık seviyesi kullanıma göre yapay zeka yoluyla ayarlanabilir. Bu durum enerji tasarrufu sağlamakla birlikte sağlıklı hava sıcaklığını korumaya da yardımcı olarak kullanıcıların bedensel sağlıklarını korumalarını da etkilemektedir. Bu ürünlerin kullanımı tasarım sürecinin şekillenmesinde bir payda olarak görülebilir. Örnek olarak, termostatın mekan içerisindeki konumu, mekana yüklenen işlev ve kullanım şeması gibi girdilerle birlikte akıllı sistemlerin verimliliği arttırmak mümkün olabilir. Sabit tasarım elemanları ve sabit akıllı sistemlerin bu süreç içerisinde çözülmesinin önemli olduğu kadar taşınabilir akıllı ürünlerin de süreç içerisinde düşünülmesi gerekebilir. Taşınabilir akıllı sistemlerin daha sonradan dahil olmasına izin verecek mekanlar tasarlamak bu nokta önem kazanmaktadır. 

         Taşınılabilir ya da sonradan edinilebilir ürünler açısından bakıldığı zaman ise; yapay zekaya sahip süpürgelere makine öğrenmesi yoluyla evlerin planları girilerek, belirlenen alanların temizlenmesi sağlanmaktadır[1]. Konut özelinde düşünüldüğünde evlerin daha az iş gücü ve zaman tasarrufuyla temizlenmesine katkı yaptığını söylemek mümkündür. 

[gdlr_core_space height=”30px”]

Görsel: Akıllı süpürge 
Kaynak:https://www.hepsiburada.com/xiaomi-mi-1c-akilli-robot-supurge-p-HBV00000PM13D

[gdlr_core_space height=”30px”]

Bir diğer açıdan bakıldığında, bu ürünlerin kamusal iç mekanlar özelinde kullanımı düşünüldüğünde büyük bir mali kazanç sağlayacağı söylenebilir. Belediye, valilik, adliye ve kongre/sempozyum binaları gibi toplumsal hizmet veren binaların akıllı süpürgelerle temizlenmesi kullanım rahatlığının yanında mali olarak da büyük bir yükün ortadan kalkmasına yardımcı olacaktır. Diğer taraftan, konutların ve kamusal iç mekanların bu ürünlerin kullanımına uygun planlara ve detay çözümlerine ihtiyaç duyduğu söylenebilir. Örnek olarak,  akıllı süpürgelerin kendilerinin geçebildiği belirli bir yükseklik sınırı var. Bu durum kimi zaman basamaklarla kimi zamanda mekanlar arasında geçişlerde malzeme farklılığından dolayı kullanılan bağlantı alanlarının farklı yüksekliğe sahip olmasıyla aksiliğe neden olmaktadır. Ürüne yüklenen plan şemasına göre mekanlar arasında geçiş yapmasına imkan veren tasarım yapılması, kullanıcıların bu ürünleri iç mekanlarda sorunsuz kullanmasına katkı sağlayacaktır. Bu doğrultuda, içmimari proje tasarım sürecinde yapay zekaya sahip taşınabilir ürünlerin de kullanımı göz önünde bulundurulmalıdır. Bu veriler tasarıma girdi olarak kullanıldığında, mekanların gelecek yıllarda da yaşamasına yani mekansal sürdürülebilirliği olmasına katkı sağlayabilir. 

         Sonuç olarak, yapay zeka çalışmaları hızlı bir şekilde yapılırken sistemin sürekli geliştiği ve yeni ürünler çıkarttıkları bilinmektedir. Bu yeni geliştirilen ürünler hakkında güncel bilgilere sahip olarak ve gelecekçi yaklaşımla birlikte içmimari proje sürecinde yapay zeka sistemlerini ve ürünlerini tasarımı süreci içerisinde çözülmesi gereken bir durum olarak görmek gerekir. Bu durum hem yapay zeka geliştiricileri ve uygulamacıları hem içmimarlar hem de kullanıcılar tarafından en verimli sonuca ulaşmak için hızla önem kazanmaktadır. Geliştirilen sistemler dünyayı değiştirmektedir. Bu sebeple mekan tasarımcıları olarak bu değişime mekanların da izin vermesini sağlamamız gerekmektedir.   İlk kez 1700’lerde Vincent De Gournay (1712-1759) tarafından söylendiği ileri sürülen, zamanla liberal düşüncenin sloganı haline gelen “laissez faire, laissez passer” (bırakınız yapsınlar, bırakınız geçsinler) mantığını tasarımcıların da yapay zeka için yerine getirmeleri artık gereklilik olmuştur[2]. Yapay zeka sistemleri hayatın her alanında olduğu gibi iç mekanda da -iç mekan tasarımı izin verirse- birçok kolaylık sağlayacaktır. Tasarımcılara yapay zeka için sesleniyorum: “laissez faire, laissez passer”!

Diğer yazılarıma buradan ulaşabilirsiniz.


[1] https://www.posta.com.tr/kizilotesi-temizlik-haber-fotograf-2159386-3

[2] https://en.m.wikipedia.org/wiki/Jacques_Claude_Marie_Vincent_de_Gournay

TensorFlow Object Detection API ile Özgül Nesne Tanıma

Çağımızın en sık kullanılan alanlarından biri olan Yapay Zeka teknolojilerinin geliştirilmesinde ilk aşama olarak Görüntü İşleme aşamalarının yer aldığı Bilgisayarlı Görü (Computer Vision) olarak da bilinen bilimsel alan yer almaktadır  🌎 . Bir verinin işlenebilmesi için öncelikli olarak anlamlandırılması gerekmektedir. Ancak anlamlandırılan veri, yapay öğrenme aşamasına geçebilmektedir. Verinin anlamlandırılması için belirli ön işleme aşamalarından geçirilmesi gerekmektedir. Verinin ön işlenmesi ise istenilen hedefe yönelik olarak uygun adımlar olarak belirlenmelidir. Veri madenciliğindeki bu aşamaları temel olarak bilmeniz sizler için yeterli olacaktır. Bu sebeple kısaca bilgilendirme yaparak makalenin asıl konusu olan nesne tanıma bölümüne geçmeyi hedeflemekteyim. Aşağıda belirtilen şekilde ise girdi olarak bir görüntünün işlenmesi ve anlamlandırılması gösterilmektedir.

[gdlr_core_space height=”30px”]
page1image45181504
[gdlr_core_space height=”30px”]

Nesne ve yüz tanıma artık hayatımızın neredeyse her yerinde! Günlük hayatta cep telefonları, bilgisayarlar, özel nesne tanıma algılayıcıları ile çalışan güvenlik kameraları gibi birçok örnek ile karşı karşıya kalmaktayız 📱🖥️ . Bunların hepsi temel olarak altyapısında görüntü işleme adımlarını çalıştırmaktadır. Nesne tanıma algoritmaları, belirli kategorileri temel alınarak veri üzerinde (görüntü, vb.) nesne belirleme işlemini gerçekleştirmektedir. Birçok nesne tanıma algoritması, görüntü üzerinde bir frame (çerçeve) oluşturarak görüntüde bu çerçeveyi kaydırma yöntemi ile tüm pikselleri gezer ve kaydedilen görüntü bölütlerini sinir ağlarından geçirerek sınıflandırma yapılmasını sağlamaktadır [1]. Literatürde CNN, RCNN, Faster RCNN, YOLO, VGG16 gibi birçok nesne tanıma modelleri yer almaktadır [2]. Bu modeller görüntüde bölge tabanlı çerçeveler (frame) belirlenerek ROI (Region of Interest- İlgili Bölge) bölgeleri oluşturulur [3]. Belirlenen ROI bölgeleri Evrişimsel Sinir Ağı’ndan (CNN) geçirilerek öğrenme gerçekleştirilir. Tespit edilecek nesneler ve üzende çalışılacak görüntülere bağlı olarak farklı sinir ağı modelleri seçilerek eğitim gerçekleştirilebilmektedir. Var olan nesne tanıma modellerinden kısaca bahsedildiğine göre Google tarafından sunulmuş Tensorflow Nesne Algılama API kullanımı ile nesne tespitinin incelenmesine geçebiliriz. Tensorflow, makine öğrenimi için Google’ ın kullanıma sunduğu açık kaynaklı bir platformdur [4]. İçerisinde bulunan modeller sayesinde veri bilimi alanında birçok çalışma gerçekleştirilerek makine öğrenimi sırasında karşılaşılan sorunlar giderilmiş olup veri bilimciler ve yapay zeka alanında çalışanlar için adeta bir hazinedir 💰 . Tensorflow’un sunduğu modelleri ve nesne tespiti için kullanacağımız Object Detection API dosyalarını aşağıdaki linkten temin edebilirsiniz ⬇️ .

🛎️ https://github.com/tensorflow/models [5]

[gdlr_core_space height=”30px”]
page2image45136096

Tensorflow API modellerinin kullanımı için Github sayfasında oldukça kullanışlı bir anlatım bulunmaktadır. Şekil 2’ de görüldüğü üzere Table of contents başlığı altında bulunan Installation bölümüne tıklayarak sırası ile kurulumu gerçekleştirebilirsiniz 📝.

page2image45124448

⚡ Bu sayfada yalnızca Linux OS için kullanım talimatları bulunmaktadır. Windows OS kullananlar için kurulumu sırası ile anlatacağım.

[gdlr_core_space height=”30px”]

Sayfada bulunan Dependencies bölümünde belirtilen kütüphaneler Tensorflow API alt yapısında var olan modellerin çalışabilmesi için gereklidir. Kütüphanelerin her birinin eksiksiz bir şekilde yüklenmesi gerekmektedir. Lütfen hepsinin çalıştığına emin olarak yolumuza devam edelim.

📌 Eğer Anaconda kullanıyorsanız Şekil 3’de görüldüğü gibi paket dosyalarından Tensorflow yüklediğinizde bu kütüphaneler varsayılan olarak yüklenmiş olacaktır. Kontrolünü sağlayabilirsiniz.

page2image45118672
[gdlr_core_space height=”30px”]

🧷 Kurulum için gerekli kütüphaneler [6]

  • Protobuf 3.0.0
  • Python-tk
  • Pillow 1.0
  • lxml
  • tf Slim (which is included in the “tensorflow/models/research/” checkout)
  • Jupyter notebook
  • Matplotlib
  • Tensorflow (>=1.12.0)
  • Cython
  • contextlib2
  • cocoapi
[gdlr_core_space height=”30px”]

📌 Tensorflow’ u bilgisayara kurmak için aşağıdaki komutlardan birisini seçerek ilerleyelim [6].

 # For CPU
pip install tensorflow
# For GPU
pip install tensorflow-gpu
[gdlr_core_space height=”30px”]

Model dosyasını bilgisayarımıza kurmak için Şekil 4’ de gösterildiği gibi indirerek Tensorflow Object Detection modellerinin yüklenmesini sağlayalım.

[gdlr_core_space height=”30px”]

Model indirilirken bir yandan da verilerin iletilmesinde görev alacak Protobuf’ ı da indirerek bilgisayarda kayıtlı olan Python yollarına link vererek ekleyelim.

Diğer versiyonlarla uyumlu çalıştığı için Şekil 5’ de görüldüğü gibi Protoc v3.4.0’ ı tercih ediyorum, dilerseniz siz başka bir versiyon da seçebilirsiniz.

[gdlr_core_space height=”30px”]

İndirilen modeller içerisinde research klasörüne girildiğinde birçok farklı modeli barındırdığını fark edeceksiniz. Nesne tespiti ile ilgili olan dosyalar object_detection klasöründe olduğu için bu klasör içerisinde bulunan Python dosyalarını irdeleyebilirsiniz. Şekil 6’ da görüldüğü üzere gözlemlemeniz adına modellerin bir arada bulunduğu ufak bir görüntü bırakıyorum 📌

[gdlr_core_space height=”30px”]
Model Dosyalarının Önizlenmesi
Şekil 6. Model Dosyalarının Önizlenmesi
[gdlr_core_space height=”30px”]

Ardından Proto dosyalarının yüklenebilmesi için komut ekranında (cmd) öncelikle indirilen protoc dosyasının yolunu daha sonra installation sayfasında bulunan protoc komutunun kopyalarak Şekil 7’de görüldüğü gibi yazın ve derleyin.

[gdlr_core_space height=”30px”]
page3image45346800
[gdlr_core_space height=”30px”]

💡 Programlamanın yazılacağı platform isteğe göre seçilebilir. İşlemlerin sunucuda (localhost) daha hızlı çalışması ve dosyaların saklanabilmesi adına ben Jupyter platformundan devam edeceğim.

🔗 Platform ismi : Jupyter Notebook

Model klasörü içerisinde indirilmiş olan object_detection klasörü içerisinde çalışılacağı için Jupyter projeleri içerisine kopyaladım. Şekil 8’ de görüldüğü üzere Localhost’ ta çalışmakta olan nesne tespit modeli üzerinde işlemleri devam ettireceğiz. Sırası ile yaptığım tüm adımları sizler de uygulayarak nesne tespit modülünü çalıştırabilirsiniz  📂

[gdlr_core_space height=”30px”]
page4image45504816

Nesne Tespit Modülünün Görünümü

Nesne Tespit Tutorial

Nesne Tespit Tutorial Dosyası

Modül Kodların Derlenmesi

[gdlr_core_space height=”30px”]
page4image45505856

⏳ Kodlar derlenirken kısa bir mola verelim, dilerseniz içeriği inceleyerek hangi modellerin çalıştırıldığını inceleyebilirsiniz 🔍

[gdlr_core_space height=”30px”]

Nesne tanımada çok sık kullanılan bir görüntü üzerinde nesne tanıma modeli çalıştırıldığında aşağıdaki sonuçlara ulaşılmaktadır. Tensorflow’un sunduğu bu açık kaynak kodlu model ile istenilen her görüntüde nesne tanıma yapılabilmesi mümkündür.

[gdlr_core_space height=”30px”]
page4image45506272
Şekil 12. Nesne Tanıma Modelinin Çalıştırılması [6].
[gdlr_core_space height=”60px”]

REFERANSLAR
[1] 
Software Development, “Bilgisayar Görüşü ile Yüz ve Nesne Tanıma R-CNN, SSD, GANs”, Udemy, https://www.udemy.com/course/bilgisayar-gorusu/#instructor-1.

[2] Ross Girshick, “The IEEE International Conference on Computer Vision (ICCV) FAST R- CNN”, 2015, pp. 1440-1448, IEEE, https://ieeexplore.ieee.org/document/7410526.

[3] From Wikipedia, Özgür Ansiklopedi, “Region of interest”, Eylül 2012, https://en.wikipedia.org/wiki/Region_of_interest.

[4] Tensorflow Official (Resmi) Website, “Tensorflow”, https://www.tensorflow.org/. [5] Tensorflow, “Tensorflow Models”, Github, https://github.com/tensorflow/models.

[6] Tensorflow, “Tensorflow Installation”, Github, https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md .

Görüntü İşleme Renk Uzayları | RGB, HSV ve CMYK🌈

Görüntü işleme dünyasına hoşgeldiniz 🎉 Günümüzde çok fazla önem arz eden Computer Vision alanlarından bir tanesi olan Görüntü İşleme’ deki renk uzaylarından bahsedeceğim. Biliyorsunuz ki görüntü işleme temel olarak görüntü üzerinde işlemler gerçekleştirir. Görüntü işlemede renk kullanımı iki etkenden kaynaklanmaktadır. İlk olarak renk, nesne tanımayı, nesnenin görüntüden çıkarımını kolaylaştıran bir tanımlayıcıdır. İkinci olarak ise insanlar yalnızca gri tona kıyasla binlerce renk tonunu ve yeğinliğini ayırt edebilir. Görüntü analizleri için de görüntü üzerinde çeşitli işlemler gerçekleştirirken kullanılacak renk kanalını da belirtmemiz gerekir. Renk kanallarını öğrenmeden önce renkli görüntü işleme hakkında biraz bilgi edinelim. Renk kavramının temelleri bilimsel olarak 1665 yılında İngiliz fizikçi Isaac Newton tarafından renklerin ayrıştırılması ile bulunmuştur. Karanlık bir odada gerçekleştirilen bu deneyde, kapı deliğinden içeri gelen ışığın prizma üzerinde parçalanarak renk tayfı oluşturduğu fark edildi. Aşağıda bu deneyin özet çizimi yer almaktadır.

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

Renk tayfı dedik fakat ne olduğundan bahsetmedik. Renk tayfı, beyaz ışığın özel bir prizmadan geçirilerek renklerine ayrılmasıdır. Aslında bunu hepimiz çok yakından biliyoruz. Biraz daha ayrıntı vermek gerekirse yağmur sonrası rengarenk haliyle bizi adeta büyülen gökkuşakları ışığın kırılımı ile renk oluşumuna en güzel örnektir 🎆 .

[gdlr_core_space height=”30px”]

Prizmadan beyaz ışık geçirildiğinde oluşan renk spektrumu 🌈

[gdlr_core_space height=”30px”]

💎 Bunlardan bahsetmemin en büyük sebebi insan gözünün algılayabildiği spektrum aralığını en açıklayıcı şekilde size sunmaktır. İnsan gözünün algılayabildiği spektrum aralığı 400 ila 700 nm arasını kapsamaktadır. Bu aralık bilimsel açıdan görünür bölge olarak tanımlanır. Fotoğrafta gördüğünüz prizmadan geçirilen beyaz ışığın görülen renk spektrumlarına ayrılması tam olarak bu noktada devreye girmektedir. İşte biz bu görünür bölge ile ilgileneceğiz. Haydi birlikte en sık kullanılan renk kanallarından bahsedelim!

Gerek günlük hayattan gerekse görüntü işlemeden bildiğiniz üzere ana renkler Kırmızı, Yeşil ve Maviden oluşmaktadır. Bu renklerden oluşan renk kanalına bilimsel açıdan RGB denilmektedir. RGB bu ana renklerin İngilizce karşılığı olan Red, Green ve Blue renklerinden oluşmaktadır. Bu ana renkler bir araya gelerek kullandığımız ara renkleri oluşturur. Ana ve ara renklerden farklı görüntü kanalları oluşturulmuştur. 

🔎 Görüldüğü üzere ana renkler olan Kırmızı, Yeşil ve Mavi bir araya getirilerek Sarı, Cyan ve Magenta renklerini oluşturmuştur. Cyan, halk arasında Camgöbeği olarak da bilinir. Magenta ise daha çok Eflatun olmakla birlikte Galibarda olarak da adlandırılır. Bunları ileride renk uzaylarını incelerken göreceğiz.

[gdlr_core_space height=”30px”]

Temel ve ara renklerin oluşumu 🌈

[gdlr_core_space height=”30px”]

Temel olarak renk kavramından ve en çok kullanılan RGB yapısından bu bölüme kadar bahsetmiş olduk. Öğrenmemiz gereken temel yapıyı da kafamızda oturttuğumuza göre renk uzaylarına giriş yapabiliriz. Görüntü işlemede gri tonlamalı bir görüntü yalnızca tek kanala sahiptir. Görüntünün sahip olduğu her bir piksel değeri 0 ila 255 arasında değer alır. Bu piksel değerlerine göre görüntü renk içermektedir. Gri görüntülerde RGB kanalındaki gibi kırmızı, yeşil, mavi gibi renklerden ziyade yeğinlik seviyesi yani parlaklık ele alınmaktadır. Daha doğrusu parlaklık, yeğinliğin renksiz halini ifade eder. Renkli görüntülerde ise birden fazla kanalla çalışıldığı için depolama alanı artmaktadır. Şimdi anlatacağım renk uzayları ya da modellerinin amacı genellikle renk tanımlamalarını kolaylaştırmaktır. Bir renk uzayı, bir koordinat sistemi ve her rengin tek nokta ile temsil edildiği sistemde bir alt uzayı tanımlama işlemidir. Görüntü işleme açısından çok yaygın olarak kullanılan RGB kanalı renkli monitörler ve renkli video kameralar için, CMY ve CMYK kanalları renkli baskı için ve HSI (HSV) kanalı ise insanların rengi tarif edebilmesi ve yorumlaması için oluşturulmuştur. Bu kanallar görüntü işlemede önde gelen kanallar olduğu için bugün sizlere bunlardan bahsedeceğim.


RGB Renk Kanalı

RGB en yaygın kullanılan renk alanıdır. Bu renk modelinde her renk onun kırmızı, yeşil ve mavi ana spektral bileşenleri olarak görür. Bu modelin altyapısında Kartezyen Koordinat Sistemi barınmaktadır. İlgilenilen renk alt uzayı, görüntü işlemede sıkça kullanılan bu küp olarak incelenir.

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

📝 Bu küp incelendiğinde RGB ana renk değerleri küpün üç köşesinde, ara renkler olan camgöbeği, sarı ve galibardanın diğer üç köşesinde bulunduğu görülmektedir. R, G ve B değerleri koordinat sisteminde vektör olarak ifade edilmektedir. Gördüğünüz gibi RGB renk uzayında farklı renkler küp üzerinde ve içerisinde noktalar halinde bulunmaktadır. 24 bite sahip RGB bir görüntüyü temsil ederken 8 bitin 1 bayt olduğu varsayılarak toplam renk sayısını (28)3 = 16777216 ile belirtiriz. Yukarıda gördüğünüz küp 16777216 renk sayısını içerisinde barındıran katı bir cisimdir. Bu küp içerisindeki renkleri kullanabilmek için belirli renk modellerinde yazılan renk kodları veya değerleri bulunmaktadır. Bununla ilgili birçok web sitesi bulunmaktadır. Bunlara örnek olarak w3schools verilebilir. Bu bilgiyi de öğrendiğimize göre Görüntü İşleme’ de çok sık kullanılan bir kütüphane olan OpenCV’ de RGB renk modeli tanımlanması ve görüntünün RGB histogramı nasıl çıkarılır bunu inceleyeceğiz. 

📃 OpenCV’ de RGB renk uzayı BGR olarak tanımlanmaktadır. Histogram bir resimdeki renk değerlerinin sayılarını gösteren grafiğe verilen addır. Bir görüntüdeki değerlerin histogram eşitliği grafiğe dökülmek istenirse öncelikle x ve y koordinatları matris üzerinde belirtilir.  Daha sonra hist modülü üzerinde kaç kutucuk olacak ise belirtilerek imshow( ) ile gösterilir. Bir görüntünün histogramı çıkarılırken orijinal BGR görüntüyü gri seviyesine dönüştürürüz.

[gdlr_core_space height=”30px”]

Create a histogram chart

Orijinal kullanılan görüntü RGB renk modelinin baskın olduğu bir görüntü olarak seçilmiştir. 

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

📝 Histogram dengeleme veya eşitleme, bir resimdeki renk değerlerinin belli bir yerde kümelenmiş olmasından kaynaklanan renk dağılımı bozukluğunu gidermek için kullanılan bir yöntemdir. Aşağıdaki oluşturulan grafikte değerler 50-100 aralığında kümelenmiştir. 

(2 8 ) output of histogram chart with 256 boxes 📊

[gdlr_core_space height=”30px”]

Görüntü renkli bir görüntü olduğu için RGB değerleri ile işlem yapılacak ve renkleri ayrıştırıp kırmızı, mavi, yeşil renklerinin her biri için ayrı ayrı histogram dengeleme yapılacaktır.

[gdlr_core_space height=”30px”]

Create a histogram chart with 32 and 8 boxes

[gdlr_core_space height=”15px”]
[gdlr_core_space height=”30px”]
Histogram Normalleştirme

Oluşturulan bu histogramı bir olasılık dağılım fonksiyonuna çevirmek için yapılması gereken her bir değer bu değerlerin toplamına bölünmesidir. Bu şekilde PDF ( probability density function) denilen olasılık dağılım fonksiyonu 0-1 aralığına normalleştirilir ve olasılık değerleri tutulabilir.

normed=True modülü ile normalleştirilmiş histogram oluşturma

[gdlr_core_space height=”10px”]

Normalize edilen histogram kutucukları 📊

[gdlr_core_space height=”30px”]
HSV | HSI Renk Kanalı

RGB, CMY, CMYK gibi renk modelleri insan yorumu açısından pratik terimler içermemektedir. Örneğin hiç kimse bir evin renginden o rengi oluşturan ana renklerin yüzdeliğini vererek bahsetmez. Renkli bir nesneye baktığımızda, o nesneyi renk tonu, doygunluk ve parlaklık ile ifade ederiz. Bu yüzden renkleri tanımlamakta bize kolaylık sağlayan renk tonu, doygunluk ve parlaklık kavramları öne atılmıştır. HSI uzayının ismi, renk tonu, doygunluk ve parlaklık kelimelerinin İngilizce karşılığı olan hue, saturation ve intensity kelimelerinin baş harflerinden gelmektedir. HSV renk uzayı Hue, Saturation ve Value terimleri ile rengi tanımlar. RGB de renklerin karışımı kullanılmasına karşın HSV de renk, doygunluk ve parlaklık değerleri kullanılır. Doygunluk rengin canlılığını belirlerken parlaklık rengin aydınlığını ifade eder.  HSI uzayı, bir renkli görüntüdeki yeğinlik bileşenini renk taşıyan bilgiler olan renk tonu ve doygunluktan ayrıştırır.

[gdlr_core_space height=”30px”]

HSV uzayında kullanılan renk tonu, doygunluk ve parlaklık değerleri RGB renk küpünden elde edilmektedir. HSV uzayında siyah renk için renk ve doygunluk değerleri 0 ile 255 arasında herhangi bir alabilir iken parlaklık değeri sıfırdır. Beyaz renkte ise parlaklık değeri 255′ dir. 

[gdlr_core_space height=”30px”]
RGB Renk Uzayından HSV Renk Uzayına Dönüşüm

Orijinal görüntü: RGB ve HSV uzayına dönüştürülmüş görüntü

(a) – Renk tonu (b) – Doygunluk (c) – Yeğinlik

[gdlr_core_space height=”30px”]
CMY & CMYK RENK KANALI

CMY modelinde pigment ana renkleri olan camgöbeği (cyan), galibarda (magenta) ve sarı (yellow) renklerinin eşit miktarı siyah (black) rengi üretmelidir. Uygulamada baskı amacıyla bu renklerin bileşimi bulanık görünümlü siyah bir tonu üretir. Doğru siyah tonunu üretmek için CMYK renk modelini ortaya çıkaracak bir dördüncü renk, siyah eklenir.

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

            Daha önce belirtildiği gibi bu renk modeli görüntü işlemede basılı kopya üretmede kullanılmaktadır. CMY renk uzayının pigmentlerinin eşit miktarı siyah rengi üretmelidir. Baskıda hakimlik olabilmesi adına doğru siyah tonunun üretilebilmesi için CMY renk uzayına siyah tonu eklenmiş ve CMYK renk uzayı elde edilmiştir. Yayınevlerinde “dört renkli baskı” CMYK ifade ederken “üç renkli baskı” ise CMY renk modelini belirtmektedir.

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”50px”]

Diğer yazılarıma buradan ulaşabilirsiniz.

REFERANSLAR

  1. C. Gonzalez, Rafael, E. Woods, Richard, Sayısal Görüntü İşleme, Palme Yayıncılık, (Ankara, 2014)
  2. http://www.kisa-ozet.org/tayf-nedir-kisaca/ adresinden alınmıştır.
  3. Dr. Öğr. Üyesi Caner ÖZCAN, Karabük Üniversitesi, BLM429 Görüntü İşlemeye Giriş, Görüntünün Alınması ve Sayısallaştırılması.
  4. https://www.instructables.com/id/Exploring-Color-Space/ adresinden alınmıştır.
  5. https://www.fencix.net/isigin-sogurulmasi/ adresinden alınmıştır.
  6. https://www.eikonal.com.br/8930509-Prismas-especiais adresinden alınmıştır.
  7. http://www.atasoyweb.net/Histogram-Esitleme adresinden alınmıştır.
  8. https://www.istockphoto.com/tr/foto%C4%9Fraf/rainbow-lorikeet-gm115919863-2434334#/close adresinden alınmıştır.
  9. https://people.eecs.berkeley.edu/~sequin/CS184/TOPICS/ColorSpaces/Color_0.html adresinden alınmıştır.

Görüntü İşleme ile Kemik Yaşı Tespitinde Ön Aşamalar

Kemik yaşı tespiti

Günümüzde yapay zekâ alanında sağlık çalışmaları hız kesmeden devam etmektedir. Artık her alanda sağlık personellerinin en büyük yardımcıları yapay zekâ, algoritmalar, sağlık alanında çalışan robot bilimidir.

Büyüme çağında genetik ve büyüme bozukluklarından kaynaklanan boy ve büyüme bozukluğu problemi yaşayan bir çocuğa daha önce denk gelmişsinizdir.

Bu bireylerdeki boy kısalığının ve büyüme bozukluğunun kontrol edilebilmesi için öncelikle muayene sırasında el bileği röntgen filmi tetkikleri istenmektedir.

Peki sizce bu röntgen filminden doktorlar ne elde etmektedir 👨‍⚕️ ?

Bu MRI görüntülerde yer alan el bileğindeki kemiklerden kemik yaşı olarak adlandırılan iskelet olgunlaşma derecesi hesaplanmaktadır.

İnsanın doğduğu günden bu yana olarak hesaplanan doğum yaşı ile kemik yaşının ne farkı olabilir ki dediğinizi duyar gibiyim 🗓️. Bir bireyin doğduğu tarihten itibaren hesaplanan yaşı takvim yaşı olarak geçmektedir.

Kemik yaşı ise hormonların ve beslenme etkisi ile oluşarak genellikle sol el bilek röntgeninden hesaplanmaktadır 🦴 .

[gdlr_core_space height=”30px”]

page1image62264576

 

Şekil 1. Özellikleri Çıkartılmış El-bilek Kemiği ve Isı Haritası

[gdlr_core_space height=”30px”]

İskelet (kemik) yaşı ile kronolojik takvim yaşı arasındaki büyük uyumsuzluk, obezite olan veya erken ergenliğe başlayan çocuklarda meydana gelmektedir.

Dilerseniz sizlerle birlikte insan bileği üzerinde yer alan karpal kemikleri inceleyelim ve kemik yaşının ne olduğunu öğrenelim.

Kemik Yaşı Nedir ?

Kemiklerin olgunlaşma derecesi kemik yaşı olarak ifade edilmektedir. Kemik olgunlaşması normal olan bir çocukta kemik yaşı, kronolojik yaşına eşit olmalıdır. Fakat bazen kemik yaşı ile kronolojik yaş arasında bazı sapmalar görülmesi normal karşılanmaktadır.

El Bileği Karpal Kemikleri

Tıp dilinde Ossa Carpi olarak geçen el bileği kemikleri, 2 adet ön kol kemiği (radius ve ulna), 8 adet bilek kemiği (karpallar), 5 adet tarak kemiği (metakarpallar) ve 14 adet parmak kemiği olmak üzere 29 kemikten oluşur. Kemik yaşı tespitinde kullanılması için el bilek kemiği olarak geçen karpal kemikler ile ilgileneceğiz. Gelin bu kemikleri daha yakından tanıyalım 🔍.

[gdlr_core_space height=”30px”]

page2image45134848

 

Şekil 2. Karpal Kemiklerin Anatomik Yapısı

(1) Kapitat (capitate) 🦴
(2) Hamat (hamate) 🦴
(3) Triquetra (triquetra) 🦴
(4) Lunate (lunate) 🦴
(5) Trapezyum (trapezium)🦴
(6) Yamuk (trapezoid) 🦴
(7) Naviküler / Skafoid 🦴
(8) Pisiform (pisiform) 🦴

[gdlr_core_space height=”30px”]

Şekil 2’de anatomik açıdan ele alınan el bileğinde bulunan karpal kemiklerin analiz edileceği röntgen görüntülerine aşağıda yer verilmektedir.

[gdlr_core_space height=”30px”]

page2image45134640

 

Şekil 3. Örnek El-Bilek MRI Görüntüsü

page2image45135056

 

Şekil 4. Örnek El-Bilek MRI Görüntüsü

[gdlr_core_space height=”30px”]

0-6 yaş arası çocuklarda, röntgen görüntüleri incelenirken en önemli kriter epifiz bölgesinde bulunan sekonder kemikleşme merkezleri ve bilek kemiklerinin sayısı ve boyutudur.

[gdlr_core_space height=”30px”]

page3image45266960

 

Şekil 5. Kemikte Yer Alan Epifiz ve Diafiz Bölge Gösterimi

[gdlr_core_space height=”30px”]

Şekil 5’ te görüldüğü üzere uzun kemiğin yapısal analizi gerçekleştirildiğinde Epifiz uzun kemikte bulunan her iki uçtan biri sayılmaktadır. Şekil 5’ te görüldüğü gibi uzun kemiğin orta bölümüdür ve Epifiz ile Diafiz arasında kalan bölgede Metafiz bulunmaktadır.

 Metafiz, sekonder kemikleşme merkezinin yer aldığı alandır. Bu bölgelerden çıkartılacak alanların birbirine olan oranları ile insan yaşının tespiti gerçekleştirilebilmektedir.

Bu yazıda sizlere görüntü işlemenin ön aşamalarından olan farklı filtrelerin nasıl çalıştığını göstermekteyim. Programlama platformu olarak MATLAB seçilmiştir.

GUI platformunda görüntünün kolayca seçilerek filtrelerin uygulanması sağlanmıştır. Şekil 6’ da görüldüğü üzere GUI platformunda gerçekleştirilen arayüzde kullanıcı görüntüyü seçip üzerinde farklı filtreleri çalıştırabilmektedir 📟.

[gdlr_core_space height=”30px”]

page3image45283344

 

Şekil 6. Görüntü Önişleme Aşamalarının Yer Aldığı Örnek GUI Görüntüsü

[gdlr_core_space height=”30px”]

Arka Plan Çıkarımının Uygulanması

Arka plan çıkarma işlemi görüntü işleme uygulamalarında genellikle sabit bir zemin üzerindeki hareketli nesneleri yakalamak ve takip etmek için sıklıkla kullanılan bir yöntemdir. Kullanılan görüntülerdeki istenmeyen radyolojik işaretlerin kaldırılması arka plan çıkarılması yöntemi ile mümkün olmaktadır. Belirlenen yapısal eleman kullanılarak arka planda çıkarım işlemi yapılmaktadır.

Yapısal Eleman (Structure Element) Seçimi

[gdlr_core_space height=”30px”]

page4image45092928

 

Şekil 7. Arka Plan Çıkarımında Seçilen Yapısal Eleman

[gdlr_core_space height=”30px”]

Gerekli işlemler arka planda çalıştırıldığında seçilen görüntünün arka planının çıkarılmış haline aşağıda yer verilmiştir.

[gdlr_core_space height=”30px”]

page4image45093136

 

Şekil 8. Orijinal Görüntü

page4image45093344

 

Şekil 9. Arka Planı Çıkarılmış Görüntü

[gdlr_core_space height=”30px”]

Threshold Eşikleme Tespiti

Giriş olarak verilen görüntüyü ikili görüntüye çevirmek için kullanılan bir yöntemdir. İkili görüntü (binary), görüntünün siyah ve beyaz olarak tanımlanmasıdır. Amaç, gürültüyü azaltarak nesneyi belirlemektir.

İlk aşama olarak MRI görüntü üzerinde Threshold (Eşikleme) yapılmaktadır. Bu sayede renkli olmayan siyah-beyaz görüntülerde nesnenin tespiti rahatça algılanabilmektedir.

OpenCV’ nin threshold fonksiyonunda cv2.THRESH_BINARY threshold tipi ile görüntüde 127 – 255 değerlerinde eşikleme gerçekleştirilmektedir.

[gdlr_core_space height=”30px”]

page4image45093552

 

Şekil 10. Orijinal görüntü & Eşiklenmiş görüntü

[gdlr_core_space height=”30px”]

Kontrast İyileştirme

Görüntü iyileştirme teknikleri tek tek incelenerek en iyi sonuç veren kontrast iyileştirme yöntemi seçilmiştir.

Kontrast Germe

Kayıt ortamının veya görüntü cihazının tüm yeğinlik aralığını kapsayacak şekilde yeğinlik seviye aralığının genişletilmesi işlemidir.

[gdlr_core_space height=”30px”]

page5image45580704

 

Şekil 11. Kontrast İyileştirme Matlab Kodu

[gdlr_core_space height=”30px”]

imadjust yöntemi ile gri tonlamalı görüntüdeki yoğunluk değerlerin verilen yeni değerlerle eşleştirir.

[gdlr_core_space height=”30px”]

page5image45580912

 

Şekil 12. Imadjust Metodu Sonucu Görüntü Tonlaması

[gdlr_core_space height=”30px”]

histeq yöntemi ile histogram eşitleme özelliği kullanılarak kontrast arttırılır [8].

page5image45581120

 

Şekil 13. Histogram Eşitleme Matlab Kodu

page5image45581328

 

Şekil 14. Histogram Eşitleme Sonucu Görüntü Tonlaması

[gdlr_core_space height=”30px”]

adapthisteq yöntemi ile kontrast sınırlı olacak şekilde adaptif histogram eşitleme kullanılır.

page6image45595472

 

Şekil 16. Adaptif Histogram Eşitleme Sonucu Görüntü Tonlaması

[gdlr_core_space height=”30px”]

Tüm bu yöntemler sırası ile arka plan çıkarımından sonraki süreçte denendiğinde en iyi sonucu, bir sonraki filtre göz önünde bulundurularak adapthisteq yönteminin verdiği belirlenmiştir.

page6image45595680

 

Şekil 17. GUI ‘ de Elde Edilen Görüntü Sonucu

[gdlr_core_space height=”30px”]

Mean ve Median Filtrelerinin Uygulanması

Ortalama filtresi oluşturulan bir kernel yardımı ile oluşturulabilecek en basit filtredir. Her bir piksel için çevresindeki piksellerin ortalaması alınır.

page6image45596096

 

Şekil 18. Ortalama Filtre Alma Matlab Kodu

page6image45595888

 

Şekil 19. Ortalama Filtre Uygulanan Görüntü Sonucu

[gdlr_core_space height=”30px”]

Medyan filtresi, verilen komşuluk bölgesindeki değerler ortanca olan piksele atanır.

page7image45537168

 

Şekil 21. Medyan Filtresi Uygulanan Görüntü Sonucu

[gdlr_core_space height=”30px”]

Gaussian Filtresinin Uygulanması

Gauss filtresi, 2 boyutlu Gauss yumuşatma çekirdeği ile verilen sigma değerinde filtreler.

page7image45537792

 

Şekil 22. Gauss Filtresi Alma Matlab Kodu

page7image45537584

 

Şekil 23. Gauss Filtresi Uygulanan Görüntü Sonucu

[gdlr_core_space height=”30px”]

Laplas ve Sobel Filtrelerinin Uygulanması

Görüntü keskinleştirme için iki boyutlu Laplas operatörü 0.2 oranında filtre ile uygulanır.

[gdlr_core_space height=”30px”]

Görüntü keskinleştirme yöntemlerinden olan bir diğerinde ise görüntü üzerinde Sobel operatörü ile ayrıntıların daha çok ortaya çıkması sağlanmıştır.

page8image45519952

 

Şekil 26. Sobel Filtresi Alma Matlab Kodu

page8image45520160

 

Şekil 27. Sobel Filtresi Uygulanan Görüntü Sonucu

[gdlr_core_space height=”30px”]

Canny Kenar Tespiti

Canny kenar algılama algoritması, aynı anda bastırılan gürültüyle kenarları algılayabilen çok adımlı bir algoritmadır. İçerisinde Gauss filtresi ile gürültüyü azaltma, degrade operatörlerinin kullanımı ile gradyan hesaplama, Threshold (eşik) değerleri ile kenarları algılama adımlarını barındırmaktadır.

Örneğin, bireyin eli bulunan bir MRI görüntüsü üzerinde eşik değerleri (20, 70) olacak şekilde bir Canny tespit edicisini çalıştıralım ve sonuçlarına bakalım.

[gdlr_core_space height=”30px”]

page8image45545488

 

Şekil 28. Canny Kenar Algılayıcısı ile Kenar Tespiti Gerçekleştirilmiş Görüntü

[gdlr_core_space height=”30px”]

page9image45507936

 

Şekil 29. Canny Filtre Alma Matlab Kodu

page9image45507728

 

Şekil 30. Canny Filtresi Uygulanan Görüntü Sonucu

[gdlr_core_space height=”30px”]

Morfolojik İşlemler için Aşınma ve Genişleme Filtrelerinin Uygulanması

Aşınma (erode) filtresi, gri tonlamalı veya paketlenmiş ikili görüntüyü verilen yapısal elemanın değerleri doğrultusunda aşındırır.

Genişleme (dilate) filtresinde ise aşınmış görüntünün aşınan alanlarını genişletilerek üzerinde işlem yapılmasını kolaylaştırır. Belirlenen yapısal elemanlar ile aşınma ve genişleme filtrelerini aşağıdaki gibi uygulayalım.

[gdlr_core_space height=”30px”]

page9image45508144

 

Şekil 31. Aşınma ve Genişleme Filtreleri Alma Matlab Kodu

page9image45508352

 

Şekil 32. Aşınma ve Genişleme Filtreleri Uygulanan Görüntü Sonucu

[gdlr_core_space height=”30px”]

Yukarıda anlattığım görüntünün ön işleme aşamaları, uygulanılacak projelere göre yapısal elemanları değiştirilerek farklı filtreler ile denenebilmektedir. Böylece görüntüde en sık kullanılan ön işleme aşamalarını anlatmış bulunmaktayım. Güzel günlerde kodlamalar dilerim  💻

Diğer yazılarıma buradan ulaşabilirsiniz.

[gdlr_core_space height=”60px”]

REFERANSLAR

  1. http://www.cocukendokrindiyabet.org/haber/95 adresinden alınmıştır.
  2. Gür Emre Güraksın, Selçuk Üniversitesi, Yapay Zekâ Teknikleri Kullanarak Kemik Yaşı Tespiti,Fen Bilimleri Enstitüsü, Ocak-2015.
  3. Uz. Asis. Nurdan Akkan, Kemik Yaşı Saptanmasında Kullanılan Greulich-Pyle ve Tanner-Whitehouse Metodlarının Karşılaştırılması, İ.Ü. Diş Hekimliği Fakültesi Diş ve Çene OrtopedisiBirimi, 1982.
  4. Esra HASALTIN, Erkan BEŞDOK, El – Bilek Röntgen Görüntülerinden Radyolojik Kemik YaşıTespitinde Yapay Sinir Ağları Kullanımı, Erciyes Üniversitesi, Bilgisayar Mühendisliği Bölümü,Mühendislik Fakültesi, Fen Bilimleri Enstitüsü.
  5. Neyzi, O., Ertuğrul, T., Pediatri (2.Baskı), s. 61-100, Nobel Tıp Kitabevleri, İstanbul, 1993.
  6. http://mesutpiskin.com/blog/opencv-arka-plan-cikarma-background-subtraction.html
  7. adresinden alınmıştır.
  8. Dr. Öğr. Üyesi Caner Özcan, Karabük Üniversitesi, BLM429 Görüntü İşlemeye Giriş, YoğunlukDönüşümleri ve Histogram İşleme.
  9. https://www.mathworks.com/help/images/ref/imadjust.html adresinden alınmıştır.
  10. Sıddık Açıl, Python ile Görüntü İşleme: Mean ve Median Filtreler adlı Medium yazısındanalınmıştır.
  11. https://www.mathworks.com/help/images/ref/fspecial.html?searchHighlight=fspecial&s_tid=doc_srchtitle adresinden alınmıştır.
  12. https://www.mathworks.com/help/images/edge-detection.html?searchHighlight=cannyadresinden alınmıştır.
  13. https://www.mathworks.com/help/images/ref/imerode.html?s_tid=doc_ta adresinden alınmıştır.
  14. https://www.mathworks.com/help/images/ref/imdilate.html?s_tid=doc_ta adresinden alınmıştır.

Naive Bayes ile Duygu Analizi

📍Duyarlılık Analizi, belirli bir şeye göre birinin hissiyatını yargılamak veya duygularını anlamlandırmak için kullanılan bir yöntemdir. Temel olarak bir metin işleme (text processing) işlemi olup verilen metinin duygusal olarak ifade etmek istediği sınıfı belirlemeyi amaçlar.
Duygu Analizi aynı zamanda metinlerin üzerinden amaca yönelik olarak fikir çıkarımı yapılırken kelime sayısı, isim, sıfat, zarf veya fiil gibi kelimelerin sıklıkları (frekansları) üzerinden fikir madenciliği yapılmasına verilen isimdir. (Word2vec, TF/ IDF) Frekans tabanlı fikir madenciliğinde, öncelikle isim kelime grupları bulunarak bunlar uzunluklarına, kullanımdaki gerekliliklerine ve olumlu olumsuz kutupsallığına göre sınıflandırılmaktadır.

📑Herhangi bir dökümanın, bir belgenin veya bir metnin içeriğine göre duygu analizi yapılabilmektedir. Bu durum aslında bir bakıma Text Mining denilen Fikir Madenciliğiolarak da adlandırılmaktadır. Metin madenciliği sayesinde verilen metnin duygusal olarak ifade etmek istediği sınıf belirlenmektedir. Duygu analizindeki duygusal kutupsallık (sentimental polarity) ile verilen metin basitleştirilerek olumlu (positive) ve  olumsuz (negative) olarak sınıflandırılmaktadır.

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

📍 Sınıflandırmanın yapılacağı sınıflandırıcı çeşidi ise makine öğreniminde çok başarılı sonuçlar elde edebilen olasılık tabanlı Naive Bayes Teoreminin temeline dayanan Bayes sınıflandırıcısı olarak karşımıza çıkmaktadır. Peki bu Naive Bayes Teoremi nedir? Bayes teoremi, olasılık kuramı içinde incelenen önemli bir konudur. Bu teorem bir rassal değişken için olasılık dağılımı içinde koşullu olasılıklar ile marjinal olasılıklar arasındaki ilişkiyi gösterir. Naive Bayes, bir metnin sınıfını (kategori veya etiket) tahmin etmek için olasılık teorisinden ve Bayes Teoreminden yararlanan olasılıksal algoritmalar ailesidir. Naive Bayes Teoremi temelinde çalışan bu sınıflandırıcı, incelediği bir kelime ya da bileşen için her bir durumun olasılığı hesaplanmaktadır. Bulduğu bu olasılık değerleri içerisinde en yüksek değere göre sınıflandırma yapmaktadır. 

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

🔮Haydi, sizlerle bir örnek üzerinde sınıflandırıcıyı daha iyi anlamaya çalışalım. Daha önce söylediğim gibi Naive Bayes sınıflandırıcısı farklı dökümanları kategorilere ayırabilmektedir. Örneğin bir haberi BOW (bag-of-words) yöntemi ile kelimelerin sıklıklarına göre anlamlarını bilim, politika veya spor olarak kategorilere göre sınıflandırmaktadır. Duygu Analizinde ise elindeki herhangi bir dökümanı, metni veya bir ürünü pozitif veya negatif olarak sınıflandırmaktadır. 

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

⬆️Yukarıda verilen cümleler, Bayes sınıflandırıcısı ile Pozitif veya Negatif olarak sınıflandırılmaktadır. Örneğin ‘Onu çok severim’ cümlesinde her bir olasılık değeri hesaplanarak sınıflandırılmış ve Pozitif değer ağır bastığı için sınıfı Pozitif olarak seçilmiştir.

Metin Özellikleri Çıkarımı

Makinelerin bizler gibi ham metni anlayabilmesi maalesef imkansızdır. Bununla birlikte ham metin gibi görüntü ve sesleri de algılayabilmeleri için sayısal verilere dönüşmesi gerekmektedir. 

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

🧷Bu nedenle, burada çalışacağımız metnin özelliklerini ayıklamak ve bu özellikler üzerinde hesaplama yapabilmemiz için verileri sayı olarak temsil etmemiz gerekir.

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

Bayes Teoremine göre hesaplanacak değerler için kelimelerin belirli bir sınıfa ait olma olasılığı ve daha sonra kelimelere verilen sınıfın olasılığı hesaplanmak istendiğinde aşağıdaki formül kullanılacaktır.

[gdlr_core_space height=”30px”]
[gdlr_core_space height=”30px”]

Bu formül bize Koşullu Olasılık kavramını verir ve B olayı gerçekleştiğinde A olayının gerçekleşme olasılığıolarak okunur. Bu şekilde herhangi bir dökümanda veri analizi yapmak için Naive Bayes kullanılarak metin madenciliği gerçekleştirilebilmektedir. Aşağıdaki örneği inceleyelim.

[gdlr_core_space height=”30px”]

𝑃(+|𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡) = (𝑃 (𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡 | +).𝑃(+))/(𝑃(𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡)) = 𝑃 (𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡 | +).𝑃(+)

𝑃(−|𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡) = (𝑃 (𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡 | −).𝑃(−))/(𝑃(𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡)) = 𝑃 (𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡 | −).𝑃(−)

[gdlr_core_space height=”30px”]

Yukarıdaki formüldeki olasılıkların hesaplanması için öncelikli olarak her bir durumun olasılık değerinin bilinmesi gerekmektedir. Bu sebeple öncelikli olarak  𝑃 (𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡) olasılığının + ve – analizinin yapılması gerekmektedir.

[gdlr_core_space height=”30px”]

𝑃 (𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡 | +) = 𝑃 (𝐼 | +). 𝑃 (𝑙𝑜𝑣𝑒 | +). 𝑃 (𝑡ℎ𝑖𝑠 | +). 𝑃 (𝑝𝑟𝑜𝑑𝑢𝑐𝑡 | +)

𝑃 (𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡 | −) = 𝑃 (𝐼 | −). 𝑃 (𝑙𝑜𝑣𝑒 | −). 𝑃 (𝑡ℎ𝑖𝑠 | −). 𝑃 (𝑝𝑟𝑜𝑑𝑢𝑐𝑡 | −)

[gdlr_core_space height=”30px”]

Bu örnekte görüldüğü gibi Bayessian formülü ile olasılık değerleri yerine yazıldığında çıkacak sonuçlarda hangi değer daha büyükse metnin çıkarımı ona göre yapılmaktadır. Örneğin tüm hesaplamalar bittiğinde aşağıdaki gibi sonuçlar yer almaktadır.

[gdlr_core_space height=”30px”]

𝑃(+|𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡)  = P(+).P(this|+).P(product|+).P(I|+).P(love|+) = (0.6 x 0.1053 x 0.1579 x 0.1053 x 0.1053) = 0.000110616 = 1.1 x 10-4

𝑃(−|𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡) = P(-).P(this|-).P(product|-).P(I|-).P(love|-) = (0.4 x  0.0667 x0.1333 x  0.1333 x 0.0667) = 0.00003162 = 3.1 x 10-5

[gdlr_core_space height=”30px”]

Değerlere bakıldığında I love this product cümlesinin pozitif koşulunun daha yüksek olduğu görülmektedir. Bu sebeple cümlenin pozitif yani olumlu bir cümle olduğu söylenebilmektedir 🎉

[gdlr_core_space height=”30px”]

𝑃(+|𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡) > 𝑃(−|𝐼 𝑙𝑜𝑣𝑒 𝑡ℎ𝑖𝑠 𝑝𝑟𝑜𝑑𝑢𝑐𝑡)

Başka bir yazımda görüşmek dileğiyle. Güzel günler diliyorum 🤗

Diğer yazılarıma buradan ulaşabilirsiniz.

[gdlr_core_space height=”60px”]

REFERANSLAR

  1. Şadi Evren ŞEKER, Duygu Analizi (Sentimental Analysis), Smith College, Department of Computer Science, MA, US.
  2. Buse Yaren Tekin, Lojistik Regresyon ile Duygu Analizi, Medium yazısından alınmıştır.
  3. http://textdecipher.com/category/duygu-analizi/ adresinden alınmıştır.
  4. Onur Dayıbaşı, Bag of Words Nedir, Medium yazısından alınmıştır.
  5. From Vikipedi, https://tr.wikipedia.org/wiki/Bayes_teoremi adresinden alınmıştır.

Keras ile RNN ve LSTM’e Giriş

keras rnn lstm

🔮Derin öğrenme alanında oldukça önemli olan Keras kütüphanesi ile yapay zekâ yolculuğumuza devam  ediyoruz. Bir ve birden fazla katmanlara sahip Yapay Sinir Ağlarında birçok farklı sinir ağı modeli bulunmaktadır. Bugün sizlerle birlikte yinelenen sinir ağları olarak literatüre geçen RNN sinir ağı modeli ve tekrarlayan sinir ağlarındaki ufak bir probleme çözüm üreterek çıkartılan LSTM sinir ağı modelini inceleyeceğiz.

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

🧷RNN (Recurrent Neural Network) sinir ağı modeli, diğer yapay sinir ağlarına göre farklı yapıya sahiptir. En büyük farklarından birisi geçici de olsa bir hafızaya sahip olmasıdır. Bu hafıza kısa belleğe sahiptir. Bu sebepten dolayı çok uzağı hatırlayamazlar, yakın geçmişte hatırlama yapabilirler. Oysaki ANN öyle midir? Hayır. ANN bir hafızaya sahip değildir. Yapay sinir ağlarının unutması mümkündür fakat yinelenen sinir ağları hafızalarından kaynaklanan özellik ile yakın geçmişi hatırlayabilmektedir. Peki geçmişi hatırlayabilen bir sinir ağı bizim ne işimize yarar? Geçmişteki bilgilerini kullanarak geleceğe yönelik çıkarımlar ve tahminler yapabilmektedir. Hatta diyelim ki bir görüntü üzerinde sınıflandırma yapıyoruz. Daha önceden öğrendiği bir özelliğe göre önüne gelen görüntüdeki özellik ile eşleştirerek sınıflandırma gerçekleştirebilmektedir. Bu sebeple diğer algoritmalara göre daha etkili çalışmaktadır 🌟.

[gdlr_core_space height=”30px”]

Yandaki görselde bir RNN ağının yapısını görmekteyiz. Bu modellerde önceki adımdaki çıktı geçerli adıma girdi olarak beslenmektedir. Bilgileri hatırlayan ağlar ise Hidden Layer adını verdiğimiz Gizli Katmanlar aracılığıyla gerçekleşmektedir. Böylelikle bir tekrarlama hiyerarşisi bulunmaktadır . 

Bu modele güzel bir örnek vermek gerekilirse, günlük hayatta neredeyse yoğun olarak gördüğümüz çeviri işlemleri, metin madenciliği kısacası doğal dil işleme alanı RNN mantığı ile çalışmaktadır. Nasıl mı? Düşünün siz bir çeviri yapıyorsunuz, tıpkı bir makinenin çeviri yaptığı gibi, her dilin kendi semantik yapısına göre cümlenin bir sonraki kelimesini tahmin etmek gerektiğinde önceki kelimelere ihtiyaç duyacaksınız. Bu nedenle önceki kelimeleri hatırlamanız gerekecek. Burada yardımınıza RNN koşmaktadır. Fakat RNN’ in de dezavantajları olacaktır elbette. Bu sebeptendir ki LSTM yapısı ortaya konmuştur. Öncelikle RNN hafıza yapısını güzelce inceleyelim daha sonra LSTM’ i de birlikte göreceğiz.

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

Görselde görmüş olduğunuz gizli katmanlar içerisinde düğümler bulunmaktadır. Bu düğümler kendi kendini besleyebilen temporal loop dediğimiz zamansal döngülere sahiptir. Bu şekilde iç hafızalarını (internal memory) kısa süreli olarak kullanarak hatırlama mekanizmasını çalıştırırlar. Peki bu kendi kendini besleme olayı derken neyden bahsediyoruz? Sinirler arası bu bağlantılarda nöronların kendi aralarında haberleşmeleri söz konusudur. Aldığı bir giriş bilgisini (input) çıkış vermesine rağmen kendisini o giriş bilgisi ile besleyerek unutmamayı sağlıyor. Bir sonraki nörona bu bilgiyi verdiği zaman daha önce öğrendiği bu bilgi aklında kalıyor ve zamanı geldiğinde hatırlayarak bu bilgiyi kullanılabilir hale getiriyor. 

📝Basit bir doğal dil işleme içeren kelime tahminini ele alalım. “Yapay” kelimesinin olduğu bir RNN karakter seviyesini alalım. İlk dört harf olarak {y, a, p, a} harf kümesini sinir ağına veririz. Buradaki kelime dağarcığı harf tekrarları gözetilmeksizin {y, a, p} sadece üç harften oluşmaktır. Bizim sinir ağından beklentimiz ise son harf olan “y” harfini tahmin etmesidir. Bu ağda y harfini sinir ağına verdikten sonra gelen a harfi için bir önceki çıkıştaki y harfi ile olan bir yineleme formülü uygulanır ve bu tüm sinaptik nöronlarda gerçekleştirilir. Böylelikle yinelenen bir sinir ağı ile istenilen tahmin gerçekleştirilir.

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

RNN’ in yapısını anlayabilmek adına bir örnek daha yapalım. Yukarıdaki görüntü baz alındığında öğretmeninizin size ilkokul 1. Sınıfta öğrettiği alfabenin daha sonraki süreçlerde yazı yazmak ve hatta kitap okuyabilmek için cümleleştirerek kullanıldığını hatırlayalım. Örneğin şu anda bu bloğu okurken bile aslında hafızanızda tuttuğunuz alfabedeki harflerin kullanımını hatırlayarak bir bakıma tekrarlayan sinir ağı mimarisini gerçekleştirmiş oluyorsunuz. Aslında bu örnek düşünüldüğünde RNN kısa süreli belleğe sahip olduğu için uzun süreli bellek olan LSTM mimarisi örnek verilse daha uygun olur.

[gdlr_core_space height=”50px”]

RNN Yapıları

[gdlr_core_space height=”30px”]

  • One to One: Bir tane girdiye karşılık bir tane çıktının yer aldığı sinir ağı modelidir.
  • One to Many: Bir tane girdiye sahip bir sinir ağında birden fazla çıktı yer almaktadır. Örneğin, elimizde girdi olarak bir görüntü olduğunu varsayalım. Beklenen çıktı ise bu görüntüdeki yapılan eylemdir. 

Çıktı : Piyano Çalan Bebek 🎹

Görüntüdeki piyano, bebek ve müzik defterindeki notaları (çıktıları) algılayarak daha önceden öğrendiği bu özellikleri hatırlayıp çıktıyı tahmin etmektedir.

[gdlr_core_space height=”60px”]

  • Many to One: Birden fazla girdiye ait sinir ağından bir tane çıktı verilmesi beklenir. Örnek olarak girdilere birden fazla cümle veya cümle içerisindeki kelimeler verilebilir. Çıktı olarak ise örneğin bu cümlede verilmek istenen duyguyu tespit edebiliriz. 

[gdlr_core_space height=”30px”]

  • Many to Many: Birden fazla girdiye ait sinir ağında birden fazla çıktı verilmesi beklenir. Çeviri programları buna en güzel örnek olarak verilebilir. 

“Recurrent models tackle sequence … healthcare” cümlesindeki her bir kelime sinir ağında aslında bir girdi olarak sayılmaktadır. Buradaki İngilizce’ den Türkçe’ ye çeviri işleminde sinir ağı yapısı kullanımı ile görüldüğü gibi birden fazla output içeren bir çıktı verilmiştir.

💡 Haydi sizlerle ufak bir kodlama yapalım! RNN sinir ağının kullanılacağı veri seti olan New York Şehri Airbnb Açık Verisini Kaggle’ dan ücretsiz olarak indirebilirsiniz. İşe veri setini almakla başlayalım, ne dersiniz?

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

🗺️Gerekli kütüphaneler tanıtıldıktan sonra uyarıları da göz ardı ederek veri setimizdeki verileri pandas ile alabildik. Şimdi kontrol amaçlı head( ) komutu ile ilk 5 veriyi ekrana bastıracağız.

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

Verileri aldıktan sonra bu veri setinde neye göre tahmin yapacağımızı belirlememiz gerekmektedir. Örneğin bu yazıda otel fiyatlarına göre bulunduğu yeri tahmin etmesi ile ilgileneceğim. Bu sebeple eğitim verisine price (fiyat) bilgilerini atadım 🏷️.

[gdlr_core_space height=”30px”]

Bu aşamada ön işleme olarak 0-1 aralığına ölçeklendirerek MinMax Normalizasyonunu gerçekleştiriyoruz.

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

📎 Daha sonra örnekler ve tahminlerin oluşumu için boş X ve Y eğitim dizileri oluşturuyoruz. Yukarıdaki grafikte gördüğünüz verilerden ortalama bir örneklem sayısı kullanırız. Örneğin biz X_train için 100 tane örnek (sample) belirleyelim. 100 tane alınan sample verisine göre 101. veriyi ise tahmin (predict) için Y_train kümesinin içine atayacağız. 

[gdlr_core_space height=”30px”]

🧐 Peki bu sadece 100 veri için mi gerçekleşecek? Hayır. Biz bu işlemi hep bir defa kaydırarak (shift) tüm örnekler üzerinde gerçekleştireceğiz. For döngüsü içerisindeki kaydırma işlemini inceleyebilirsiniz.

Yeniden boyutlandırma gerçekleştirilerek X_train veri kümesindeki verileri shape[0] ve shape[1] ile değerlerini yazdırabilirsiniz. Aynı zamanda oluşturulan y_train tahmin kümesini de ekrana bastırabilirsiniz.

[gdlr_core_space height=”50px”]

RNN Modelinin Oluşturulması

Buraya kadar olan kısımda veri hazırlama adımını gördük. Şimdi ise sıra kullanacağımız RNN sinir ağı modelini oluşturmaya geldi. Sequential, aslında tüm bu mimarileri içerisinde barındıran bir yapıdır diyebiliriz. Dense katmanı ise mimarideki katmanları kullandığımız bir yapıdır. Dropout, Overfitting yani aşırı öğrenme sorununu aşmamıza yarayan bir regülarizasyon yöntemidir. SimpleRNN ise RNN mimarisini kullanacağımız katmandır🌲.

Daha sonra Sequential( ) modülü çalıştırılarak mimaride RNN kullanacağımızı bildirmiş olduk.

🔎Haydi bu projede kullanacağımız SimpleRNN’ in içerisine aldığı parametreleri birlikte inceleyelim.

  • units: Çıktı alanının boyutu
  • activation: Kullanılacak aktivasyon fonksiyonu
  • use_bias: Bias değerinin kullanılıp kullanılmayacağını belirten parametre
  • return_sequences:  Çıkış dizisindeki değerin son çıkış mı yoksa tam dizinin mi döndürüleceği değerinin bulunduğu parametre
  • input_shape: Kullanılacak verinin şeklini belirten parametre

[gdlr_core_space height=”30px”]

NOT 🧷

input_shape parametresi yalnızca ilk SimpleRNN katmanında belirtilmelidir. Çünkü sonra gelen katmanlar diğerine bağlı olarak gelişecektir.

[gdlr_core_space height=”30px”]

Yukarıda oluşturulan RNN mimarisinde toplam 4 adet SimpleRNN katman yapısı oluşturulmuştur. Aktivasyon fonksiyonu olarak tanjant kullanılmıştır. Siz bunun yerine ReLU, Sigmoid gibi diğer fonksiyonlar ile de test edebilirsiniz. Dropout işlemi ise daha önce söylediğim gibi sinir ağının ezber yapmasını engelleyen bir yöntemdir. İçerisine aldığı değer kadar %2’ lik sinir ağından nöronları ve bunların sinaptik bağlarını kaldırır. Katmanlar oluşturulduktan sonra optimizasyon yöntemi olarak ‘Adam’ optimizasyonu ve hata hesaplayıcı olarak ortalama hata karesi yöntemi seçilmiştir. Daha sonra 100 epoch kadar fit ile eğitim gerçekleştirilmiştir. Aşağıda ise ilk 5 epoch ve loss değerlerinin incelenmesine yer verilmektedir 🏋️.

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

🧮 Eğitim işlemi gerçekleştirildikten sonra bir test klasörü oluşturabilirsiniz ya da veri seti için hazır oluşturulmuş test klasörünü kullanarak tahmin (predict) gerçekleştirebilirsiniz. RNN yapılarından bahsettik fakat hatırlayacağınız üzere kısa süreli belleğe sahip bir yapıydı. Bu sebeple çok uzak geçmişi hatırlayamazlar. Bu eğitimde 100 epoch çalıştırmayı sürdürdüğünüzde test işlemi ile sonucun çok iyi çıkmadığını da fark edeceksiniz. Bu problemin önüne geçmek için ise hem kısa süreli hem uzun süreli belleğe sahip olan LSTM adını verdikleri Long Short Term Memory yapısı oluşturulmuştur. Bu sayede sinir ağları hem yakındaki bilgileri hem çok uzaktaki geçmişin bilgilerini hatırlayabilmektedir. LSTM, RNN mimarisinin özelleştirilmiş bir yapısıdır.

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”50px”]

X : Bilginin ölçeklendirilmesi, kendisine gelen bağlantıların birleşip birleşmeyeceğine karar veren yapılardır.

+ : Bilgilerin toplanması, X’ den gelen bilginin toplanıp toplanmayacağına karar veren yapılardır.

σ : Sigmoid katmanı, bu katmana gelen verilerin sonucu olarak 0 veya 1 gibi değerler döndürmektedir. (Sigmoid aktivasyon fonksiyonu, belirli bir değerin üzerini 1 altını 0 yapar)

tanh : Çok küçük gradyan değerinden kaynaklanan yavaş öğrenme (vanishing gradient) eylemi için tanh aktivasyon fonksiyonu kullanılmaktadır.

h(t-1) : Bir önceki girdiden gelen çıktı değeri

h(t) : Çıktı değeri

C(t): Bir sonraki sinir ağına ulaşılacak bilgi 

C(t-1): Bir önceki sinir ağından aldığı bilgi

Bu şekilde LSTM bellek yapısını da öğrenmiş olduk. Keras ile LSTM mimarisi de oluşturduktan sonra yukarıda RNN kodlarındaki gibi eğitim ve test işlemini gerçekleştirebilirsiniz 🤸‍♀️.

[gdlr_core_space height=”50px”]

LSTM Modelinin Oluşturulması

Aşağıdaki gibi Keras’ a ait modelleri yine aynı şekilde hızlıca oluşturalım ve LSTM mimarisini oluşturmaya geçelim.

[gdlr_core_space height=”30px”]

[gdlr_core_space height=”30px”]

Sequential( ) ile genel yapımızı oluşturmaya başlayalım. LSTM katmanını ve Dense ekleyerek tıpkı RNN’ de olduğu gibi compile edebilirsiniz. 

[gdlr_core_space height=”30px”]

Eğitim ve test işlemi gerçekleştirildiğinde RNN’ den daha başarılı sonuçlar elde ettiğinizi göreceksiniz. RNN ve LSTM mimarileri de derinlemesine öğrenmiş olduk. Sizlere iyi günlerde bol kodlamalar dilerim. Başka bir yazımda görüşmek dileğiyle 😊

Diğer yazılarıma buradan ulaşabilirsiniz.

[gdlr_core_space height=”60px”]

REFERANSLAR

  1. DATAI TEAM, Deep Learning ve Python: A’dan Z’ye Derin Öğrenme Kursu, Udemy.
  2. Keras Recurrent Neural Network, https://keras.io/layers/recurrent/ adresinden alınmıştır.
  3. https://becominghuman.ai/a-noobs-guide-to-implementing-rnn-lstm-using-tensorflow-1907a5bbb1fa adresinden alınmıştır.
  4. https://en.wikipedia.org/wiki/Long_short-term_memory adresinden alınmıştır.
  5. https://medium.com/@ishakdolek/lstm-d2c281b92aac adresinden alınmıştır.
  6. https://nvestlabs.com/recurrent-layers-of-keras-8/ adresinden alınmıştır.
  7. https://vinodsblog.com/2018/12/31/how-neural-network-algorithms-works-an-overview/ adresinden alınmıştır.
  8. https://www.analyticsvidhya.com/blog/2017/12/introduction-to-recurrent-neural-networks/ adresinden alınmıştır.
  9. http://www.crvoices.com/archives/2779 adresinden alınmıştır.
  10. Gatech, CS7650 Spring, Introduction to Deep Learning.
  11. https://onedio.com/haber/agzinizin-acik-kalmasina-sebep-olacak-bilimin-aciklayamadigi-20-sasirtici-bilgi-695050 adresinden alınmıştır.
  12. https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data adresinden alınmıştır.