Python Hakkında Ufak Bir Söyleşi

Python son yıllarda popülerliği gittikçe artan ve artmaya devam eden bir programlama dili. Bu yazımızda bu popülerliğin arkasındaki sebepleri, yadsınamaz büyüklükteki topluluğunu ve tabii ki dilin kendisini inceleyeceğiz.

Geçmiş

Herşey, Guido van Rossum tarafından, aslında bir hobi projesi olarak geliştirilen Python’un 1991 yılında duyurulmasıyla başladı. Tabii çok daha öncesinde, 1980’li yıllara dayanan bir tarihi bulunan Python, 1989 yılında implemente edilmeye başlanmış. 1994 yılının Ocak ayında 1.0 stabil sürümüne ulaşabilmiş, en son stabil sürümü olan 3.6.5’e ise 28 Mart 2018 tarihinde ulaşmıştır.

Bugün

Stack Overflow Blog sayfalarında yayınlanan 6 Eylül 2017 tarihli ‘The Incredible Growth of Python’ adlı yazıda, Dünya Bankası’nın yüksek gelirli olarak belirlediği ülkelerin diğer ülkelere oranla farklı teknolojiler kullandığı ifade ediliyor ve yapılan araştırma sonucu elde edilen verilere göre Python’ın bu ülkelerde en hızlı büyüyen programlama dili olduğu sonucuna varılıyor.

Peki Neden?

Benim nezdimde ilk nedenin yazım kolaylığı ve okunabilirliği olduğunu söyleyebilirim. Bu faktörler , dilin öğrenilmesini de ciddi oranda kolaylaştırıyor. İnternette yapabileceğiniz küçük çaplı bir araştırma ile de büyük bir çoğunluğun bu sebeplerle tercih ettiğini görebiliyorsunuz. Örneğin, diğer popüler programlama dilleri ile karşılaştırdığınızda direkt göze çarpan fark, dilin space-sensitive yani boşluğa duyarlı bir dil olması oluyor. Dilin dizayn felsefesine göre okunabilirliği arttırması amaçlı alınmış bir karar aslında bu. Bizzat Guido van Rossum’un The History of Python‘da yayınladığı ‘Python’s Design Philosopy’ yazısında bahsettiği gibi, direkt olarak kendisinin belirtmediği dizayn ilkelerinin, dilin gelişiminde büyük katkısı olan Tim Peters tarafından yazıya dökülmeye çalışılması ile ortaya çıkan Zen of Python maddelerinden bir tanesi de ‘Readability counts’ yani ‘Okunabilirlik önemlidir’ maddesidir. Tabii dilin bu kadar popüler olmasını sağlayan tek şey ‘yazım kolaylığı’ ya da ‘okunabililiği’ değil.

Yapay Zeka Çağı

Başka bir neden ise son yıllarda popüler olan fakat geçmişi aslında o kadar da yakın tarih olmayan, AI, Deep Learning, Neural Network gibi konulara çok kolay bir şekilde girebilmenizi sağlayacak bir çok paketin, örnek kodların ve topluluk desteğinin bulunması. Aslında anlayabileceğiniz üzere bu konular çokta “basit” değil. Sadece teknik yetkinlik yetersiz kalıyor çünkü bu teknik yetkinlikleri edinebilmek için zaten öncelikle kendinizi biyolojik ve felsefik olarak yeterli bilgiye sahip olacak şekilde geliştirmeniz gerekiyor. Çünkü temelinde yapmaya çalıştığınız şey bir bilgisayarın insan gibi düşünmesini sağlamak. Topluluk buradaki bariyeri, yukarıda bahsettiğim etmenler ile biraz daha aşağı çekmeye çalışarak daha çok insana ulaşabilmesini sağlıyorlar ve topluluğun günden güne büyüme hızının artması da bir şeyleri doğru yaptıklarının bir göstergesi olsa gerek.

Web Geliştirme

Tabii başka bir etmen de Web uygulamaları geliştirebilmeniz. ‘Web Uygulamaları Geliştirebileceğiniz Diller ve Platformlar’ yazısında da incelediğimiz, Django, Flask ve Pyramid gibi paketleri kullanarak hızlı bir şekilde web uygulamaları çıkartabiliyorsunuz. Burada da topluluk desteğinin oldukça yüksek olduğunu belirtmekte fayda var.

Gelecek

Bugün başlığı altındaki Stack Overflow yazısı, Python’ın geleceği hakkındaki görüşlerini de belirtiyor ve tahminlerde bulunuyor. Bugüne kadar aldıkları trafik verisi ile 2018 yılı dahil olmak üzere önündeki iki yılı tahminlemeye çalışan Stack Overflow, Python’ın 2020’ye kadar Java ile arasındaki farkı oldukça açacağını söylüyor. Ayrıca Java trafiklerinin, eğitim sistemlerinde oldukça ağırlıklı kullanılan bir dil olduğundan sonbahar ve ilkbahar dönemlerinde trafiğin arttığını ve yaza doğru azaldığı da belirlenmiş ve öngörüde bu bulgular da düşünülerek tahminleme yapılırken ‘Seasonal and Trend composition using Loess’ (STL) modeli kullanılmış.

Ayrıca, büyüme oranlarına göre de diller karşılaştırıldığında, Swift ve R’a göre çok daha hızlı şekilde büyüme kat ettiğini görüyoruz.

Sonuç

Python, öğrenme zorluğu düşük, geniş bir uygulama yelpazesine sahip ve topluluk tarafından oldukça destek gören, programlamaya yeni başlıyorsanız ya da başlamayı düşünüyorsanız eğer kesinlikle önerebileceğim bir dil.

Bir sonraki yazıda görüşmek üzere.

Web Uygulamaları Geliştirebileceğiniz Diller ve Platformlar

Bu yazımızda sizlerle birlikte web uygulamaları geliştirebileceğiniz bir kaç dili, onların platformlarını ve bu platformlarda kullanabileceğiniz bir kaç örnek kütüphaneyi inceleyeceğiz.

1. .NET Dilleri (Visual Basic, C#, F#)

Visual Basic, Microsoft tarafından 1991 yılında duyurulan ve Basic dilini temel alarak geliştirilen, nesne yönelimli (OOP), olay odaklı (event-driven) bir dil.

C# ise yine Microsoft tarafından 2000 yıllarında duyurulan, çoklu yönelimli (multi-paradigm) bir programlama dilidir. Nesne yönelimli, fonksiyonel ve generic programlama yaklaşımlarına sahiptir.

F#, artık tahmin edebileceğiniz gibi Microsoft tarafından 2005 yılında 1.0 versiyonuna ulaşmış, çok yönelimli, özellikle fonksiyonel programlama yapabileceğiniz bir dil. Aynı zamanda Javascript ve GPU odaklı kod oluşturma gibi yetenekleri de var.

.NET dillerini kullanarak web uygulamaları geliştirebileceğiniz bir kaç platform mevcut. ASP.NET ailesinin yanı sıra, aynı zamanda Owin (Open Web Interface for .NET) ve Nancy gibi protokole daha yakın platformlar da bulunuyor.

1.1 ASP.NET Ailesi

Popüler olanları sayacak olursak Web Forms, MVC ve Web Api platformlarını sayabiliriz. Onun dışında yeni çıkan Web Pages ve Blazor isimli platformlar da mevcut fakat bunları başka yazılarda detaylı bir şekilde inceleyeceğiz.

1.1.1 ASP.NET Web Forms

ASP teknolojisinin .NET platformunda hayat bulduğu ilk hali diyebiliriz. ASP’de olduğu gibi <% ve %> tagleri kullanılarak sunucu taraflı kod yazabilirken, aynı zamanda .NET kütüphanesinin tamamına da erişim sağlayabiliyorsunuz.

1.1.2 ASP.NET MVC

ASP.NET platformu üzerine MVC metodolojisinin kurgulandığı bir platformdur. Aynı zamanda klasik ASP’den beri kullanılan <% ve %> tagleri yerine, kullanımı biraz daha kolay olan Razor yazım şekli ile birlikte gelmiştir.

1.1.3 ASP.NET Web Api

ASP.NET MVC platformu üzerinde yapılan bir kaç değişiklik ile birlikte, RESTful API’ler geliştirilebilen bir platformdur ve son yıllarda istemci taraflı web geliştirmenin de popülerliğinin artması ile birlikte en sık kullanılan yaklaşımdır.

1.2 Owin (Open Web Interface for .NET)

Sunucu ve uygulama arasındaki bağı kopartmaya çalışan Owin, geliştiricilerin daha çok uygulamanın kendisine odaklanmasını sağlamaya çalışmaktadır. Middleware yaklaşımını kullanır ve diğer .NET platformlarına nazaran daha esnek bir API sunar.

1.3 Nancy

Herhangi bir metodolojiyi benimsemeyen Nancy, direkt olarak browser tarafından istenen kaynağa karşılık gelecek şekilde bir yazım şekli sağlar. Böylece fazla kapsamlı olmayan ihtiyaçlara karşılık çok hafif bir platform alternatifi sunar.

 

2. PHP

1995 yılında Rasmus Lerdorf tarafından yaratılan PHP, sunucu taraflı kodlama sağlıyor. WordPress, Joomla! ve Drupal gibi sistemler bu dil kullanılarak geliştirilmiş ve çok yaygın bir kullanıma sahip. Sadece PHP dilinin kendisi kullanılarak da bir web uygulaması geliştirilebilse de farklı yaklaşımları barındıran bir çok platform ortaya çıkmış. İçlerinden Symfony, CodeIgniter, Laravel, CakePHP ve Phalcon platformlarını örnek olarak sayabiliriz.

2.1 Symfony

İçerisinde 50 adet bileşen bulunduran Symfony, bu bileşenler ile birlikte kod tekrarını azaltmayı ve genel ihtiyaçları karşılamayı amaçlıyor. Drupal, phpBB, yine aşağıda inceleyeceğimiz Laravel ve daha bir çok platform tarafından da kullanılmakta.

2.2 CodeIngiter

MVC metodolojisini benimseyen CodeIgniter, MVC’yi benimsemeseniz bile kullanabileceğiniz bir platform çünkü sizi MVC yazmaya zorlamıyor. Küçük ve performanslı web uygulamaları geliştirebilirsiniz. Artı olarak detaylı ve sade bir dökümantasyona da sahip.

2.3 Laravel

Web sanatçılarının PHP kütüphanesi mottosuyla kendini gösteriyor Laravel. İçerisinde Active Record desenini implemente eden Eloquent adında bir ORM’e ve Blade adında bir şablon motoruna sahip. Yaklaşım olarak MVC tercih edilmiş.

2.4 CakePHP

Dökümanın ilerleyen bölümlerinde inceleyeceğimiz Ruby on Rails’in konseptine uygun geliştirilen CakePHP, diğer bir çok platform gibi MVC yaklaşımını benimsiyor. Laravel’de de olduğu gibi içerisinde Active Record desenini implemente eden bir kütüphaneye sahip.

2.5 Phalcon

Büyük bir çoğunluğu C ile yazılan Phalcon, diğer platformlara göre daha performanslı ve daha az kaynak harcadığını savunuyor. Aynı şekilde C ile yazılan bir ORM’e ve MVC yaklaşımına sahip.

 

3. Python

‘Python Hakkında Ufak Bir Söyleşi’ adlı yazımda kendisine detaylı bir şekilde değindim. Okumak isterseniz buradan ulaşabilirsiniz.

Bir çok web platformu mevcut fakat bir kaç örnek olarak Django, Flask ve Pyramid’i sayabiliriz.

3.1 Django

İçerisinde varsayılan olarak şablon motoru, ORM ve kimlik doğrulama gibi özellikler ile geliyor ve Python üzerinde web programlama için kullanılan en popüler platformdur.

3.2 Flask

Aşağıda da inceleyeceğimiz ve bir Ruby platformu olan Sinatra’dan ilham alan Flask, alt tabanında Werkzeug WSGI Toolkit ve Jinja2 şablon motorunu kullanıyor. Çok hafif bir yapıya sahiptir.

3.3 Pyramid

Az uğraş gerektireceğini vaad eden Pyramid, en basitinden en kapsamlısına bütün projelerde kullanılabileceğini söylüyor. İçerisinde dosya bazlı şablon motoru, doğrulama sistemi ve test kütüphaneleri ile birlikte geliyor ve geniş konfigurasyon desteği sağlıyor.

 

4. Ruby

Yukihiro “Matz” Matsumoto tarafından Japonya’da, 1990’lı yılların ortalarında geliştirilmeye başlanmış. Çoklu yönelimli bir dil olan Ruby, nesne yönelimli ve fonksiyonel programlama yaklaşımlarına sahiptir.

Dökümanda önceden de bahsedilen, Ruby için önemli sayılabilecek iki adet platform bulunuyor ; Ruby on Rails ve Sinatra.

4.1 Ruby on Rails

Convention over Configuration yaklaşımını savunan Ruby on Rails, çok hızlı bir şekilde web üzerinde çalışabilen uygulamalar geliştirmenizi sağlıyor. Ruby üzerinde kullanılan açık ara en popüler platform.

4.2 Sinatra

Nancy ve Flask gibi, minimum efor ile web uygulaması yazmanızı sağlayan bir platform. Test kütüphaneleri ve topluluk tarafından geliştirilen eklentiler ile çok daha geniş çaplı uygulamalar da yazılabiliyor.

 

Bu yazıda, .NET dilleri, PHP, Python ve Ruby dilleri için kullanılabilecek platformları inceledik.

Bir sonraki yazıda görüşmek üzere.

Microsoft Cognitive Toolkit ( CNTK ) FastRCNN-BrainScript ile Görüntü İşleme

Bu yazımızda Microsoft’un açık kaynaklı derin öğrenme kütüphanesi olan daha önceki yazılarımızda incelediğimiz Cognitive Toolkit (CNTK) ile Microsoft’un kullanıcıların daha iyi gözlemlemesi için yayınladığı örneklerden bir tanesi olan ve tanıttığımız resimdeki objeleri algılamamızı sağlayan FastRCNN algoritmasını adım adım birlikte hayata geçireceğiz.

Azure Data Science Virtual Machine

Microsoft’un bulut sistemi olan Azure platformunda bilimsel çalışmalar yapabilmek adına geliştirilmiş ve ihtiyacımız olan bir çok yapının önceden kullanıma hazır bir şekilde bulundurduğu sana makinesidir. Adımları yapılandıracak donanımlara sahip değilseniz veya bulut üzerinde çalışmak istiyorsanız. https://azure.microsoft.com/tr-tr/ adresi üzerinden Azure hesabı oluşturup, aşağıdaki ekran görüntülerini sırasıyla takip ederek bu yazıdaki demoyu hayata geçirmek için gerekli sanal makineyi oluşturabilirsiniz.

1-) Azure hesabınıza giriş yaptıktan sonra karşımıza çıkan gösterge panelinden gösterilen adımları takip ediniz.

2-) Sonraki adım olarak aşağıdaki ekran görüntüsü yardımıyla bir sonraki adıma geçiniz.

3-)Ardından karşımıza çıkan sayfada dikkat etmeniz gereken nokta Kullanıcı Adı ve Şifreyi bağlantı sırasında kullanacağımız için bir yere mutlaka not etmeniz.

4-) Demo için bizim kullandığımız sanal makine özellikleri aşağıda gösterildiği gibidir ihtiyacınız doğrultusunda farklı donanımlara sahip olan sanal makineleri tercih edebilirsiniz.

5-) Bu kısım sanal makinemizi ayrıntılı bir şekilde özelleştirmemiz için gerekli seçeneklerin bulunduğu yerdir. Demo özelinde böyle ayrıntılara ihtiyaç duymadığımız için tamam dedikten sonra sanal makinemizi oluşturabiliriz.

6-) Bu işlemleri tamamladıktan sonra kaynaklarım kısmında ismini verdiğimiz sanal makinemizi görebiliriz.

7-) Sanal makinemizin üzerine tıkladıktan sonra karşımıza çıkan göster panelinde önce başlat butonu ile sanal makinemizi hazırladıktan sonra, bağlan butonuna tıklayınız. Uzaktan bağlantı kurabilmek için çok hızlı bir şekilde .rdp uzantılı bir dosya indirecektir. İndirilen dosyayı çalıştırdıktan sonra sanal makinemizi oluştururken kullandığımız bilgiler ile sanal makinemize bağlanabiliriz

Sanal makinemize sorunsuz bir şekilde bağlantımızı gerçekleştirdikten sonra aşağıdaki adımları takip edebilecek duruma geldiğiniz demektir.

BAŞLANGIÇ ADIMLARI

Öncelikle ön paket yükleyicisi olan Anaconda’yı https://www.anaconda.com/download/ adresinden işletim sisteminize göre indirmemiz gerekiyor.

Kurulumumuzun ardından ekran görüntüsünün yönlendirmesi ile Anaconda Prompt’imizi açıyoruz. Konsol ekranında ilk olarak bize uygun olan ve kullanacağımız Python sürümünü
conda install python=3.5
komutu ile bilgisayarımıza indiriyoruz. 
Python 3.5 versiyonu ile bir çalışma alanı(environment) oluşturmamız gerekiyor bunun içinde
conda create -n py35 python=3.5 anaconda
komutunu kullanıyoruz. Hatırlatma olarak “py35″ çalışma alanınızın(environment) ismi istediğiniz gibi kişiselleştirebilirsiniz. Tüm bu işlemlerin ardından artık çalışma alınımız bilgisayarımızda hazır bir hale geldi, bunu aktif olarak kullanabilmek için
activate py35
komutunu kullanıyoruz.

CNTK KURULUMU

Kendi çalışma alanımızı oluşturduk. Şimdi bizim için gerekli olan kütüphaneleri çalışma alanımıza
pip install numpy scipy h5py jupyter 
easydict
komutu ile entegre etmemiz gerekiyor. Sırada asıl bizi ilgilendiren CNTK kurulumu var. Bunun için konsolumuza ilk olarak CPU 
uyumlu olan CNTK kurulumu için
pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.4-cp35-cp35m-win_amd64.whl
komutunu yazıyoruz böylelikle çalışma alanımıza CNTK kütüphanesini entegre etmiş olduk. İndirme işleminin ardından kontrol etmek için
python -c “import cntk; print(cntk.__version__)”
komutunu konsol üzerinde kullanarak CNTK versiyonunu kontrol edebilirsiniz.

Artık Microsoft tarafından yayınlanan örnekleri incelemeye başlayabiliriz. Bunun için kontrol ekranımıza
python -m cntk.sample_installer
komutunu kullanıyoruz. Bu işlem ile birlikte bilgisayarımıza CNTK-Samples-2-4 dosyasını indirmiş olduk. Başlat çubuğu CNTK-Samples-2-4 ile arama yapıp dosya konumunu istediğiniz yere taşıyabiliriz. Şuana kadar yaptığımız işlemlerin doğrulu kontrol etmek için.

CNTK-Samples-2-4 -> Tutorials -> NumpyInterop yoluna gittikten sonra python FeedForwardNet.py komutu ile python dosyamızı çalışılıyoruz.

FastRCNN Algoritmasının Çalıştırılması

Tüm kurulumları doğru bir şekilde gerçekleştirebildiysek FeedForwardNet.py dosyasını çalıştırdıktan sonra yukarıdaki gibi bir ekran görüntüsü elde etmeliyiz. Herhangi bir hata alıyorsanız önceki adımları tekrardan gözden geçiriniz.

Artık resimlerdeki objeleri algılamak için yazımızın başında bahsettiğimiz FastRCNN örneğini başlatabilmek için gerekli adımları gerçekleştirmeye hazırız. CNTK-Samples-2-4 dosyasının bulunduğu konuma içerisinde
pip install -r requirements.txt
komutu ile hangi kütüphanelere ihtiyacımız olduğunu gözlemleyebiliriz ve indirebilrisiniz.

conda install scikit-image opencv
komutu ile örnek için gerekli görüntü işleme kütüphaneleri çalışma alanımıza entegre etmemiz gerekiyor. Sonraki adım olarak pre-trained (önceden eğitilmiş) olan AlexNet modelini adresinden indirerek ..CNTK-Samples-2-4PretrainedModels yoluna taşıyınız. Bu işlemin artından artık veri setimizi indirme zamanımız geldi. Konsol ekranımız yardımıyla ..CNTK-Samples-2-4ExamplesImageDataSetsGrocery yoluna gittikten sonra
python install_grocery.py
komutu ile veri setimizi indiriyoruz. Modelimizi eğittikten sonra artık örneğimizi çalıştırma vaktimiz geldi. ..CNTK-Samples-2-4ExamplesImageDetectionFastRCNNBrainScript yoluna giderek önce
python A1_GenerateInputROIs.py
ile test ve eğitim için modelimize girdilerimizi entegre ediyoruz hemen ardından python A2_RunWithBSModel.py ile eğitimi gerçekleştiriyoruz. Ardından
python A3_ParseAndEvaluateOutput.py
ile elde ettiğimiz sonuçları gözlemlemiyoruz.

Elde edilen resim çıktılarını gözlemlemek için
python B1_VisualizeInputROIs.py
dosyasını çalıştırabilirsiniz.


Evet sonunda başardık! Görüntü işleme ile resimlerdeki objeleri CNTK derin öğrenme kütüphanesi ile algılama işlemini gerçekleştirdik. Bir sonraki yazımızda kendi veri setimizi nasıl eğitip, nasıl test edeceğimize dair örnekler üzerinde geliştirme yapacağız.

HATIRLATMA

bu aşamaya gelene kadar geride bıraktığımız aşamalara göz atmak için aşağıdaki linklere göz atabilirsiniz.

1-) Yeni Başlayanlar için Görüntü İşlemeye Giriş

2-) Görüntü İşleme için Öğrenilmesi Gereken Yapılar

3-) Görüntü İşleme için Gerekli Kurumlar ve İlk Örnek

Bir sonraki yazımızda görüşmek üzere…

 

Görüntü işleme için Öğrenilmesi Gereken Yapılar

Önceki yazımızda görüntü işleme konseptine giriş yapmıştık. Bu bölümde sizlere görüntü işleme ile ilgili bilinmesi gereken yapılar genel hatlarıyla tanıtılacaktır. Bu bilgiler ışığında ileri ki zamanlarda yapılacak olan geliştirmelerde karşı karşıya gelinebilecek sorunlar ve yapılacak araştırmalar daha efektif bir şekilde gerçekleştirilebilecektir.

1-Anaconda

Anakonda; Python, R programlama dili, veri bilimi ve bilimsel araştırmalar ile uğraşan insanlar için Anaconda kuruluşu tarafından geliştirilmiş bir ön yükleyicidir. Geliştirilen bu on yükleyici kullanıcıların işlerini büyük ölçüde kolaylaştırmaktadır. Yüklendiği zaman kendisiyle beraber veri işleme ve raporlama dahil olmak üzere bu işlemlerle ilgili 100’den fazla pakete otomatik olarak erişilebilmektedir. Aynı zamanda istenilen 600’den fazla paket conda yükleyicisi sayesinde rahatlıkla kurulabilmektedir. Daha fazla bilgi için https://www.anaconda.com/ adresine göz atabilirsiniz.

2- OpenCV

OpenCV (Open Source Computer Vision) açık kaynak kodlu görüntü işleme ve makine öğrenimi için geliştirilmiş bir yazılım kütüphanesidir. 2 ve 2.1 bir sürümleriyle Pyhton programlama dili desteği getirilmiştir. Google, Microsoft, IBM, Yahoo, Sony, Honda, Toyota gibi köklü şirketler tarafından aktif olarak kullanılmaktadır. OpenCV kütüphanesi içerisinde görüntü işlemeye ve makine öğrenmesine yönelik 2500’den fazla algoritma bulunmaktadır. Bu algoritmalar ile yüz tanıma, nesneleri ayırt etme, insan hareketlerini tespit edebilme, nesne sınıflandırma, plaka tanıma gibi bir çok işlem rahatlıkla yapılabilmektedir. Daha fazla bilgi için https://opencv.org/ adresine bakabilirsiniz. Alternatif görüntü işleme kütüphaneleri:
-OpenFrameworks
-Fiji
-Halcon
-Matlab
-Lead Tools
-Pink
-Image Magick
görüntü işleme kütüphanelerinin bazılarıdır.

3- Cognitive Toolkit

Daha önce CNTK olarak bilinen aynı zamanda Microsoft Cognitive Toolkit olarak adlandırılan, Microsoft araştırmacıları tarafından geliştirilmiş veri akış grafiklerinden faydalanarak sayısal hesaplama için kullanılan açık kaynak kodlu bir derin öğrenme kütüphanesidir. CNTK, kullanıcıların ileri beslemeli (DNN), konvolüsyonel sinir ağıları (CNN) ve tekrarlayan sinir ağları (RNN / LSTM) gibi popüler model türlerini kolaylıkla fark etmesini ve birleştirilmesine olanak sağlar. CNTK, çoklu GPU’lar ve sunucular arasında otomatik farklılaşma ve paralelleştirme ile stokastik inişini (SGD, hata geri yazılımı) ile uygular. Daha ayrıntılı bilgi için https://www.microsoft.com/en-us/cognitive-toolkit/ adresine göz atabilirsiniz. CNTK alternatif kütüphaneleri olarak:
– TensorFlow
– Theano
– Keras
– Infer.Net
– Torch
derin öğrenme kütüphanelerinden bazılarıdır.

4- Visual Studio Code

Microsoft tarafından geliştirilen Visual Studio Light olarak tanımlayabileceğimiz güçlü, kurulum kolaylığı ve işimize yarayan paketlere ulaşma rahatlığı açısından oldukça kullanışlı, JavaScript, TypeScript, Node.JS C++, C#, Java, Python, PHP, Go gibi programlama dillerini destekleyen aynı zamanda, Windows, macOS ve Linux işletim sistemlerinde kullanabileceğimiz bir geliştirme ortamıdır. Daha fazla bilgi için https://code.visualstudio.com/.Kısa bir tanıtımın ardından, genel olarak sonraki bölümlerde işleyeceğimiz konular için bilinmesi gereken genel yapılar bunlardır, belirtmeliyim ki her bir yapı kendi içerisinde çok derin incelenmesi gereken konu başları. Daha sonrasında hepsini teker teker daha ayrıntılı bir şekilde inceleyeceğiz. Bir sonraki yazımızda basit kurulum adımlarının ardından ilk örneğimizi hayata geçireceğiz.

Görüntü işleme için Gerekli Kurulumlar ve İlk Örnek

Kurulum Adımları

Önceki yazımızda görüntü işleme için gerekli yapıları genel olarak inceledikten sonra;
1- İlk olarak Python programlama dilini belirttiğim adresten 2.7 sürümünü indirin ve kurulumunu tamamlayınız. https://www.python.org/downloads/#pubkeys
2- Sonra Visual Studio Code’u belirttiğim adresten size uygun olan işletim sistemine göre indirme işlemini yapıp, kurulumu tamamlayınız.
https://code.visualstudio.com/Download.
3- Ardından aşağıda bulunan ekran görüntüsündeki adımları uygulayarak Python programlama dilini kullanmak için gerekli eklentiyi entegre ediniz.

3- Bu adımdan sonra sol üst köşede bulunan file sekmesinden File > New File adamalarıyla yeni bir dosya oluşturunuz.
4- Ardından kodlarımızı geliştirmeye başlamadan önce Visual Studio Code’un Python dosyasını tanıyabilmesi için oluşturduğumuz dosyayı CTRL+ SHIFT+S (Farklı Kaydet) kısa yolu yardımıyla uzantısını .py olarak değiştirmelisiniz.
5- Bu işlemin ardından aşağıdaki fotoğrafı indirip .py uzantılı dosyanızla aynı klasöre taşıyışınız.



5- Artık kullanacağımız kütüphaneleri Visual Studio Code terminali vasıtasıyla indirmeye başlayabiliriz.
6- Python programlama dilinin bilimsel hesaplamaların temel kütüphanesi olan NumPy‘yi indirmek için terminale “pip install numpy” komutunu yazarak ulaşabilirsiniz.

7- Ardından görseller üzerinde gerekli manipüle işlemlerini yapabilmemiz için gerekli olan OpenCV kütüphanesini indirmek için terminale “pip install opencv-python” komutunu yazarak ulaşabilirsiniz.

Tebrikler eğer bu adıma kadar sorunsuz gelmeyi başardıysanız artık Python programlama dili ile geliştirmeye başlayabiliriz.

import numpy  
import cv2    

fotograf = cv2.imread('peakup.jpg')fotografGri = cv2.cvtColor(fotograf, cv2.COLOR_BGR2GRAY)
cv2.imwrite("peakupGri.jpg",fotografGri)


ret,fotografBW = cv2.threshold(fotografGri,110,240,cv2.THRESH_BINARY) 
cv2.imshow('Binary Fotograf', fotografBW)

cv2.imshow('Orijinal Fotograf', fotograf)
cv2.imshow('Gri tonlarina cevrilmis fotograf', fotografGri)
cv2.imwrite("peakup01.jpg",fotografBW)cv2.waitKey(0) 
cv2.destroyAllWindows()

kodların ayrıntılı açıklamalarına https://goo.gl/KUpwYk adresinden ulaşabilirsiniz.

ekteki kodu yazıp kaydettikten sonra Terminal tarafından dosyamızın bulunduğu ilgili dizine gidip “python demo.py” komutu ile kodlarımızı çalıştırabiliriz.

ve yazdığımız kod çıktımız aşağıdaki gibi gözükecektir. Aynı zamanda ilgili dizinde manipüle ettiğimiz fotoğrafların ayrı ayrı çıktılarını görebilirsiniz.

Bir sonraki yazımızda Python programlama dili ile daha kompleks görüntü işleme örneklerine değineceğiz. Sıradaki yazımızda görüşmek üzere…

Microsoft ile Data Science (Veri Bilimi)

Microsoft Professional Program bünyesinde takip ettiğim Data Science (Veri Bilimi) başlıklı edX kurslarına paralel olarak bu yazı dizisini kaleme alıyorum. Seri, genel olarak veri bilimine ilgi duyan; ancak daha önce bilgisi olmayanlara yönelik. Yazılarda değinilen teknolojiler içerisinde Spark, R ve Python gibi Microsoft dışı yöntemler bulunmasına rağmen, ağırlıklı olarak Microsoft teknolojileri ile data science uygulamaları anlatılmaktadır.

Bu yazı, bütün alt başlıklara ait yazıların indekslendiği bir ana giriş yazısıdır.

Ek bir not olarak SQL bildiğini varsayarak ilerliyorum; buna göre SQL konusunda eksiğin olduğunu düşünüyorsan önce bunu tamamlayıp ardından bu yazıları okumanı tavsiye ederim.

Data Science

Microsoft ile Data Science konusunu şu alt başlıklarla ele almak mümkün :

Data Science Giriş

Data Scientist rolüne sahip birinin ne iş yaptığını tanımlayarak başlıyoruz. Görsel, analitik ve istatistiksel tekniklerle veri ile nasıl çalışılır ve keşfedilir, bu konuları irdeliyoruz. Bu konuyla ilgili mevcut yazılar şunlar :

 

Veriyi Analiz Etmek ve Görselleştirmek
Excel ve Power BI ile farklı veri kaynaklarından nasıl data alınacağını ve birleştirileceğini, nasıl analiz yapılacağını, verilerin nasıl görselleştirileceğini, hazırlanan dashboard’ların iş kullanıcıları ile mobil ve web platformunda nasıl paylaşılacağını inceliyoruz.

 

İstatistik Bilimini Anlamak

Giriş seviyesinde istatistik ve olasılık öğreneceksin. Bunları veri analizi ve veri bilimi temelleri üzerine Excel kullanarak gerçekleştiriyoruz.

 

Kod ile Veriyi Keşfetmek : Veri Bilimi için R’a ve Python’a Giriş

Data Science profesyonellerinin tercihi olan istatistiksel programlama dili R dilini öğreneceksin. Söz dizimi temellerini, değişkenleri, basit işlemleri, veri yapılarının (vektörler, matrisler, veri çerçeveleri, listeler vb.) nasıl ele alınacağını keşfedeceksin.

Basit aritmetik işlemler, değişkenler ve veri yapıları olmak üzere Python’un temellerini öğreneceksin. Python fonksiyonları ile akış kontrollerini keşfedip, gerçek zamanlı veri ile kendi görsel raporlarını oluşturacaksın.

 

Temel Data Science Konseptlerini Anlamak

İstatistiksel analiz, veri temizliği ve dönüşümü, R ve Python ile verinin görselleştirilmesi ve Microsoft Azure Machine Learning dahil olmak üzere veri bilimi ile uğraşırken işine yarayacak önemli konsept ve teknikleri öğreneceksin.

 

Machine Learning’i Anlamak

Sınıflandırma, regresyon, kümeleme ve tahminleme gibi makine öğrenmesi modellerini nasıl geliştireceğini, ölçeceğini ve optimize edeceğini öğreneceksin.

 

Kod ile Veriyi İşlemek ve Modellemek : R ve Python ile Data Science için Programlama

R ile programlamayı biraz ilerletiyoruz. R veri yapılarını ve söz dizimlerini keşfederek lokal bir dosyadan ya da bulutta bir veri tabanından nasıl veri okuyup yazılacağını, veri ile nasıl çalışılacağını, nasıl özet veriler elde edileceğini ve ihtiyacına göre veriyi nasıl dönüştüreceğimizi öğreneceksin.

Verinin içinde saklı olan desenleri ortaya çıkarmak için efektif ve iyi bilinen madencilik modellerini uygulayacak şekilde Python’ı nasıl kullanacağını öğreneceksin. Veri görselleştirmesi, niteliklerin seçimi (feature selection), boyutların azaltılması, kümeleme, sınıflandırmayı keşfedeceksin.

 

Uygulamalı Makine Öğrenmesi

Metin analitiği, konumsal veri analizi, imaj işleme ve zaman serileri tahminlemesi gibi predictive (kestirimci) problemleri çözmek için makine öğrenmesini nasıl uygulayacağını öğreneceksin.

 

HDInsight içinde Spark ile Predictive (Kestirimci) Çözümler Uygulamak

Kestirimci analizler ve makine öğrenmesi çözümleri üretmek için Microsoft Azure HDInsight içinde Spark’ı nasıl kullanacağını öğreneceksin. Apache Spark ile Python, Scala, R kullanarak veriyi nasıl temizleyip dönüştüreceğini, makine öğrenmesi modellerini nasıl oluşturacağını ve gerçek zamanlı makine öğrenmesi çözümlerini nasıl hayata geçireceğini öğreneceksin.

 

Microsoft R Server ile Büyük Veriyi Analiz Etmek

En güçlü programlama dillerinden biri olan R kullanarak Microsoft R Server ile büyük veri setlerinin nasıl analiz edileceğini öğreneceksin.

PeakUp Blog içinde yer alan bütün Data Science kategorisindeki yazılara ulaşmak için bu linki kullanabilirsin.