Perşembe, Mayıs 14, 2015

MNIST El Yazısı Rakam Veri seti 2

Bu konuda yazdığım bir önceki yazım da oluşturduğum kodlar için bir GUI hazırladım.
Program da GUI kütüphanesi olarak Qt kullanıldı.
OpenCv nin ML kısmında KNN metoduyla sistemi eğittim. K = 5 kullanıldı.
Programla ufak bir video hazırladım.


Digit Recogtion for the MNIST database of handwritten digits from bluekid on Vimeo.

Pazar, Mayıs 03, 2015

Yapay Zeka ve Görüntü işleme günleri 1

Yapay Zeka ve Görüntü işleme günlerinden izlenimlerimi aktaracağım.

Öncelikle Organizasyonu gerçekleşterene teşekkürler. Benimde ilgi alanım olan konularda böyle kıymetli konuşmacıları başka bir şekilde dinleme şansı bulmazdım.

Organizasyonun olduğu salonda gayet güzel. Sabah geldiğimde umduğumun çok ötesinde bir katılımcı görmekde beni fazlasıyla memnun etti.  Keza tanıdık bir sima - kemalcan -  görmekde iyi oluyor. Aslında gelmek isteyen pek çok kişi vardı, ben daha çok tandık sima bulurum diye umuyordum ama malesef olmadı :( kısmet...

Gelelim konuşmacılarımııza

Metin Sezgin hoca, yeni kullanıcı arayüzüz geliştirme çalışması içinde. İnsan davranış kalıplarının keşfi ile daha zeki  Bilgisayar Kullanıcı Arabirimi geliştirmeyle uğraşıyorlar. Hatta patent başvurularıda varmış. Anlatımlarıda interaktif di. Pek çok açıdan zihin açıcı ve yenilik dolu bir konuşma olsada benim şahsi fikrim  Beyin bilgisayar arayüzleri  daha ümit vadediyor....

Nazlı İKİZLER CİNBİŞ  hoca konuşmasında değişik şekilde kaydedilimiş görüntü ve videolardan "İnsan Hareketlerinin Tanınması" konusundaki çalışmalardan bahsetti. Konu çok genişdi ve teknik ip uçları dışında pek bir şey anlayamadık. Başlıca anlaşılan şey pek çok veri seti üzerini uzun uzun çalışmalar yapılmış olması...

Fatoş Yarman Vural  hoca "Bilgisayar Ne Kadar Görür?" konulu konuşmasıyla bizi hayran etti. Bir konu bu kadar mı sade ve anlaşılır anlatılır ?  Kendi yaptığı çalışmalardan da bahsetti. Bunlardan biride "Osmanlı arşivlerinin transkripti" imiş . Yarım kaldığını söyleyi talebe arkadaşlara devam etmelerini tavsiye etti.  Sözlerinide  "Yapılacak daha çok şey var çok çalışmak gerek çook" diye bitirdi Sonunda soru olarak Yapay zekanın tehlikeli olup olmadığı soruldu. Ve klasik cevabı aldık ; "Teknoloji iyiyede kötüyede kullanılabilir." Haddim olmayarak benim ufak bir itirazım var. bu klasik açıklama Bir bıçakla ekmekde kesebilirsin bir insanıda yaralayabilirsin. birini yarayabilirsin diye bıçak yapılmasınmı.  şeklinde vuzuha kavuşturuluyor. Benim itirazım şu biz neyi keseceğene kendisi karar verecek bıçak icat etmeye çalışıyorsak evet bu iş tehlikelidir. değilse klasik açıklama geçerlidir.

Umut Çinar beyin sunumu başında konu dışındaydı. Sadede geldiği zaman güzel oldu. Keşke baştaki kısımlara hiç girmeyip asıl konusunu daha geniş  anlatsaydı. Çünkü gerçek anlamda pratik tecrübe sahibi  hem teknik hemde girişimcilik ve onun hayata geçirilmesi anlamında....

Selim Temizer hoca da  çok sade anlaşılır ve de eğlenceli şekilde bir Yapay Zeka girişdersi verdi. Yapay Öğrenme kısmını biraz daha açsaydı daha iyi olurdu sanki.

Uğur Yayan beyde daha çok robotik üzerine bir şeyler anlattı.Aslında sektörden gelen konuşmacalardan ben kendi adıma daha pratik şeyler ve tecrübe aktarımı bekliyorum....

Son konuşmacı gelemedi yarına erteleneceği duyruldu.  Bakalım Yarın neler olacak heycanla bekliyoruz.

Cumartesi, Nisan 25, 2015

YAZGİG'15 Yapay Zeka ve Görüntü İşleme Günleri

 YAZGİG'15 :  Yapay Zeka ve Görüntü İşleme Günleri

 yapayzekavegoruntuislemegunleri.com
Ankara Üniversitesindeki aynı isimli bir öğrenci topluluğunun ön ayak olduğu bir etkinlik.
Önümüzdeki hafta sonu gerçekleştirilecek yani ; 2-3 Mayıs 2015
Nedense programı halen belli olmamakla birlikte katılacak Konuşmacılar şöyle bildirilmiş.
 Prof. Dr. Fatoş Vural
Dr. Zafer Arıcan
Yrd. Doç. Dr. Selim Temizer
Ümit Alkuş
Yrd. Doç. Dr. Sanem Sarıel
Yrd. Doç. Dr. Ahmet Yazıcı
Doç. Dr. Uluç Saranlı
Yrd. Doç. Dr. Sevgi Zübeyde
Prof. Dr. Abdülkadir Erden
Yrd. Doç. Dr. Nazlı İkizler Cinbiş
Doç. Dr. Metin Sezgin
Memleketimizde malesef böyle konularda bir şeyler dinleyebileceğiniz fazla imkan bulunmamaktadır. Bu yüzden çok önemli bir işiniz yoksa bu etkinliği kaçırmamanızı tavsiye ediyorum. Bizde İnşallah dinlemeye gideceğiz.
Etkinlikte görüşmek üzre....

Not : Ben yazı yazdıktan sonra etkinlik programı belli  oldu
 http://yapayzekavegoruntuislemegunleri.com/etkinlik-programi/

Pazar, Nisan 19, 2015

Çoğu zaman göremesekde

Nedendir bilinmez çıkmaza düşmeyi pek severiz. Hali hazırda yoksa kafamızda kurarız. Sonrasında çıkmazın içinde debelenmekle geçer hayatımız. Bunalımdan bunalıma düşeriz. Bir gölge düşmüştür önümüze ne denli koşsak geçemeyiz gölgeyi. Gönlümüzde bir sıkıntı vardır geçmez bir türlü...
Çoğu zaman bilemesekde  önümüze düşen gölge bizim gölgemizdir.  Güneşe sırtımızı dönmüşüzdür.
Çoğu zaman göremesekde her zaman bir  çıkış vardır. Başka bir açıdan bakamadığımızdan göremiyoruzdur.
Çoğu zaman anlayamasakda gönlümüzdeki sıkıntıyı  "Müsebbibü’l-Esbab"* dan başka giderip "itminanı kalbi"** ,  "inşirahı sadrı"***  verebilecek yoktur...

Rabbimiz dünyadada ahirettede bizlere iyilik ve güzellikler ver. Gönlümüze ferahlık ver.  Çıkışları görecek feraset ver.
amin

Not :
Çizgi  Hasan Aycın
*      : 1. Lema
**    :  Ra'd 28
***  :  İnşirah

Pazar, Nisan 12, 2015

MNIST El Yazısı Rakam Veri seti

Kitap taslağını bitirdikten ve düzenlemesi için arkdaşa teslim ettikten sonra geçtiğimiz ve bu hafta sonu kendime meşgale aradım.

Kitap için yazdığım son konu ML yapay öğrenme kısmıydı. Bu örneği biraz geliştirip bu camiada epey bir bilinen MNIST verisetine uygulamaya karar verdim.

MNIST El yazısı rakamlar toplanmış ve etiketlenmiş bir veri setidir. Her rakam görüntüsü 28x28 lik ebata getirilmiştir.



 Yani verimiz 28x28= 784 piksel değeri ve birde etiket değeri
Veri setinin orjinal sitesi
http://yann.lecun.com/exdb/mnist/
Fakat Biz Kaggle da açılmış yarışma kısmına katıldık
www.kaggle.com/c/digit-recognizer
Bu sayfada veriler 2 tane csv dosyası olarak veriliyor.
Eğtim verisi için İlk satırda sütun başlıkları var ilk sutun etiket değeri sonraki 784 sutunda sırasıyla piksel değerlerini tutuyor.
Test verisinin tek farkı ilk sutun olan etiketlerin olmaması...

İlk etapta piksel değerlerinde bir ön işleme veya ekstra öznitelik çıkarım işlemleri  yapmadan doğrudan kullanarak Yapay Öğrenme metodlarımızın performansını görelim dedik.

Eğitim verisinin yarısını eğitim ve geri kalanını test için kullandık. Sonuçlar %83 - %95 arasında değişti. En iyi sonucu KNN K = 5 ile ve bütün eğitim setini kullanarak elde ettim.
Birde boyumuzun ölçüsünü alalım dedik. Eğittimiz modellerle  Yarışmanın test verileri - test.csv- için tahmin listesi oluşturup gönderdik.  Burda sonuçlar daha aşağı değerlere düşüyor. Bizim şu andaki en iyi derecemiz.
0.92343
Başarı Sıra Listesi için bakınız
www.kaggle.com/c/digit-recognizer/leaderboard
Sıralamadaki yerimiz değişiyor. Daha iyi dereceye sahip tahminler geldikçe sırlamada aşağılara düşüyorsunuz.
Aldığımız boy ölçüsü oldukça kısa oldu. Sebeplerine gelirsek

1) Veriler üzerinde ekstra bir ön işleme ve öznitelik yapmamış olmamız. Verilerimizde piksel değerleri var ama Rakamın yazıldığı pikseller devamlı değişmektedir. Çünkü rakamın yazılış konumu büyüklüğü dönüklüğü keza tarzı değişiyor. Haliyle bunuları dikkate almadan bu verileri ham haliyle vermek sistemin performansınıaşağı çekiyor.

2) Her modelin eğitiminde performansı etkileyecek parametre ayarları vardır. Aynı metodu bile kullansanız bazı parametrelerdeki ince ayarlar sistemin performansını artırabilir. Biz ise bu tür ayarlarada kalkışmadık henüz.

3) DeepLearning etkisi: Yakın zamanların gözde kavramı dünyanın saygın üniversiteleri. En büyük şirketleri bu konuda araştırma gurupları kurdular. Hali hazırda pek çok kütüphanede oluşturuldu.  Bu kütüphaneleri kullananlar. Listelerde üst sıralara oturuyorlar. Bu da sıralamda bizi daha aşağıda tutuyor.

Sıralama listesinde ilk 48 kişi %99 başarıya ulaşıyor. şimdi burda ufak bir itirazım var. Yukardaki resimler veritabanından seçilmiştir. Şahsi fikrim böyle bir başarı saçmadır....
Detaylı bilgiyi bu konu hakkında inşallah - vakit ayırabilirsem - yazacağım yazıya bırakalım.

Pazar, Nisan 05, 2015

Kitap Ana Taslak hazır !

Kitabımızın ana taslağını Allaha şükür bitirebildim.

Kabaca düzeni şu şekilde oldu

Genel kurulum aşamaları; Derleyici ve IDE ayarları dizin ayarları vb açıklamaların olduğu giriş kısmı

  • DERS 1 Görüntü Okuma Yazma İşlemleri ( imread, imwrite, VideoCapture... )



  • DERS 2 Matris İşlemleri cv::Mat üzerine işlemler ( create , clone , rowrange, colrange, ROI , drawing line circle,...


DERS 3 Renk Uzayları ve Filitreleme  - XML okuma yazma - ( RGB, HSV,... )


  • Ders 4 Morfolojik İşlemler ( Erode, Dilate,... )



  • Ders 5 Filitreleme  İşlemleri ( Filter2D, blur,..,sobel,..canny, threshold...)



  • Ders 6 Bilgi Çıkarma ( findContours , Histograms , Houghline and Houghcircle )


  • Ders 7 Geometrik Dönüşümler ( resize , rotate , affine, perspective )


  • Ders 8 Arka plan silme ( BacgroundSubtraction )



  • Ders 9 İki boyutlu Öznitelikler ve Eşleştirilmeleri ( Feature2D )



  • Ders 10 Nesne Bulma



  • Ders 11 Takip ve Optik akış metodları ( opticalflow, camshift,...)



  • Ders 12 Yapay Öğrenme - Machine Learning ( EM, Bayes, KNearest, DTree, SVM, ANN_MLP,... )




Ama daha yapılması gereken çok ince iş var
  • Taslağın genel anlamda düzenlenmesi
  • Yazım hatalarının düzeltilmesi
  • İfade bozukluklarının düzeltilmesi
  • Resimlerin düzenlenmesi
  • İçindekiler ve İndeks kısmının oluşturulması

Evet biliyorum bunlar daha çok editörlük işler. Ama mecburen yapmamız gerekiyor.  Çünkü Yayınevleri verdikleri kalıba uygun düzenlenmiş metinler istiyorlar. Estetik duygum, gramer bilgim ve edebiyatım pek iyi değil, Sağolsunlar yardımcı olacağını söyleyen arkadaşlar oldu. Onların yardımıyla İnşallah bu aşamayı da geçeriz...

Girişmlerimiz devam etsede, Malesef kitabın basımı için pek iyi gelişmler yok. Yayınevleri görebildiğim kadarıyla basıma hazır metin, Öğrencileri alma zorunda bırakacak akademik ünvan vb... şeyler istiyorlarki, kitabınızı basma lutfunu göstersinler....
 Bu konuda da yardımcı olacağını söyleyen arkadaşlar oldu. Onlardanda sevindirici haberler beklemekteyiz...

Neyse lafı daha fazla uzatmadan değişik vesilelerle bana ulaşıp kitabın durumunu soran arkdaşlara teşekkürler deyip son durumu böylelikle açıklamış olalım.

Dualarınızı esirgemeyiniz....

Perşembe, Ocak 08, 2015

Mbed - 1

Programlama ile uğraşıpda gömülü sistemler için hiç heves etmemek mümkün değil. Bende Yıllardır heves eder dururdum. Değişik girişimlerimde olmadı değil fakat kayda değer bir şey çıkmamışdı.

Geçenlerde "mbed" ile tanıştım.


 https://mbed.org/
ARM Firmasinın tasarladığı işlemcileri duymayan yoktur.  Kullandığınız pek çok mobil cihazda bu işlemciler kullanılmaktadır. Keza Embeded - Gömülü  - sistemlerde de yaygın olarak kullanılmaktadır. İşte mbed, ARM-Cortex M mikro denetleyicisinin programlanması için tasarlanmış bir sistemdir. İçeriğinde RTOS ve Temel kütüphaneleri (SDK) içeren açık kaynak kodlu bir projedir.
github.com/mbedmicro/mbed
Şeylerin İnterneti diye çevrilmiş  "Internet of Things" kavram için tasarlandığı  ve bu tip işlemcilerle bu kavrama uyan cihaz geliştirmenin en kolay yolu olduğu söyleniyor
http://www.arm.com/products/internet-of-things-solutions/mbed-IoT-device-platform.php

Pek çok büyük firma tarafından destekliniyor

ARM-Cortex M  mükrodenetlicilerin lisansını hali hazırda 240 firma almış bulunuyor.
Lisansı Apache 2.0 dir yani ticari uygulamalarınızda da kullanabiliyorsunuz.
Programlama dili olarak C/C++ temelli ve derleyici ve IDE aramanızada gerek yok Online IDE si var
 developer.mbed.org/
burdan ücretsiz üye olup Programlamaya başlaya bilirsiniz.  Pek çok uyumumlu IDE de var elbette.
Tabii Öncelikle bir cihazda almanız lazım

Piyasada mbed 'i destekleyen - mbed enabled diye geçiyor -pek çok geliştirme kartıda mevcut.
developer.mbed.org/platforms/

Türkiyede satışını bulduğum yegane yer market.cizgi.com.tr burdan ST firmasının "ST Nucleo F401RE Geliştirme Kiti" satın aldım fiyatı çokda pahalı değil.
Özelliklerine gelirsek
  • ARM Cortex-M4 CPU with FPU at 84MHz 
  • 512 KBytes Flash
  •  12 bit Analog Dijital çevirici kanallar  - 10 kadar -
  • 16 kanal Dijital I/O
yani 10 kadar sensörden analog sinyal alabiliyoruz. ve  16 tane devre kapatıp açabiliyor (DigitalOut) yada açıkmı kapalımı diye öğrenebiliyoruz (DigitalIn)
Piyasa da epey bir yaygın olan Ardunio 'nun Arduino Uno Revision 3 bağlantılarıyla uyumlu.
USB den cihazı bilgisayara bağlayıp programı atabiliyoruz
Cihaz bağlandığında Bilgisayarda sanal bir com port açılıyor. Burdan cihazdan bilgisayara bilgisayardan cihaza bilgi gönderebiliyoruz.

mbed 'in sitesinde pek çok  örnek kod  bulabilirsiniz.
MCUTurkey sitesinde de iki yazı var 1 2
Burda da güzel videolar var ; mBed Microcontroller Tutorials 
Şöylede bir ilginç Örnek var
Kahve kavruma makinası yapmışlar

Bakalım biz neler yapabileceğiz...