10 Haziran 2017 Cumartesi

Algoritma Analizi: Emgu Cv - Anlık Yüz Tanıma

Algoritmalar neden analiz edilir?


Bir algoritmanın çalıştırılmadan ne kadar süre çalışacağını ve diğer alternatiflere(daha hızlı, daha az yer kaplama gibi) göre nasıl davranacağını tahmin edebilmek için algoritma analizi yapılır.

Matematik bilimindeki karmaşıklık teoreminin bir uygulama alanı olan algoritma analizi matematiksel yöntemlerle bir algoritma performansı hakkında bilgi almamızı sağlar.

Algoritma analizi kriterleri


  • Kod uzunluğu
  • Gereksiz kısımlar
  • Bellek gereksinimi
  • Çalışma zamanı

Emgu Cv - Anlık Yüz Tanıma Uygulaması


Uygulama anlık olarak kameradaki yüzleri tespit ediyor.



İnput Formatı - Makine Öğrenmesi 

Uygulama başlatıldığında kameradaki görüntüyü alır. Bu görüntü framlerden oluşuyor bunu Image<Bgr, byte> tipine dönüştürür. böylece frameleri byte dizisi şekline getirilir.

Daha sonra dönüştürülen bu görüntü işlenebilmek için grayscale'e dönüştürülür. 

Bu tarz yüz tespiti, obje tespiti gibi uygulamalar için kullanılan xml tabanlı haar cascade dosyaları kullanılır. Bunlar bu tarz yapay zeka makine öğrenimleri için oluşturulmuş eğitim verileri bulunduran dosyalardır. Bunları internette bulmak mümkündür. 

Haar dosyasından Image byteları aranarak bulunan yüzler döndürülür. Ve başlangıçta yakaladığımız binary görüntü üzerine yazılır.


Karmaşıklık Analizi


Emgu Cv kütüphanesini incelersek detectMultiScale methodu makine öğrenmesinin yapıldığı methoddur.


Bu methoda gelen greyscale görüntü diziye koyularak haar dosyasında karşılaştırma yapılır.

Makine öğrenmesinin karmaşıklığını dll dosyalarının içinde ne olduğunu göremediğimiz için dizi boyutu kadar diye biliriz buda worst case de O(n) dir.


 Test aşamasının karmaşıklığı ise foreach döngüsü tespit edilen her yüz için 1 kez dönecektir. Bu yüzden worst case de karmaşıklık O(n) dir.

21 Aralık 2016 Çarşamba

ReSharper Nedir?

    
    ReSharper Jetbrains tarafından visual studio için geliştirilmiş bir uzantıdır. Amacı 
geliştiricilere kod yazarken kolaylıklar sağlamaktır. Kodu geliştirme sırasında analiz eder ve
kod kalitesini iyileştirmek için hatalara, uyarılara, gereksiz referanslara karşı öneriler sunar. 



                                            



   Varsayılan olarak gelen IntelliSense'i genişleterek kodu düzenlemede çok büyük avantajlar sağlar.



Kodu daha sonra farklı geliştiriciler incelediğinde syntax'ın okunabilirliği için belirli belirli kodlama standartlarını uygular.

14 Kasım 2016 Pazartesi

PaaS(Platform Servisi) Nedir? , Storage Nedir?

Platform hizmeti(Platform as a Service (PaaS)), uygulama geliştiricilere donanım ve yazılım katmanları sunarak projelerini geliştirme imkanı sağlar.
Bu hizmet sistem yönetimi, işletim sistemi, programlama dili ortamı, veri tabanı vs. gibi platformlar sunar. Sistem yönetimi hizmet sağlayıcı tarafından gerçekleştirildiği için siz sadece uygulamaları ve verilerinizi yönetirsiniz. Örneğin PHP ile bir yazılım kodladınız. Kodladığınız yazılımın SQL ve web sunucu altyapısı ile uğraşmak zorunda kalmazsınız. PaaS, sadece yazılımınızın çalışması gereken platformları sağlar.

Avantajlarından bahsedecek olursak, zamandan ve maliyetten aşırı derecede tasarruf sağlayan bir servistir. Çünkü uygulamamız için gerekli olan kullanacağınız platformun kurulup kullanıma hazır hale gelmesi dakikalar içerisinde olacaktır. Maliyet olarak ise kullanacağımız makinenin ,platformun dışardaki maliyetlerinden daha aza denk geliyor. Aynı hesap içerisine farklı platformlar kurulabilir.


Storage nedir?

Bulut depolama, sunucular tarafından ağ üzerinde sanal olarak oluşturulan havuzlarda veri depolamasıdır. Bulut depolama dosyalarınızı kaydeder ve bilgisayar bozulsa bile dosyalarınız zarar görmez. Azureda 3 farklı şekilde veriler depolanabiliyor; blob, table, file.
Azure website publish - storage



Dönem projemizde OBS uygulaması yapıyoruz. Sürüm takibi ve tasklarımızı Tfs üzerinden yürütüyoruz. 
obsgroup5.visualstudio.com bizim tfs linkimiz. Database verilerini derste girmiştik ve bunu mssql server için database haline getirerek bulutta paylaşmıştım. Bulut hesabı kapanana kadar sisteme öğrenci numaranız ile giriş yapabilirsiniz. Şimdilik Öğrenci, Fakülte, İdari, Bölüm, Ders için CRUD işlemlerini yaptık. Bu grupta ve dersteki rolüm mssql için diğer gruplar ile girilen verileri toparlayıp bir database haline getirmekti ve bulutta paylaşmaktı. Grupta ise Teoman Akçiçek ile beraber login ekranını tasarlardık. Diğer üyelerlede diğer ekranlarda tasarımlar yaptık.


9 Ekim 2016 Pazar

Buluta Giriş


Bulut, kendi bilgisayarınız dışında verilerinizi saklayabileceğinizi, programlarınıza internet üzerinden ulaşabileceğiniz bir hizmettir.

Özellikle dosya saklama ve dosyalara ulaşım(data access) konusunda gibi sorunlarda büyük bir avantaj sağlamış durumda olan bir hizmet. Günümüzde kullanılan akıllı teknolojilerin daha aktif ve verimli kullanılmasında da kolaylık sağlamıştır. Bulut bilişim sayesinde cihaza bağımlılıkta ortadan kalkacaktır. Yani ufak dosyalarınız için yanınızda bilgisayar yada harici bir veri saklama cihazı taşımanıza gerek kalmayacaktır.

Günümüzde Google, Microsoft, Amazon gibi büyük şirketler bulut bilişim pazarının içindedir.
Bu hizmetler public, private, hybrid türlerinde olabilirler.

Mimarisinden bahsedecek olursak 2 kısımdan oluşur. Ön taraf ve arka taraf, ön taraf kullanıcı kısmı arka taraf ise bulut kısımdır. Arka tarafta teorik olarak video işlemeden, oyunlara kadar bütün programlar olabilir, genelde her programın kendi sunucu vardır. Bunlar bir merkez sunucu ile doğru bir trafikte yönetilir.



















Bulut servis modeller: IaaS, PaaS ve SaaS

Bulut Bilişim hizmeti Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS) olarak 3 şekilde sunulmaktadır.

Yazılım hizmeti(Software as a Services (SaaS)) , kullanıcıların ihtiyaç duyduğu CRM, ERP, finans ve muhasebe yazılımları gibi programları bulut üzerinde sağlar.
Farklı lokasyonlarda faaliyet gösteren firmalar için SaaS ekstra yazılım maliyeti oluşturmayarak ciddi ekonomik avantaj sağlar. SaaS için en uygun örnek Gmail’dir. Google’ın sunduğu bu hizmet ile mail gönderebilir, dokümanlarınızı düzenleyebilir ve dosyalarınızı yedekleyebilirsiniz. Yazılım bilginiz olmasa dahi tüm işlemlerinizi gerçekleştirebilirsiniz.

Platform hizmeti(Platform as a Service (PaaS)), uygulama geliştiricilere donanım ve yazılım katmanları sunarak projelerini geliştirme imkanı sağlar.
Bu hizmet sistem yönetimi, işletim sistemi, programlama dili ortamı, veri tabanı vs. gibi platformlar sunar. Sistem yönetimi hizmet sağlayıcı tarafından gerçekleştirildiği için siz sadece uygulamaları ve verilerinizi yönetirsiniz. Örneğin PHP ile bir yazılım kodladınız. Kodladığınız yazılımın SQL ve web sunucu altyapısı ile uğraşmak zorunda kalmazsınız. PaaS, sadece yazılımınızın çalışması gereken platformları sağlar.

Altyapı hizmeti(Infrastructure as a Service (IaaS) ), Bulut Bilişim’in en temel hizmetidir. IaaS ile sanal sunucu oluşturulup kullanıcılara bulut sunucu hizmeti sunulmaktadır.
Bulut altyapısı ile sanal sunucu kaynakları size özel olarak tahsis edilir. IaaS ile esnek altyapıya sahip olursunuz. Örneğin tatil organize eden web sitelerinde tatil sezonlarının başlangıcına yakın sunucu kaynak ihtiyacı artar. Kullanılan kaynaklar, Bulut Bilişim’in esnek yapısından faydalanılarak istendiği zaman arttırılıp/azaltılabilir.

Virtual machine 

Virtual machine service basit olarak anlatacak olursak işletim sisteminini(Windows/linux) bulut uzerinden kullanabileceğin arayüz sunan , işletim sisteminde dosyalarinizi yönetebileceğiniz bir servistir.
Servisteki fiziksel makinelerin tüm bakımlarından servisi sağlayan şirket sorumludur. Hatta bazı şirketler nükleer savaştan sonra dahi verilere ulaşım garantisi verebiliyor.