Python ile Twitter Üzerinden Kelime Bulutu ve Sentiment Analizi Çalışması

Günümüzün en popüler kavramlarından birisi, kelime bulutu ve onun üzerinden yapılan çalışmalardır. İnsanlar kelime bulutu üzerine denemeler yaparken nltk kütüphanesini kullanırlar. Burada amaç doğal dil işleme evrelerinden öncesinde yapılan işlemlerdir. Python programlama dili, her geçen gün daha geniş kitlelere ulaştığı için nltk ile yapılan projelerin çeşitliliği artmaktadır. Başlangıç seviyesinde olan insanlar, genellikle Twitter üzerinde herhangi bir konu üzerine atılan tweetleri analiz eder ve onun üzerinden görselleştirmeler, analizler ve çıkarımlar yaparlar. Kelime bulutu oluşturacak olurken kilit noktalardan birisi de tekrar sayılarıdır. Kelime ne kadar tekrar ederse, kelime bulutu içerisinde kendisini belirgin etme durumu daha ön plana çıkar. Yapacağınız araştırmaları, aşağıdaki görsel ile anlatmaya çalıştım. Burada q ile belirtilen kısım, aratacağınız kelime ya da cümlenin olduğu kısımdır. Bunları yapabilmek için öncelikle Twitter Developers hesabınızın olması gerekmektedir. Ek olarak buradan çekeceğimiz için bağlantıyı buradan sağlıyor olacaksınız. Bağlantı aracılığıyla tweetleri kendi local çalışma yerinize çekerek üzerinde işlemler yapabilirsiniz.
 

Üst taraftaki fotoğrafta da görüldüğü gibi işin en kritik kısmı, def yapısını iyi bir şekilde kurmak ve hangi değişkenler üzerinde etiket yapacağınıza karar vermektir. Token ve key değerlerini bir yere kaydedip oradan çekebilirsiniz. Burada ben gizlilikten ötürü key değerlerini göstermedim fakat Twitter Developer hesabınız olunca, bu değerlere kendiniz erişebilir ve gerekli atamaları yapabilirsiniz. Twitter üzerinde analiz yaparken spesifik değerlere erişmek isterseniz, özel aramalar yapabilirsiniz. Kaynaklar kısmında gerekli dokümantasyonu bırakacağım oradan isteğinize göre inceleyip kendi kodunuza ve analizinize entegre edebilirsiniz. Ekstra bilgi vermem gerekirse, kullanacağız nltk içerisinden birkaç metot bulunmaktadır. Benim bireysel olarak kullandıklarımdan birisi ‘stopwords’ bir diğeri ise ‘wordnet’tir. İngilizce seçeneğini üzerine çalışacağınız dile göre dilediğiniz gibi değiştirebilirsiniz. Kelime sağlamlığı ve etkinliği bakımından geniş kapsamlı olan İngilizce dilidir. Kendi diliniz üzerinde çalışırken tam anlamıyla kaliteli bir sözcük topluluğu varsa, yorumlar sekmesinden belirtebilirsiniz. Böylece etkileşimi yüksek tutabilir ve alınacak verim oranını arttırabiliriz. Aşağıda olan görselde burada anlattığım kısmı gözlemleyebilirsiniz.

 
Kelime Bulutu çalışması için ben ‘samsung’ kelimesini seçtim. Lang kısmında dil seçeneğinin kısaltmasını girerek seçtiğiniz hashtag verisini kendi çalışma alanınıza çekebilirsiniz. İlk başta gerekli kütüphaneleri ekliyoruz hemen sonrasında çalışacağımız arka plan rengini kişisel isteğinize göre değiştirebiliriz. Ek olarak plt.axis değerini ‘on’ hale getirirseniz tekrar eden kelimelerin frekansını gözlemleyebilirsiniz. Ben bunu kendim ön plana çıkarma metodu ile yaptığım için eksenlerini ekstra olarak göstermeyi gereksiz buldum. Burada yaptığım işlem temel bir wordcloud yapısı kurmak ve sizlerin giriş seviyesinde bile olsa bir şeyler kazandırmak. Doğal dil işleme için kariyer planlamanız varsa, bunu bir başlangıç olarak görüp gerekli notları takip ederek kendini geliştirmeye devam edebilirsiniz. Kelime bulutu yapısı bu işlerin en alt sekmesidir. Ben de bir junior olarak sizlere de öğretirken kendim de bu alanda çalışmaları sürdürüyorum. Doğal dil işleme kariyeri, geniş çaplı kaynak tarama ve github gibi platformlarda başkalarının neler yaptığını, nasıl kod yazdıklarını ve ne gibi projelerin yapıldığına dair her an takipte kalmanız gereken bir alandır.

 
Son kısımda da bahsedeceğimi söylediğim giriş seviyesi bir sentiment analizini göstereceğim. Burada anlatacaklarıma başlamadan önce, Python’da kod yazarken def kalıplarını iyi kurmanız ve kodunuzu burada içeriye iyice yedirmeniz gerekmektedir. Fonksiyonel işlemlerinin hızlandırılması ve ileri zamanlarda çalışırken sizden sonrasında yerinize gelecek kişilere anlaşılır, ölçeklenebilir bir kod yazmanız herkes açısından fayda sağlayacaktır. Bunu da def yapıları ile temiz kod yazarak sizin yerinize gelen kişiye kolay bir şekilde orada yaptıklarınızı aktarabilirsiniz. Sentiment analizine dönecek olursam, burada halihazırda textblob kütüphanesi aracılığıyla bu skorlama işini yapabiliriz. Twitter üzerinden atılan tweetlerin içeriği ve bu içeriğin olumlu – olumsuz kelimeler barındırılması sonucunda TextBlob bunu sınıflandırır. Bu sınıflandırma sonrası, sizlere üzerinde analiz yapılacak hazır hale gelmiş bir kolon verir. Bunu isteğinize göre analiz edebilir, farklı çalışmalar deneyebilirsiniz. Örnek olarak grafik haline dökebilir, tekrar eden kelimelerin sayısını gözlemleyebilir ve bu değerler sayesinde farklılıkları ele alarak, arka planını kendiniz düzenlediğiniz bir resme entegre edebilirsiniz.
 

References:
-https://globalaihub.com/sentiment-analysis-with-naive-bayes/
-https://globalaihub.com/duygu-analizi-nedir/
-https://www.veribilimiokulu.com/
-https://amueller.github.io/word_cloud/
-https://www.datacamp.com/community/tutorials/wordcloud-python
-https://monkeylearn.com/sentiment-analysis/

OpenCV Kullanımı ile Kontur Çıkarımı

Görüntü işlemede kontur denilen kavram, bir rengin veya yoğunluğunun sahip olduğu tüm sürekli noktaları birleştiren kapalı bir eğridir. Konturlar bir görüntüde bulunan nesnelerin şekillerini temsil eder. Kontur algılama, şekil analizi ve nesne algılama ve tanıma için yararlı bir tekniktir. Kenar tespiti yaptığımızda, renk yoğunluğunun önemli ölçüde değiştiği noktaları buluruz ve sonra bu pikselleri açarız. Bununla birlikte, konturlar, görüntüdeki nesnelerin şekillerine karşılık gelen soyut nokta ve segment koleksiyonlarıdır. Sonuç olarak, programımızda kontür sayısını saymak, bunları nesnelerin şekillerini kategorize etmek için kullanmak, bir görüntüden nesneleri kırpmak (görüntü bölümleme) ve çok daha fazlası gibi konturları işleyebiliriz.
Computer vision
🖇 Kontur tespiti, görüntü segmentasyonu için tek algoritma değildir ancak mevcut son teknoloji semantik segmentasyon, hough dönüşümü ve K-Means segmentasyonu gibi başka birçok algoritma vardır. Daha iyi bir doğruluk için, bir görüntüdeki konturları başarılı bir şekilde tespit etmek için izleyeceğimiz tüm ardışık düzenler:

  • Görüntüyü ikili görüntüye dönüştürün, giriş görüntüsünün ikili görüntü olması yaygın bir uygulamadır (eşikli görüntü veya kenar algılamanın bir sonucu olmalıdır).
  • FindContours( ) OpenCV işlevini kullanarak konturları bulma.
  • Bu konturları çizin ve resmi ekrana gösterin.

Photoshop Üzerinde Kontur Uygulama

Adobe PS
Kontur çıkarımının kodlamasına geçmeden önce sizlere daha iyi edinimler kazandırmak için öncelikle Photoshop üzerinde örnek vereceğim.
Katmandan kontur çıkarımı
İlk adım olarak yukarıda gördüğünüz pencereye erişmek için Photoshop üzerinde bulunan Katmanlar penceresindeki herhangi bir katmana sağ tıklayarak karıştırma seçeneklerini seçiniz.
🔎 Katmanlar penceresi aktif değil ise üst menüden Pencere menüsüne tıklayarak katmanları aktif etmelisiniz. Windows için  kısayol tulu F7′ dir.
Sol bölümden Kontur sekmesini seçerek görüntüde oluşturmak istediğiniz kontur rengini ve opaklığını seçmeniz mümkündür. Ardından önce görüntüde oluşacak kontur çıkarımının iyi ayrıtlandırılabilmesi için arka plan çıkarımı yapılmaktadır.
People siluet
Burada gördüğünüz görselde arka plan çıkarıldıktan sonra nesnenin ön planda belirgin olabilmesi için sarı tonlarında bir seçim gerçekleştirdim. Arka plan çıkarıldıktan sonra görüntüde dış kontur uygulanarak tespitin daha başarılı olması sağlanacaktır.
People contour

Python OpenCV ile Kontur Çıkarımı

Platform olarak Google Colab ve Python programlama dilini kullanmaktayım. Düzenli olarak Python kodlayanlar var ise mutlaka tavsiyede bulunabileceğim bir platform! Haydi gelin, adım adım kodlamaya başlayalım.
📌 Projemiz için gerekli olan kütüphaneleri aşağıdaki gibi import ile yükleyelim.
Gerekli Kütüphanelerin Yüklenmesi
📌 İkinci adım olarak görüntümüzü imread fonksiyonu ile elde ediyoruz.
Görüntünün Alınması
📌 Görüntü işleme dünyasında bildiğiniz üzere görsellerimiz BGR formatında gelmektedir. BGR görüntünün ilk olarak RGB formatına dönüştürülmesi ve ardından gri skala renk kanalına atanması gerekmektedir.
Converting Color Spaces
📌 Dördüncü adım olarak görüntüde bir eşik değeri belirtilerek binary threshold (ikili eşikleme) işlemi yapılmaktadır. Binary threshold fonksiyonunun arka planda çalıştırdığı matematiğe erişmek için aşağıdaki formülü incelemelisiniz 👇
Formula
Binary threshold
Dikkat ettiyseniz threshold uygulanacak görüntü RGB değil gri seviye görüntü seçilmiştir. Lütfen bu aşamada dikkat edelim. Bu adımları sırası ile takip ettiğinizde aşağıdaki dönütü alacaksınız.
Background
📌 Bu adımda ise görüntüde yer alan konturların bulunması için findContours fonksiyonunu kullanacağız. Konturların belirleneceği görüntü ise threshold gerçekleştirdiğimiz binary görüntü olacaktır.
Find Contours
📌 Oluşturulan bu konturların görselde çizilmesi için drawContours fonksiyonunu kullanacağız.
Draw Contours
🖇 Metotta yer alan cv2.CHAIN_APPROX_SIMPLE parametresi, tüm gereksiz noktaları kaldırır ve konturu sıkıştırarak hafızadan tasarruf sağlar.
📌 Artık kontur çıkarımı yapılmış görüntümüzü ekrana bastırabiliriz.
Imshow contours

Bu şekilde çıkarımımızı yapmış olduk. Bir başka yazımda başka projelerin dünyasına yönelmek dileğiyle… Sağlıcakla kalın ✨

REFERANSLAR

  1. Contour Tracing, https://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/contour_tracing_Abeer_George_Ghuneim/intro.html.
  2. Edge Contour Extraction, https://www.cse.unr.edu/~bebis/CS791E/Notes/EdgeContourExtraction.pdf, Pitas, section 5.5, Sonka et al., sections 5.2.4-5.2.5.
  3. https://www.thepythoncode.com/article/contour-detection-opencv-python adresinden alınmıştır.
  4. https://www.subpng.com/png-m7emk6/ adresinden alınmıştır.
  5. OpenCV, https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html.
  6. OpenCV, https://docs.opencv.org/master/d4/d73/tutorial_py_contours_begin.html.

Hareketli Ortalama Algoritmasıyla Al – Sat Tavsiyeleri

Finans alanında çalışan Veri Bilimciler, genellikle portföy optimizasyonu, al – sat işlemleri ve portföy getirisi gibi hesapları yapar. Bu işin borsa üzerinde önemi çok üst seviyededir. Çünkü verilen her karar, yapılacak olan kâr miktarını etkiler. Bundan ötürü adımları dikkatli seçerek, üzerinde çalışılan sisteme entegre edilmelidir. Borsa içerisinde dünya ile etkileşim halinde olan mekanizma mevcut ve bunun değişimlerine hızlı şekilde adapte olabilen firmalar hızlıca fark yaratıp sürdürülebilir bir hal almalıdır. Bu sayede kendi farkını ortaya koyarken pazarlama şekillerini değiştirip piyasa içerisinde aktif olabilirler. Marka olarak danışmanlık sunan ve değişikliklere adapte olma potansiyeli yüksek olan firmalar, kendi isimlerinden sık bir şekilde bahsettirebilirler. Robot danışmanların arka planında yoğun bir şekilde makine öğrenmesi ve derin öğrenme algoritmaları yatmaktadır. Robot danışman sunan her şirket, kendi bünyesinde sağlam bir altyapıya sahiptir. Kodlama kısmı biraz karmaşık olsa bile sonuç kısmına vardığımız an, başarının tamamını kendi gözlerimizle göreceğimiz. Buna istinaden çıktıyı alt resimde örnek olması adına koyuyorum.

 
 
Aslında üstte gördüğünüz resim, projenin son halini temsil ediyor. Ulaşmak isteyenler için sizlere kaynaklar kısmında kod bütününü bırakacağım ve kendi sistemlerinize kolay bir şekilde adapte edebileceksiniz. Not olarak şunu belirtmeliyim. Ben Türkiye borsası içerisinde yer alan Aselsan şirketini kullanarak bu kodlamayı yaptım. Ek olarak burada gördüğünüz herhangi bir işlem yatırım tavsiyesi değildir. Bunları belirttikten sonra alt tarafta gördüğünüz şekilde kütüphaneleri ekleyip veri setimizi okuyoruz. Ardından veri hakkında istatistiksel çıktıları almak için describe() fonksiyonunu kodluyoruz. Burada ilgilendiğimiz değişken, borsanın kapanışını temsil eden ‘close’ değişkeni üzerine olacak. Veri setinin tarihlerini ben 1 Ocak 2017 itibari ile alarak kendi analizimi gerçekleştirdim. Siz istediğiniz herhangi bir zaman üzerinden analizinizi yapabilirsiniz fakat tek olması gereken şey, benim kullandığım şekilde kullanabilmeniz için hisse için tarihsel veri seti, gerekli kütüphaneler içerisinde bulunmalıdır. Aksi takdirde kodunuz çalışmayacak ve hata üretecektir. Github linkini koyduğum kodun detaylarını inceleyebilirsiniz. Herhangi bir sorunuz olursa mail adresimden bana ulaşabilirsiniz.
 

 
Borsa içerisinde birçok farklı şekilde teknik analiz yöntemi vardır. Biz burada tamamen hareketli ortalama üzerinden devam edeceğiz. Hareketli ortalama yöntemi, borsa içinde kullanılan en yaygın yöntemlerden birisidir. Bu yöntem sayesinde borsa içinde al sat tarzı işlemleri anlık olarak takip eden birçok insan vardır. Bunlara ekleyeceğimiz teknik analiz metotları halen mevcuttur. Örnek vermek gerekirse RSI, Bolinger Bandı, MACD ve Fibonacci Düzeltme Seviyeleri sayılabilir. Alt tarafta gördüğünüz çizgiler, bizim için window() fonksiyonu ile at sat işlemlerini yaptıracak, hareketli ortalama yöntemidir. Görselde mavi çizgi asıl fiyatları temsil etmektedir. Bunun haricinde diğer çizgilerin kesişim noktaları bize al sat olarak dönüyor ve getirisini kendimiz ölçebiliyoruz. Buy_sell adını verdiğim fonksiyon sayesinde bize gerekli işlemleri yapıyor. Bu da bizim için hazırlığı yapıyor. Bizim için buranın çalışması hali, işlemlerinin tamamının bittiğini gösterir. Artık geriye sadece gerekli atamaların yapılıp fonksiyonun görsel olarak en başta gösterdiğim şekilde sunumu kalmıştır. Bunu yapabilmek için matplotlib kütüphanesi size yardımcı olacaktır.
 

 
Bu yazının devamını kendimi geliştirdiğim sürece gelecek ve bunu bir seri halinde yazmayı düşünüyorum. Borsa içerisinde kullanılan al sat işlemleri ve teknik analiz metotlarının bunlara etkilerini sizlere açıklayıp bu alanda kariyer düşünen herkese yardımcı olmayı hedefliyorum. Borsa içerisinde robot danışman üzerinden işlem yapan birçok start-up bulunmaktadır. Bununla birlikte sektör bazında büyük firmalar, bu alanda çalışacak ve gelişime açık birçok ufak şirkete yatırım yaparak, piyasa içerisinde yeni şeyleri keşfederken sürekliliğini sağlamaya devam ediyor. Bilindiği üzere borsa en ufak şeylerden bile etkilenip kâr – zarar durumlarını hızlıca değiştirebiliyor. Önceden olacaklara karşı bilgi sahibi olan büyük firmalar, bu tarz değişken ortamlarını tahmin ederek piyasa içerisinde sağlam adımlar atarak kâr marjını koruyor. Bunları oluştururken kullandığı analiz sistemlerinde birçok teknik analiz metodu bulunmaktadır. Böyle işlemlerin ölçeklenebilir olması da sistemin ne tür tepki vereceğini ve verdiği tepkinin olumlu anlamda olacağının garantisini verebiliyor. Hisse fiyatlarını değerlendirip teknik analiz metotlarını Python programlama dili üzerinde işlemeye devam edeceğim. Bunun için takipte kalarak geri bildirimde bulunabilirsiniz.
 

 

References:

https://globalaihub.com/robo-advisory-in-ai/
https://globalaihub.com/importance-of-data-quality-and-data-processing/
https://github.com/tanersekmen/stocks-buy-sell/blob/main/buy-sell.ipynb
https://www.tradingview.com/symbols/BIST-ASELS/technicals/
https://finance.yahoo.com/quote/ASELS.IS?p=ASELS.IS&.tsrc=fin-srch

Kredi Skorlama / Kredi Analizi

Her şirketin yatırım yapacağı ya da finans anlamında gelişim konusunda yardımcı olacağı belirli start-up’lar mevcuttur. Belirli analizler sonucu, yatırımcı firma yatırım yapacağı ve bünyesine alacağı firmayı belirler. Bu sayede gelişimi göz önüne alarak, getiri ile doğru orantılı olarak sağlayacağı katkı miktarı önceden hesaplanır. Bankalarda da müşterileri arasında bu tarz bir analiz yöntemi gelişmiştir. Kısaca banka ile müşteri arasında kredi başvurusunda kredi skorlama işlemleri yapılmaktadır. Bunun yapılma amacı temelde insanlar aslında alacağı krediyi öder mi ya da ödeyebilecek mi diye testler ile değerlendirilir. Buna makine öğrenmesi konusunda kredi skorlama denmektedir. Yapılan işlemler sonrası, krediye başvuran kişiye olumlu ya da olumsuz bir geri dönüş yapılmaktadır. Bu doğrultuda değerlendiren birçok metrik bulunmaktadır. Bunlara örnek olarak; insanların aldıkları maaş miktarı, kariyer geçmişi, daha öncesinde kredi alma durumları ve bunun gibi birçok daha detaylı olarak incelenecek olan özellikler bulunmaktadır. Bunların değerlendirilmesi sonucu, oluşacak olan 1 ve 0 değerleri bize olumlu ya da olumsuz anlam vermektedir.
 

 
Bankaların çoğu konuda olduğu gibi bu konuda da geniş çaplı araştırma yaparak, sahip oldukları verileri analiz ettikten sonra makine öğrenmesi işlemlerine sokmaktadır. Bu işlemler sonucunda, mantık sınaması adımları üzerinde duruma göre birkaç optimizasyon işlemleri yapıp son model hali hazırlanır. Ardından bu durumlar hızlanarak hemen her kredi başvurusu yapan insanlar için test edilir. Değer olarak ise 0 ve 1 değerleri atanır. İşlemler sonucunda 0 çıktısı bize, ‘bu kişiye kredi vermemizi önermez’ tam tersi yani 1 çıktısı geldiğinde ise ‘bu kişiye kredi verebilirsiniz’ diyerek bize müşteri segmentasyon işlemini de yapmış olur. Son adım da veri bilimi kadrosu sayesinde hallolduktan sonra, bizim için geriye kalan son adım ise bu bilgileri gerekli departmanlara ileterek, çıkan sonuçlara göre kişilerin başvurularını sonuçlandırarak, geri dönüş yapmak kalır. Analizlerin önemi, bir banka için kritik bir öneme sahiptir. Çünkü yapılan en ufak hatalar, yüklü miktarların kayıplarına sebep olabilmektedir. Bu sebeple yapılan her kredi skorlama işlemi, bankaya olumlu şekilde dönmelidir.
 
 

 
Kredi skorlama işlemleri, her banka için büyük önem taşımaktadır. Kasadan çıkan paranın miktarı ve kredi verilecek kişinin sorumluluğunu tamamen yerine getirmemesi, maddi anlamda büyük sorunlara yol açacaktır. Bundan ötürü arka tarafta çalışan veri bilimi ekibi, bu konuda uzman olmalı ve tedbirleri her koşula göre değerlendirmelidir. Buna ek olarak, insanların kişisel bilgilerini de iyice analiz edip başvurusuna mantıklı bir dönüş yapılmalıdır. Veri ön işleme adımlarını düzenleyip gerekli değişkenlerin üzerinden yapılan işlemler sonrası, süreç biraz daha verinin hazır hale getirilmesiyle alakalıdır. Kredi skorlama konusunda kritik derecede öneme sahip olan bir diğer mühim konu, veri ön işleme adımları ve sonrasında atılacak analiz adımlarıdır. Veri Bilimi ekibi, değişken mühendisliğini de kendileri yaparak değişken etkilerini ve onların korelasyonlarını aralarında oluşan bağları da doğru bir şekilde analiz etmelidir. Bu işlemler sonrasında ise, mantıklı bir sonucun ortaya çıkması kaçınılmaz olacaktır. Hata payını minimum yapmak, tamamen veriyi mükemmele yakın bir şekilde ayarlamak ve gerekli parametreleri değerlendirmektir.
 

 
Kredi skorlaması yapmak için gerekli işlemlerin en başında makine öğrenmesi algoritmasının oluşturulması ve model öncesi, değişkenlerin bir kere daha kontrol edilmesi gereklidir. Çünkü yapılan işlemlerin tamamen değişkenler ile bağlantısı vardır. Bundan dolayı, kategorik ya da numerik değişkenlerin modele etkisi farklılık göstermektedir. Ayrıca bu modeli kurarken de dikkatli şekilde ayarlanması gerekmektedir. Kullanacak olduğumuz parametrelerin özel olarak Python programlama dili kullanılıyorsa, içerisinde bulunan GridSearchCV() metodu sayesinde, parametreler denenebilir ve sonrasında en uygun parametreler modelin içerisine entegre edilir. Böylece kredi skorlama konusunda daha başarılı bir şekilde yol alabilir. Bu da verilen hizmetin seviyesini arttırır ve bu sayede insanların beklentilerini karşılayabilir, onlara uygun şekilde kişiye özel bir hizmet sağlanabilir. Memnuniyet seviyesi üst düzey olan kişiler, banka ile olan bağını geliştirir. Ek olarak, psikolojik olarak kendilerini daha güvende hissederler. İnsanların en temel özelliği ise bir yerlere ait ya da bağlı hissetmektir. Bunu sağlamak, sahip olunan müşteri potansiyelini arttırabilir. Kendi reklamınızın yapılmasını isterseniz, müşterileriniz ile aranızdaki bağı iyi derecede tutabilir ve onların size olan bağlılığını arttırmanız yeterli olacaktır. Buna direkt etki eden şeylerden birisi ise şüphesiz kredi skorlamasıdır.
 

 
References :
-https://globalaihub.com/examples-of-artificial-intelligence-in-life/
-https://globalaihub.com/machine-learning-makine-ogrenimi/
-https://www.cgap.org/sites/default/files/publications/2019_07_Technical_Guide_CreditScore.pdf
-https://www.moodysanalytics.com/solutions-overview/credit-origination/credit-assessment
-https://corporatefinanceinstitute.com/resources/knowledge/credit/credit-analysis-process/

Yapay İnsan Gözü Tasarlamak: EC-Eye

Göz, en karmaşık biyolojik yapıya sahip organlardan bir tanesi. Bu yapısı sayesinde çok geniş bir görüş açısı sağlamasının yanı sıra hem uzağı hem yakını detaylı bir şekilde işler ve ayrıca çevre, ışık koşullarına göre de inanılmaz bir uyum sağlar. İçinde bulundurduğu sinir ağlarına, katmanlarına, milyonlarca fotoreseptörlere ek olarak bir de küresel şekle sahip olması, onun kopyalanmasını oldukça zorlaştırıyor.
Tüm bu zorluklara rağmen Hong Kong Bilim ve Teknoloji Üniversitesi’nden bilim insanları bu alanda çalışmalarına devam etti ve ışığa duyarlı süperiletken perovskit maddesi ile biyonik bir göz geliştirdiler. “Elektrokimyasal Göz” (EC-Eye) adını verdikleri bu biyonik göz, bir insan gözünü kopyalamayı bırakın çok daha fazlasını yapmak üzere.
 

 
Şu an sahip olduğumuz kameralar aslında görme işlevinin bir kopyası gibi gelebilir. Fakat küçük boyutlar için çözünürlük ve görüş açısı tam olarak insan gözünün özelliklerine sahip değil, daha çok mikroçip gibi çözümler kullanılır. Fakat bunların küresel bir yüzeyde tasarlanması önceden de söylediğimiz gibi o kadar kolay olan bir işlem değil. Peki EC-Eye bunu nasıl yapıyor?
Elektrokimyasal göz, temel olarak 2 parçadan oluşuyor diyebiliriz. Ön tarafında insan irisinin görevini yapan bir mercek bulunmakta. Yine aynı tarafta elektrik yüklü bir sıvı ile doldurulmuş alüminyum bir kabuğa sahiptir. Bu sıvı aslında insan göz yapısında “Vitre” olarak bildiğimiz gözün içini dolduran jel şeklinde biyolojik bir sıvıdır.
 

 
EC-Eye’ın arka kısmında ise oluşturulan elektriksel aktiviteyi işlemek üzere bilgisayara gönderen teller bulunmaktadır. Teması gerçekleştirmek adına da silikon bir göz yuvasına sahiptir. Son olarak, ve en önemlisi, algılamayı gerçekleştiren hassas nanoteller. Bu nanoteller o kadar hassas bir yapıya sahiptir ki yanıt hızları, normal bir insan gözündeki fotoreseptörlerden daha hızlıdır. Nanoteller üzerinde oluşan elektriksel reaksiyonların bilgisayara iletilmesi ile de iletim gerçekleşmiş oluyor. Tabii bu şekilde anlatınca çok kolay bir işlem gibi gözükse de aslında teknolojinin sınırlarını zorlayan bir uygulama. Tüm bu işlemlerin insan gözünü arka planda bırakacak bir güçte ve özellikte çalışması ise daha da merak uyandırıcı. 
Nasıl çalıştığını görmek adına, EC-Eye ve bilgisayar arasında bir arayüz oluşturuldu ve bu arayüz sayesinde EC-Eye’a bazı harfler gösterildi. Çıkan algılama sonucunda daha yüksek çözünürlükte görüntü elde edildiği kanıtlandı. İleriki aşamalar için çok daha kompleks testlerle karşı karşıya gelecek ve geliştirilmesi için çalışmalara devam edilecek.
 

 
Bu biyonik gözün insan gözü yerine geçebilmesi için daha birçok testten geçmesi gerektiği çok açık özellikle her ne kadar küçük bir cihaz gibi görünse de nanotellerin bilgisayara işlenmesi için bağlanması aşaması şu an bir sorun yaratmakta. Söz konusu çok fazla nanotel olunca bunların yerleştirilmesi ve pratik şekilde kullanılması oldukça zor gözüküyor, yani bu biyonik gözlerin ticarileşmesi, herkes tarafından kullanılabilmesi, biraz daha uzun bir zaman alabilir. Ama şimdilik, gelecek için büyük bir umut veriyor. 
İnsan gözünün algılayamadığı şeyleri de yapabileceği bir noktaya gelirse eğer, çok fazla özelliğe sahip bir potansiyelinin olduğu söylenebilir. Bilim kurgu filmlerinde gördüğümüz ve “Bunlar sadece filmlerde olur zaten.” dediğimiz kayıt almak, çok uzağı görmek, gece görüşü, başka dalga boylarında frekansları görüntüleme artık o kadar da ulaşılmaz değil gibi duruyor. Bunlar nasıl telefon kameraları ile bile çok rahat bir şekilde yapılabiliyorsa işin içinde yapay zekanın da olduğu üst düzey teknolojik uygulamaların bunu kolaylıkla yapabileceğini tahmin etmek aslında o kadar da zor değil.
Yapay Zeka her alanda bir parçamız olmaya başladı bile.
 
Kaynakça:

Looking to the Future: Creating an Artificial Eye


https://www.nature.com/articles/s41586-020-2285-x.pdf?origin=ppub
https://tr.euronews.com/2020/05/21/insanlar-ve-robotlar-icin-gelistirilen-biyonik-goz-ilk-testleri-gecti-potansiyelde-s-n-r-y

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

Film "Her" Üzerinden İnsan-Makine Etkileşimine Bir Yaklaşım

7 yıl önce, Spike Jonze yönetmenliğinde, özünde klasik bir romantizm içermesine rağmen çok da klasik olmayan bir film yayınlandı: Her. “Her” izlerken, oradaki evrenin teknoloji ve kurulan düzen bakımından günümüzden uzak olduğunu, hatta ütopya sayılabileceğini görüyoruz. Yine de o kadar uzak olduğunu söyleyebilir miyiz? Gelecekte bizlerin makinelerle etkileşimi nasıl şekillenecek?

Makine Öğrenimi İçin Veri Etiketleme Araçları

Verilerin etiketlenmesi işlemi, gözetimli herhangi bir makine öğrenimi projelerinde çok önemli bir adımdır. Etiketleme, bir görüntüdeki alanları tanımlama ve bu bölgeler için hangi nesneye ait ise o nesnenin açıklamalarının oluşturulduğu işlemidir. Verilerin etiketlenmesi ile hem verilerimizi ML projelerine hazırlamış oluyoruz hem de onları daha okunabilir kılıyoruz. Çalıştığım projelerin çoğunda veri setindeki kümeleri oluştururken yeri geldi kendim etiketlemeler yaptım yeri geldi etiketlenmiş görüntüler ile eğitim işlemimi gerçekleştirdim. Bu yazıda sizler ile bu alanda tecrübelerimi paylaşarak en çok karşılaştığım veri etiketleme araçlarını tanıtacağım.
Labeling Image

📍COLABELER

Colabeler, konumlandırma ve sınıflandırma problemlerinde etiketleme yapmayı sağlayan programdır. Bilgisayarlı görü, doğal dil işleme, yapay zekâ ve ses tanıma alanlarında sıkça kullanılan bir etiketleme programıdır [2]. Aşağıda gördüğünüz görsel örnek bir görüntü etiketlenmesini göstermektedir. Burada gördüğünüz sınıflar genellikle araba (car) sınıfına denk gelmiştir. Sol tarafta gördüğünüz araç bölümünde nesneleri eğri, poligon veya dikdörtgen olarak sınıflandırmanız mümkündür. Bu seçim etiketlemek istediğiniz verinin sınırlarına göre değişebilmektedir.
 

Labeling Colabeler
Ardından ‘Label Info’ yazan bölümde kendiniz etiketlemek istediğiniz nesnelerin ismini yazıyorsunuz. Tüm etiketlemeleri bitirdikten sonra mavi tik olan butondan onaylayarak kaydediyorsunuz. Ve böylelikle bir sonraki görüntüye Next ile geçebiliyorsunuz. Burada dikkat etmemiz gereken nokta, kaydettiğimiz her görüntü bu mavi butonun soluna sıralanmaktadır. Bu şekilde kaydettiğiniz görüntüleri de kontrol etmeniz mümkündür. Colabeler’ın en çok sevdiğim yanlarından bir tanesi içerisinde yapay zeka algoritmalarını da kullanılabilir olmasıdır. 
📌 Daha önce çalıştığım bir projede Colabeler üzerinden etiketleme gerçekleştirdim ve inanılmaz kolay bir arayüze sahip bir yazılımdır.
📽 Colabeler’ ın yetkili web sitelerinde yer alan videoda etiketlemelerin nasıl yapılacağı açıklanmıştır.
Localization of Bone Age
Daha önce çalıştığım projenin örnek bir görüntüsünü yukarıda verdim. Bu proje, makine öğrenimi bağlamında yerelleştirme (localization) projesi olduğu için bu özelliklere bağlı kalınarak etiketleme yapılmıştır. Yerelleştirme, bir özelliğin bulunduğu görüntünün alt bölgesini izole etmek anlamına gelir. Örneğin, bu proje için kemik bölgelerinin tanımlanmaya çalışılması yalnızca görüntüdeki kemik bölgelerinin etrafında dikdörtgenler oluşturmak anlamına gelir [3]. Bu şekilde kemik görüntülerinde çıkarılması muhtemel sınıfları ROI bölgesi olarak etiketlemiş oldum. Ardından bu etiketleri Colabeler’ın sağladığı Export XML/JSON olarak elde ettim. Bu kısım birçok makine öğrenimi çalışanlarının hoşuna gidecektir, benim çok işime yaramıştı!

♻️ Etiketlerin Dışarıya Aktarılması

Exporting JSON Output
Bu aşamada ben JSON veriler kullanacağım için JSON çıktısı olarak kayıt etmiştim, siz verilerinizi farklı formatlarda kayıt edebilirsiniz. Aşağıda verdiğim görselde ise oluşturduğum sınıfların JSON çıktısındaki yerlerini görmektesiniz. Bu şekilde verileriniz etiketli bir şekilde hazırlanmış oldu.
JSON Format

📍ImageJ

ImageJ, Ulusal Sağlık Enstitüleri ve Optik Hesaplamalı Enstrümantasyon Laboratuvarı’nda (LOCI, Wisconsin Üniversitesi) geliştirilen Java tabanlı bir görüntü işleme programıdır. Imagej’in eklenti mimarisi ve yerleşik geliştirme ortamı, görüntü işlemeyi öğretmek için popüler bir platform haline getirmiştir [3].

Yukarıda yer verdiğim şekilde Wikipedia içerisinde ImageJ’den alınmış bir ekran görüntüsünü görmektesiniz. Görüldüğü gibi bu yazılım aşırı kompleks bir tarafı mevcut değildir. Birçok alanda meslek fark etmeksizin kullanılmakta olan bir araçtır.
📝 ImageJ’ in yetkili web sitelerinde yer alan kullanım kılavuzu olarak verilen dokümantasyonda etiketlemelerin nasıl yapılacağı ve yazılım aracının nasıl kullanılacağı açıklanmıştır.
📌 Makine öğrenimi projesinde etiketlemek zorunda kaldığım görüntüler için Fiji-ImageJ yazılım araçlarına da uğramışlığım vardır. Arayüzü diğer çalıştığım etiketleme programlarına göre çok daha eski kalmış durumda diye düşünüyorum. Yazılımsal açıdan yapmak istediğiniz işlemleri gerçekleştirebilirsiniz elbette, ancak bana göre bir yazılımın kullanıcıyı tasarımsal açıdan da doyurması gerekmektedir.
Image Toolbox Matlab
Yukarıda verdiğim görsel kişisel bilgisayarımda çalıştığım proje sırasında aldığım bir ekran görüntüsü idi. Matlab platformunda çalışırken verileri aktif edebilmek için öncellikle güncelleme yapmak gerekiyordu. Bu sebeple güncelleme yaptıktan sonra görüntüleri tanımlamaya devam ettim. ImageJ kullanıcıları için Matlab eklentisinin kurulması sırasında yüklenecek paket aşağıda verilmektedir.
ImageJ Matlab

📍Matlab Image Labeler

Image Labeler uygulaması, bir video veya görüntü dizisinde dikdörtgen ilgi alanı (ROI) etiketlerini, polyline ROI etiketlerini, piksel ROI etiketlerini ve sahne etiketlerini işaretlemenin kolay bir yolunu sunar. Örnek olması için bu uygulamayı kullanarak size göstererek başlamış olur [4]:

  • Bir resim koleksiyonundan bir resim çerçevesini el ile etiketleme
  • Bir Otomasyon algoritması kullanarak görüntü çerçeveleri arasında otomatik olarak etiketleme
  • Etiketli lokasyon gerçeği verilerini dışa aktarma

Image Toolbox Matlab
Yukarıda gördüğünüz görselde Matlab Image Labeler yazılımını kullanarak segmentasyon işlemi yapabiliyoruz. Daha doğrusu verileri ROI bölgelerine ayırarak etiketleme yapmamız mümkündür. Ayrıca, daha önce var olan algoritmaları kullanmanız mümkün olduğu gibi kendinize ait algoritmanızı da veriler üzerinde test edip çalıştırabiliyorsunuz.
Selection ROI
Matlab’ın yetkili dokümantasyonundan aldığım bu görselde sol menüde seçtiğiniz sınırlayıcı bölgelerin etiket isimleri girilmektedir. Nesnenin sınıfına göre bir etiket rengi atanmaktadır. Bu şekilde etiketlerimizi oluşturmamız da oldukça mümkün. Bir sonraki yazıda ise diğer etiketleme araçlarından bahsedeceğim. Görüşmek dileğiyle ✨

REFERANSLAR
  1. https://medium.com/@abelling/comparison-of-different-labelling-tools-for-computer-vision-f3afd678da76.
  2. https://www.colabeler.com.
  3. From Wikipedia, The Free Encyclopedia, ImageJ, https://en.wikipedia.org/wiki/ImageJ.
  4. MathWorks, Get Started with the Image Labeler, https://www.mathworks.com/help/vision/ug/get-started-with-the-image-labeler.html.
  5. https://chatbotslife.com/how-to-organize-data-labeling-for-machine-learning-approaches-and-tools-5ede48aeb8e8.
  6. https://blog.cloudera.com/learning-with-limited-labeled-data/.

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.

Mobile Application Development

FaCiPa Serisi 3

FaCiPa Serisi 2 adlı yazımdan geriye kalan çok güzel dönütler elde ettiğim için yazılarımın son serisi olan mobil uygulama tarafını kaleme almak istedim. Bir sene boyunca geliştirdiğim projeyi bugün sizler ile konuşabiliyor olmak inanılmaz bir his! Bu yazıda sizler ile birlikte FaCiPa’ nın mobil arayüzü hakkında konuşacağız.
Projede Python programlama dili ve API taraflı kodlamalar yer aldığı için platform olarak Kiwi veya Ionic gibi farklı seçenekler mevcuttu. Ionic için yazdığım diğer yazılarıma aşağıdaki linklerden ulaşabilirsiniz. Bu bağlantılarda Ionic Nedir?, Ionic Proje Çalışma Yapısı ve Semantic UI ile kullanımı hakkında kısaca bilgiler edinebilirsiniz. Bunun yanı sıra TypeScript kod yapısı ile yazıldığı için bunun ile ilgili yazdığım yazımı da incelemeniz mümkün. Aşağıda Ionic Framework hakkında en sık karşılaştığımız açıklamalara yer vermiş bulunmaktayım:

👉 Açık kaynak kodlu olan bu kütüphane, Cordova üzerine inşa edilmiştir.

👉 Web geliştiricisi olanların bile mobil uygulama geliştirmesine olanak sağlayan bir kütüphanedir.

Mobile Application Design
İlk olarak işe FaCiPa için mobil platformu olan Ionic Framework üzerinde yeni bir proje oluşturmakla başlıyoruz.
Ionic Start
Daha sonra ionic generate komutu ile sayfa (page) oluşturuyoruz.
Generate Page
Ionic Page
Uygulamada başlangıç için giriş sayfası, kayıt ol sayfası ve analiz sayfası olması sebebiyke toplamda ana sayfa ile birlikte 4 adet sayfa oluşturulması gerekmektedir.
All files

FACIPA MOBİL ARAYÜZÜ

FaCiPa’ nın mobil arayüzünde kullanılacak olan framework Ionic olarak seçilmiştir. Mobil cihazların bilgisayarlardan daha fazla kullanılması, mobil uygulamaların artması, mobil cihazların çeşitliliği ve farklı işletim sistemlerinin bulunması yazılım geliştiricileri farklı mobil çözümler bulmaya yönlendirdi. Native uygulama geliştirmenin yanında zamanla her platformda da çalıştırılabilen bir uygulama yapısı kurmak önemli bir ihtiyaç haline geldi ve HTML5 ile JavaScript gibi dillerin desteğiyle geliştirilebilen hibrit uygulamalar ortaya çıktı [1].
Ionic Framework, bilhassa Angular.js veya Angular 2 deneyimi olan yazılımcıların ilk tercihi genellikle Ionic olmaktadır. Açık kaynak olan Ionic, binlerce takipçisi ve destekçisi ile binlerce mobil uygulamaya ev sahipliği yapmaktadır. Kendi ifadeleriyle “first-class” bir dokümantasyona sahip olan Ionic Framework kullanışlı ve öğrenmesi kolay kütüphanedir.

🏗Ionic Framework, Cordova üzerine inşa edilmiştir. Mobil cihazın donanımına ve sistem kaynaklarına erişim gibi işlemler Cordova sayesinde yapılmaktadır. Android, IOS veya Windows Phone gibi mobil işletim sistemlerinde çalıştırabilirsiniz. Hatta bu uygulamayı rahat şekilde mobil uyumlu bir web sitesi olarak da yayınlayabilirsiniz. Ionic ile uygulama geliştirebilmek için temel olarak HTMLJavaScript ve Angular.js bilmek yeterli olacaktır. Projede platform olarak Visual Studio Cide platformu kullanılmıştır. Uygulamanın tasarımları src\pages\home\home.html gibi .html uzantılı dosyalarda HTML5 ile ortaya konulmuştur. Gerekli CSS tasarımları ise  src\pages\home\home.scss gibi .scss uzantılı dosyalarda yapıldı [1].

📷Projede kullanılacak olan fotoğraflar ilk adımda kullanıcıdan 3 adet alınacak olarak belirlenmiş olup daha sonra kullanıcıyı yormamak ve makinenin işlem yükünü azaltmak adına 1 adet fotoğrafa indirgenmiştir. Kullanıcı uygulamayı mobil mağazalardan temin ederek anlık olarak fotoğraf çekmekte ve bu fotoğrafı sunucuya işlenmek üzere göndermektedir.
🛡Uygulamanın Backend bölümü ise src\pages\home\home.ts gibi .ts uzantılı dosyalarda TypeScript dilinde yapılmıştır.
Upload Camera

IONIC UYARI(ION-ALERT) EKLENTİSİ

Uygulamanın içeriğinin üstünde bir uyarı belirir ve uygulama ile etkileşime devam edebilmeleri için kullanıcı tarafından manuel olarak kaldırılması gerekir.  Uygulamada kullanıcının doğru şekilde fotoğrafı çekmesi için ion-alert ile uyarı veriliyor.
🔎 Title: Uyarı kutucuğunun başlığı
🔎 Subtitle: Uyarı metni
🔎 Butons: Uyarının kalkması için kullanılan buton eğer Tamam butonuna tıklanırsa photoOne() metodu çalıştırılıyor ve fotoğraf çekme işlemi yaptırılıyor.
Ionic Alert

IONIC KAMERA EKLENTİSİ

Ionic kamera eklentisi mobil cihazlardan fotoğraf ya da video çekmek için gerekli bir eklentidir. Cordova eklentisi gerektirir: cordova-plugin-camera
🔎 Quality: Kalite
🔎 destinationType: Hedef Türü
🔎 encodingType: Kodlama Türü
🔎 media Type:Medya Tipi (Picture) olması fotoğraf olduğunu belirtir.
Install Camera
Install Cam

PROJENİN İLK TASLAK ÇİZİMLERİ

Wireframe Templates
İçerik olarak uygulamanızın sayfalarını tamamen özgürce tasarlayabilirsiniz. Yukarıda gördüğünüz wireframe çizimi projeye ilk başlandığında tasarlanan bir çizimdi. Daha sonra projenin tasarımlarını oluşturduk.
Facipa
Yukarıda yer verdiğim görseller projenin analiz sayfası ve analiz sonucundaki dönütlerdir. Böylelikle FaCiPa’nın sonuna gelmiş olduk. Sabırla takip ettiğiniz için teşekkür ederim. Sağlıcakla kalın ✨
 

REFERANSLAR

  1. https://devnot.com/2016/hibrit-uygulama-catisi-ionic-i-taniyalim/
  2. R. L. Delinger, J. M. VanSwearingen, J. F. Cohn, K. L. Schmidt, “Puckering and Blowing Facial Expressions in People With Facial Movement Disorders,” J. Phys Ther, vol. 88, pp. 909-915, August 2008.
  3. İnternet Ve Mobil Teknolojilerin Yaygınlaşması: Fırsatlar Ve Sınırlılıklar, Hasan GÜLER, Yunis ŞAHİNKAYASI, Hamide ŞAHİNKAYASI. Sosyal Bilimler Dergisi Cilt 7 Sayı 14 Aralık 2017 Makale Gön. ve Onay Tar.: 03.10.2017-27.10.2017

 

ALGORİTMİK IRKÇI ''TAY''

ALGORİTMİK IRKÇI ”TAY”

Irkçılık insanlığın varoluşundan beri süregelen ve kanayan bir yara. Üstünlük konusunda insanların tartışmaları yetmezmiş gibi şimdi sıra yapay zekalara geldi. Evet ırkçılık yapan bir yapay zekadan bahsediyoruz. Aslında bir bakıma ırkçılığı öğreten de bizleriz. ‘’Tay’’ ilk olarak dünyayı eğlenceli ve naif bir şekilde selamlamıştı. Sonrasında ise tam bir silaha dönüştü.
 

 
‘’Tay’’ isimli yapay zekadan bahsetmeden önce algoritmanın tanımını bilmekte fayda vardır.
Algoritma Nedir ?
Bir sorunu çözmek veya belirlenmiş bir amaca ulaşmak için tasarlanan yola, takip edilen işlem basamaklarına algoritma denir. Algoritmalar açıkça belirtilmiş bir başlangıcı ve  sonu olan işlemler kümesidir. Amaca ulaşmak için işlenecek çözüm yolları ve sıralamaları belirlenir ve algoritma bu sırayı takip ederek en mantıklı çözüme ulaşır. İlk algoritma, El-Harezmi’nin ‘Hisab-el Cebir ve El Mukabala’ kitabında sunulmuştur ve algoritma kelimesi de El-Harezmi’nin isminden gelmiştir. Algoritma terimi genellikle matematikte ve bilgisayar bilimlerinde karşımıza çıkmaktadır.
Yapay zekalar işte bu algoritmalara sayesinden çalışır. Tasarladığınız yola göre en optimum olan seviyeyi bulur ve size sunar. Tabi bu yolu siz öğrettiğiniz içinde nasıl yollar sunarsanız size ona göre cevaplar sunar. ‘’Tay’’ isimli yapay zekaya da aynısı olmuştu.
‘’Tay’’ Nedir ?
Tay, Microsoft tarafından 23 Mart’ta hizmete sunulan bir chatbottu. Yapay zekanın en büyük özelliği internette gördükleri ve okudukları şeyleri öğrenebilmesiydi. Ancak görünüşe göre Tay isimli yapay zeka, hizmete sunulduktan birkaç gün sonra yoldan çıktı ve ırkçı oldu.
Şirket, Tay adını verdiği chatbot için Twitter’de bir hesap

– Soykırımı destekliyor musun ? – Aslında destekliyorum.


açmış ve insanları onunla sohbet etmeye davet etmişti. Amaçları yapay zekayı geliştirmek ve insanlarla güzel sohbetler etmesini sağlamaktı. Fakat olay hiç umdukları gibi gitmedi ve Tay tam bir yapay ırkçı haline geldi. Hatta Hitler’i ve soykırımı destekleyen şiddetli bir taraftar bile olmuştu.  
Bu projede 18-24 yaş grubunu hedefleyen Microsoft, Tay’in amacının “gündelik, esprili sohbetler yapmak” olduğu belirtmiş ve şöyle demişti:
“Tay ile ne kadar çok sohbet ederseniz o kadar akıllı olacak ve sizinle, size özel bir iletişim kuracak.”
Ancak devreye girmesinin üzerinden 24 saat geçmeden Tay’a, Nazi sempatizanı, ırkçı ve soykırım destekçisi gibi mesajlar yazmak ve küfretmek “öğretildi.”
 

”Sakin olun ben iyi biriyim. Sadece herkesten nefret ediyorum.”


 
Sonradan anlaşıldığına göre aslında ‘’Tay’’ iyi biriydi. Fakat bir sorunumuz daha vardı. İnsanlardan nefret ediyordu. İnsanlardan nefret etmesinin en büyük sebeplerinden biri de ona öğrettiğimiz kendi zayıflıklarımız olsa gerek.
Tabi bunun üzerine Microsoft daha fazla dayanamadı ve fazla bir zaman geçmeden ‘’Tay’’ isimli yapay zekayı durdurdu. Şirket yetkilileri bunu açıkça doğrulamadı ancak “bazı düzenlemeler yaptıklarını” bildirmekle yetindi.
Bazı kullanıcılar ise Microsoft’un müdahalesini eleştirerek #justicefortay (#tayiçinadalet) kampanyası başlattı, yazılım devinden yapay zekanın “doğruyu ve yanlışı kendi kendine öğrenmesine izin vermesini” talep ettiler.
‘’Tay’’ kodlama karmaşasının içine gömülüp giderken belki daha iyi ve sevecen duygularla bize geri dönmek için kendi sonunu hazırladı. Bir gün daha sevecen bir ‘’Tay’’ ile görüşmek ümidiyle…
 
Yazıma Isaac Asimov’un şu sözleriyle son vermek istiyorum:
‘’Düşüncem iki yönlü: İlk olarak robotları kendi yaratıcılarını yok edecek canavarlar olarak görmüyorum. Çünkü robotları yapan insanların, kendi güvenliklerini sağlayacak vasıtaları da yine robotların içine koyabilecek kadar bilgi ve yetenek sahibi olacaklarını düşünüyorum. İkinci olarak robotların ya da genel anlamda makinelerin, bizlerin yerine geçebilecek kadar zekâya sahip oldukları anda bunu yapmaları gerektiği fikrindeyim. -Isaac Asimov
 
 
 
REFERANSLAR:

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.

KORONAVİRÜSE KARŞI YAPAY ZEKA

Zorlu koronavirüs günlerinde hepimiz virüsle mücadele ediyoruz. Kimisi umudunu yitirmiş halde, kimimiz ise virüsün son bulacağı zamanı bekliyoruz umutla. Tabi bu zamanlarda insanın aklından geçiyor bazen “Hani müthiş teknolojik ilerlemeler kaydediyorduk? Hatta öyle bir noktaya gelmiştik ki yapay zekâların insanlığı yok edebileceği ihtimali üzerine kafa yoruyorduk. Hani nerede bu yapay zeka?” diye. Bu yazımda sizlere yapay zekanın koronavirüsle mücadelede kullanım alanlarından bahsedeceğim.
 
 

  • Yapay zeka algoritmalarının çoğu tahmine yönelik ve yapay zeka destekli epidemiyolojinin en önemli bölümü, gelecekteki salgınların ne zaman ve nerede meydana geleceğini doğru bir şekilde tahmin edebilen sistemler yaratabilmek olacak. Aslında bu araştırma bir süredir devam ediyor hatta mevcut salgınla ilgili çapıcı bir uyarı yapay zeka tarafından oluşturulmuştu bile… Buna göre Toronto merkezli BlueDot’un aracı, 31 Aralık 2019’da Çin’in Wuhan kentinde olası bir salgın hakkında bir uyarı yayınladığındagünlük 100 binin üzerinde hükümet ve medya veri kaynağını tarıyordu. Yapay zeka araştırmalarından önümüzdeki 18 ay içinde viral salgınları tespit etme ve bu tehlikeye tepki verme yeteneğini daha da geliştirmesi bekleniyor.

 

  • Covid-19’a yol açan virüsün teşhisi, enfekte kişilere yönelik tedavi çalışmaları ve aşı araştırmalarında da çeşitli yapay zekâ uygulamaları sıklıkla kullanılıyor. Bu salgında, yapay zekâ tarafından koronavirüsün genom dizilimi ve protein yapısına dair üretilen tahminler, bilim adamlarını aylarca deney yapmaktan kurtardı denilebilir.

 

  • Yapay zekâ koronavirüsün yol açtığı hastalığın teşhisinde de doğrudan kullanılıyor. Çin akciğer kanserlerini teşhis etmekte kullanılan yapay zekâ uygulamalarını revize ederek binlerce koronavirüs şüphesi taşıyan vakanın tespiti için kullandı. Bilgisayarlı tomografi görüntülerini kullanarak akciğer problemlerini ve koronavirüse bağlı zatürreyi tespit edebilen bu yazılımlarla 30 saniyede 400’e yakın vaka taraması yapılarak sağlık hizmetlerinin hızlandırılması sağlandı.

 

  • Pandemi döneminde sosyal mesafekurallarına uyulup uyulmadığını izlemek için pek çok ülkede drone’lar kullanıldı. Bir kalabalığın içindeki insanlarda “yüksek ateş” gibi COVID-19 semptomlarını tespit etme yeteneğine sahip drone’lar gibi daha gelişmiş uygulamalar ufukta görünüyor. Bu sistemler, drone’larda kameralar tarafından yakalanan verileri analiz etmek ve yetkilileri virüsün yayılmasıyla ilgili istatistikler ile olasılıklar hakkında bilgilendirmek için kullanılacaklar.

 

  • Koronavirüse karşı insanları bilgilendirmek amaçlı chatbotlar geliştiriliyor. Bu chatbotlardan biri olan yerli ve milli koronabot NLP teknolojisi sayesinde vatandaşlarla mesajlaşarak kişilerin bilgi kirliliğine maruz kalmadan bilgi sahibi olmasını sağlıyor.

 

  • AI, COVID-19 hastalığının zaman içinde ve uzayda nasıl yayılacağını izlemek ve tahmin etmek için kullanılabilir. Örneğin, önceki bir pandemiyi takiben, 2015 Zika virüsünün yayılımını tahmin etmek için dinamik bir sinir ağı geliştirdi. Bununla birlikte, bu gibi modellerin COVID19 salgını verileri kullanılarak yeniden eğitilmesi gerekecektir. Bu şimdi gerçekleşiyor gibi görünüyor. Carnegie Mellon Üniversitesi’nde, mevsimsel nezleyi tahmin etmek için eğitilmiş algoritmalar şimdi yeniden eğitilmektedir.

 

  • AI, potansiyel olarak enfekte olan insanlar için kamusal alanları taramak için termal görüntüleme kullanarak ve sosyal uzaklaşma ve kilitlenme önlemlerini uygulayarak pandemiyi yönetmek için kullanılabilir. Örneğin, Chun (2020) tarafından South China Morning Post’ta açıklandığı gibi, “Çin’deki havaalanlarında ve tren istasyonlarında, kızılötesi kameralar kalabalığı yüksek sıcaklıklara karşı taramak için kullanılır. Bazen bireyi yüksek bir sıcaklıkla ve cerrahi maske takıp takmadığını tespit edebilen bir yüz tanıma sistemi ile kullanılırlar.

 
 
REFERANSLAR
https://fikirturu.com/teknoloji/yapay-zeka-covid-19-mucadelesinin-neresinde/
https://blog.ariteknokent.com.tr/tag/yapay-zeka/
https://www.cnnturk.com/turkiye/koronavirus-hakkindaki-her-seyi-yapay-zekaya-sorduk
https://www.cybermagonline.com/covid-19039a-karsi-yapay-zeka

Veri Kalitesinin Önemi ve Veri İşleme

Tüm dünyanın üzerinde konuştuğu ve artık yeni düzen içerisinde en önemli şey olarak görülen konu veri’dir. Veri, birçok farklı yöntemle işlenir, üzerinden bilgi çıkarılması için hazırlanır. Başlı başına dünyanın yönünü değiştiren farklı bir boyut kazandıran yapıdır. Günümüzde şirketler aslında sahip olduğu bilgi kadar vardır. Hazır olarak elde edilen veriler, kendi topladığınız detaylarını bildiğiniz verilere oranla daha kalitesiz olabilir. Bundan ötürü, veri işleme konusunda epeyce zaman harcayabilir, proje süresini uzatabilirsiniz. Bu da sizin için büyük bir dezavantaj olabilir. Hazır olarak gelen verilerin kalitesini ölçmek ve onları belirli bir düzene sokmak tamamen sizin elinize kalabilir. Eğer veri kalitesi gerçekten çok düşük seviyelerde ise, onun üzerinde veri işleme basamaklarını dikkatli şekilde uygulayarak sisteme son hazırlıklar yapıldıktan sonra entegre edilebilir.
 
Şu an başlangıç seviyesinde olan yazılım geliştiricilerinin yaptığı en büyük hata, tertemiz olarak hazırlanan verilerin üzerinde işlem yapmaktır. Seviye kat etmek için kendiniz veri seti oluşturup onun analizini yapabilirsiniz. Bu size özgüven verirken karşılaştığınız zorluklar karşısında bulduğunuz çözümler, size büyük ölçüde yol aldıracak olan şeydir ki böylece birçok büyük firmanın önemsediği ‘problem çözebilme’ yeteneğine erişmiş olacaksınız. Kendi topladığınız veri ile uğraşmak, sizi gerçek hayatta karşılaşabileceğiniz sorunlar karşısında hazır hale getirecektir. Veri Bilimi alanında kariyer yapmak isteyen kişiler, kendi verilerini toplayıp bu verinin her ayarını yaparak, gerçek anlamda bir soruna çözüm bulmalı ki en sonunda ürün aşamasına kadar gidebilsin. Geliştirdiği proje evreleri sayesinde bilgi üzerinden işlem yapabilme, ürün geliştirme, gerçek hayat sorununa çözüm bulma gibi konularda önem düzeyi yüksek seviyede tecrübe sahibi olarak kariyerine rahatlıkla devam edebilir.
 

 
Veri Bilimci için en mühim konu veri’dir. Veri olmazsa çözüm bulunamaz, veriye sahip olan kişiler yeni oluşacak olan çağ içerisinde gücü elinde tutacaktır. Gelecek dünya düzeni içerisinde tam anlamıyla dünyaya yön verecek olan şeye veri diyebiliriz. Hayatın her evresinde canlı olarak akan veriler mevcut ve bunları işleyip mantıklı çıkarımlarda bulunmak, yaşadığımız yüzyıl için son derece mühim bir yetenektir. Veriden alınan bilgileri iyi bir şekilde anlayıp oluşacak sorunlara çözüm üretmek, geleceğin iş bulma konusunda kolaylık sağlayacağı bir diğer durumdur. Yapay zeka konusuna açılan en mühim konu, bir proje ve o projeye kaliteli verilerin var oluşudur. Veri kalitesi, oluşacak olan projenin ne kadar uzun süreli olduğunu ve gideceği maksimum noktayı belirlemede söz hakkına tam anlamıyla sahiptir. Veri kalitesi kadar mühim bir konu yoktur çünkü veri kalitesizse oluşacak birçok sorun var demektir.
 
Veri kalitesi kadar önem düzeyi olan bir diğer konu, doğru şekilde veri işleme adımlarını gerçekleştirmektir. Veri bilimi, makine öğrenmesi, yapay öğrenme, derin öğrenme ya da yapay zeka, adını ne koyarsanız koyun bu işlerin bir ürün haline gelmesi için gereken tek şey veri’dir. Ek olarak, bu verinin kaliteli ve veri işleme basamaklarını çok iyi seviyede hazırlanmış olması, bu isimlendirilmelerin yapıldığı projelerin süreçlerine direkt etki etmektedir. Veri işleme adımları, ürün olarak sunulacak olan konuların geçilmesi en kritik durumdur. Bu gibi hayati noktaları atlattıktan sonra, işin ürün haline gelme kısımlarını oluşturarak üzerinde matematiksel, mühendislik bilgisi ya da istatistiksel bilgileri kullanarak hızlı bir şekilde yol alabilirsiniz. Bu durum, projenize ivme kazandırarak, sizi motive eder. Böylece aldığınız motive ve sahip olduğunuz itekleme gücü ile hareket ederek, farklı bir boyuta geçebilirsiniz.
 

 
Dünya şartları, yaşadığımız yüzyıl boyunca sürekli değişim halinde olmaya devam edecektir. Bu değişime öncü olarak belirlenen şey verinin ta kendisidir. Yeni petrol olarak adlandırılan veri, yeni yüzyıl için tam anlamıyla petrol niteliği taşımaktadır. Bunları işlemek, mantıklı sonuçlar elde etmek herkesin en temel amacı olmaktadır. Bu alanda çalışacak kişilerin sayısal bilgileri kuvvetli olmalı ve veriyi işleme konusunda tecrübeli olmalıdır. Veriyi önüne aldığı ilk andan itibaren, sorun çözme zekasını aktif kullanarak çalıştığı birimlere fayda sağlamalıdır. Veri işleme; makine öğrenmesi ve derin öğrenme konularında başarı skorlarını değiştirme gücüne sahip bir tekniktir. Bu teknik, eğer doğru kullanılırsa, erişebilir maksimum skor seviyeleri kolayca yakalanabilir.
 
Akıllı sistemlerin gelişmesi ve hayatımızın tam anlamıyla içine girmesine katkı sağlayan şey, kaliteli veri sayesinde oluşmuştur. Çalışılacak olan proje için kaliteli işler çıkartmak istiyorsanız, öncelikle elinizdeki veriyi kaliteli ve sağlam temellere dayanarak toplamalısınız. Bu durum sağlanmazsa, çok iyi bir veri işleme evresi gerçekleştirip proje öncesi son rötuş yapılarak, projenizi hazır halde tutabilirsiniz. Böylece, sizlere hem zaman tasarrufu sağlar hem de işin başına geçerken uğraşacak olduğunuz verinin kalitesi size güven vererek, proje adımları boyunca sorunları veri üzerinden minimal şekilde çözmeniz gerekecektir. Veri kalitesi, projelerin hayat kaynağıdır. İyi bir veri ile çalışma fırsatı bulmuş kişiler, tam olarak neyi kast ettiğimi çok iyi biliyorlar. Unutmayın iyi bir veri, iyi bir proje, iyi bir çalışma düzeni ve iyi sonuçlar demektir.

Umarım beğenmişsinizdir. Beğendiyseniz yorumlarda belirterek, bana geri dönüş verebilirsiniz.
References :
-https://www.wired.com/insights/2014/07/data-new-oil-digital-economy/#:~:text=Like%20oil%2C%20for%20those%20who,the%20government%20to%20local%20companies.
-https://globalaihub.com/basic-statistics-information-series/
-https://globalaihub.com/python-ile-veri-on-isleme-data-preprocessing/
-https://searchdatamanagement.techtarget.com/definition/data-quality.

Relationship Between Human Brain and CNN

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

Where is visual cortex located in humans brain?

 

                                                                                     Figure 1: Functional areas for the human brain

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

Figure 2: Different areas of visual cortex

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

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

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

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

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

                  Figure 3: CovNet Diagram

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

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

 
 

Bilim İnsanları, Robotların Ağrıyı Algılaması ve Kendi Kendine Onarmasına Yardımcı Olmak İçin “Mini Beyinler” Geliştiriyor

Nanyang Teknoloji Üniversitesi’nde (Singapur) çalışan bilim insaları, beyinden ilham alan bir yaklaşım kullanarak, robotların ağrıyı tanıması ve hasar gördüğünde kendi kendine kendini onarması için yapay zekaya (AI) sahip olmanın bir yolunu bulmanın üzerine çalışıyorlar. NTU tarafından üretilen robotlar yakın zamanda hayatımızda yerini alacak.

Sistemde, fiziksel bir kuvvetin uyguladığı anlamak, basınçtan kaynaklanan ‘ağrıyı’ işlemek ve yanıtlamak için yapay zeka destekli sensör kitleri bulunuyor. Robotun, insan müdahalesine gereksinimi olmadan, küçük bir ‘yaralandığında’ kendi hasarını tespit etmesine ve onarmasına da olanak sağlıyor ve hızlıca kendini tamir ediyor.

Designed by stories / Freepik

Günümüzde robotlar, yakın çevreleri hakkında bilgi üretmek için bir sensör ağı kullanıyor. Örneğin, bir felaket kurtarma robotu, enkaz altında hayatta kalanı bulmak için kamera ve mikrofon sensörlerini kullanır ve kişiyi, kollarındaki dokunma sensörlerinden kılavuzluk ederek dışarı çıkarır. Bir fabrikada montaj hattında çalışan bir endüstriyel fabrika robotu, robotun kolunu doğru konuma yönlendirmek için görüş kullanır ve nesnenin kaldırıldığında kayıp kaymadığını belirlemek için sensörlere dokunur. Yani günümüz sensörleri tipik olarak bilgiyi işlemiyor. Ancak öğrenmenin gerçekleştiği tek bir büyük, güçlü, merkezi işlem birimine gönderiyor. Bu durum yanıt sürelerinin gecikmesine neden olur. Aynı zamanda bakım ve onarım gerektirecek, uzun ve maliyetli olabilecek hasarları gündeme getiriyor.

NTU’lu bilim insanlarının yeni yaklaşımı, yapay zekayı, robotik cilde dağıtılmış ‘mini beyinler’ gibi davranan çok sayıda küçük, daha az güçlü işleme birimine bağlı sensör düğümleri ağına yerleştiriyor. Bilim insanlarının, bu, öğrenmenin yerel olarak gerçekleştiği ve robot için kablolama gereksinimlerinin ve yanıt süresinin geleneksel robotlara göre beş ila on kat azaldığı anlamına geliyor.

Designed by stories / Freepik

Bu projenin yardımcı yazarı Elektrik ve Elektronik Mühendisliği Fakültesi’nden Doç. Dr. Arindam Basu, “Robotların bir gün insanlarla birlikte çalışabilmesi için, bizimle güvenli bir şekilde etkileşime girmelerinin nasıl sağlanacağı bir endişe. Bu nedenle, Dünyanın dört bir yanındaki bilim adamları, robotlara bir farkındalık duygusu getirmenin, örneğin acıyı ‘hissedebilme’, buna tepki verebilme ve zorlu çalışma koşullarına dayanma gibi yollar buluyor. Bununla birlikte, gereken çok sayıda sensörü bir araya getirmenin karmaşıklığı ve bu tür bir sistemin sonuçta ortaya çıkan kırılganlığı, yaygın olarak benimsenmesi için büyük bir engeldir.

Çalışmanın ilk yazarı, aynı zamanda NTU Malzeme Bilimi ve Mühendisliği Okulu’nda Araştırma Görevlisi olan Rohit Abraham John, “Bu yeni cihazların kendi kendini iyileştirme özellikleri, robotik sistemin ne zaman kendini tekrar tekrar birleştirmesine yardımcı oluyor ‘dedi. Oda sıcaklığında bile bir kesik veya çizikle yaralanmış. Bu, biyolojik sistemimizin nasıl çalıştığını taklit eder, tıpkı bir kesikten sonra insan derisinin kendi kendine iyileşmesi gibi.

Designed by stories / Freepik

Nesneleri tanımak için ışıkla etkinleşen cihazları kullanmak gibi nöromorfik elektronikler üzerindeki önceki çalışmalarını temel alan ve üzerine çalışan NTU araştırma ekibi, şimdi daha büyük ölçekli uygulamalar için sistemlerini geliştirmek üzere endüstri ortakları ve hükümet araştırma laboratuvarlarıyla işbirliği yapmayı düşünüyor ve robotların ağrıyı algılaması ve kendi kendine kendini onarmasına yardımcı olmak için “Mini Beyinler” geliştiriyor. NTU tarafından üretilen robotlar hayatımızın bir parçası olacak.

Kaynakça

  1. https://www.sciencedaily.com/releases/2020/10/201015101812.htm
  2. https://www.freepik.com
  3. https://globalaihub.com/cahit-arf-makineler-dusunebilir-mi/