LinkedIn FriendFeed Twitter

Image Processing HW_1

by Ordinaryus 25. February 2009 23:01

Bu dönem yüksek lisanstan aldıgım ders İngilizce oldugundan bende ödev için yazdıgım raporları buraya tasıdıgım zaman ingilizce yazıcagım. Odevlerde yaptıklarım dısındaki yazılarım gene türkçe olmaya devam edicek.

We aim to calculate intensity values on the sphere. The way the calculating corresponding pixel value is Lambertian method.  So that it can be found spheres intensity in different placement of the source. By the way this intensity value and camera coordinates will give us a idea about the shape of the planes.

With this motivation it is important to understand how Lambertian method works. Which rules it is based on?

 
 
            To calculating the intensity we first need to know the surface normal vectors all over the plane. Using this we can use the vector of source and apply our rule for the intensity 

As in the picture slope of the surface in x and y directions are used to compute normal vector of the point. Using this two vector and vectorial product of this two vector we can know the surface normal vector.

 

 

 

            This cosine value is related with the intensity of the plane we use these values for the different points of the plane we can obtain the view of the sphere from the given location of the light source.

            This cosine value is between -1 and 1, so we have to transform this to the color space which takes values between 0 and 255. So multiplying this cosine value with a constant and adding some value for initial conditions. As a constant I used 127 and added 128 to this value to make the range between 0 and 255.

            Camera is located -100<y<100 and-100<x<100 space where radios of the sphere that camera locate on is 200px. We can use different radios for camera which can be an advantage for observing the change of the intensity on the surface. If the camera close the surface of the sphere the change of intensity is higher.

            For this problem I made an GUI with C#. There are two slide bar for coordinates of the camera and our view for the sphere is shown for this value. We can find views for many different locations. And also I made an saving image option so we can save the images on local drive.


           Neyse efendim sonuçları görelim. Laughing

Tags:

Image Processing

Imagine Cup Geri Sayımlar Başladı

by Ordinaryus 22. February 2009 03:41

 

 

 

Imagine Cup içerisinde geri sayımlar başladı. Katagorilerin Mart ayı içerisinde elemeleri yapılacak ve devam edenler belli olucak. Bende Imagine Cup Gömülü Sistem Katagorisi olarak son hatırlatmaları yapmaya başladım. Neyazıkki kendi projem diğer işlerim nedeniyle yetişemeyecek fakat önümüzdeki yıl son sınıf olmanın verdiği rahatlık ile çok daha sağlam bir proje ile katılacagım. 

 

 

Tags:

RENK MODELLERI

by Ordinaryus 14. February 2009 01:54

 

İnsan gözünün yapısından ötürü renkler ana renkler olarak adlandırılan Kırmızı, Mavi ve Yeşil renklerinin kombinasyonları olarak ifade edilebilirler. RGB renk modeli olarak bilinen model görüntü işlemede en sık kullanılan sistemdir fakat belli sorunlara çözüm üretmek için diğer modellerinde avantaj sağladığı yerler olmaktadır. Kısaca en sık kullanılan renk modellerinden burada bahsedeceğim. Renk uzayları arasında belirli dönüşüm fonksiyonları kullanarak istediğimiz  özelliklere sahip renk modelleri türetebiliriz.

            RGB Renk Modeli     

            Bu renk modeli kırmızı, yeşil ve mavi renklerinin adlarının ilk harflerinden oluşmuştur. Kartezyen koordinat sistemi üzerine yerleştirilen bu modelde her bir eksen bir renge karşılık gelmektedir. Her bir eksendeki değerler 0-255 arasından değişmektedir.  Örnek olarak (0,0,0) noktası siyah renge karşılık gelmektedir.

 

                HSV Renk Uzayı

            HSV (Hue, Saturation, Value) renk uzayı RGB uzayına göre renklerin sertlikleri ve parlaklıkları ile ilgili işlemler daha önem kazanıyorsa yoğunlukla kullanılmaktadır. RGB uzayındaki küp şeklindeki Kartezyen koordinatlardan ziyade HSV uzayının koni şeklinde uzay modeli kullanılmaktadır.  HSV renk uzayında belirli Hue değerleri ile istenilen renkler farklı tonlar ile elde edilebilebiliyor. 

RGB uzayı ile HSV arasındaki dönüşüm işlemlerinde aşağıdaki formüller kullanılmaktadır.

 

HSL Renk Uzayı

            HSL renk uzayı Hue, Saturation ve Lightness olarak isimlendirilmiştir. Farklı bir uzaysal düzendedir. HSL uzayı ile RGB arasındaki dönüşüm formülleri aşağıdaki gibidir.

 

Bunların haricinde CMYK ve YUV renk uzayları da bulunmaktadır fakat bunlar RGB ve HSV kadar sık kullanım alanına sahip değildir.

 

Tags:

Image Processing

ASPNETDB Problemi

by Ordinaryus 14. February 2009 00:40

 

Geçtiğimiz haftalarda bu kullanışlı ancak sorun yaşadığım veritabanı hakkında çırpınırken öğrendiklerimi acı bir dillede olsa anlatayımCry

aspnetdb veritabanı asp.net ile geliştirdiğim bir proje içerisinde membership kısmını yazmaktan kurtulmak amacıyla kolaycılığa kaçmam sonucunda tanıştığım bir sistem. Burada hazır login, password reminder gibi toollar bu veritabanı ile çok guzel sekilde çalışmakta httpcontent ile siteye login olmuş kullanıcıların bilgilerine ulaşmak oldukça kolay olmkataydı.

Ancak... tam projeyi bitirdim localde sorunsuz çalışıyor, artık tatile gidebilirim dediğim anda sunucuya attığımda sorunlarda oluşmaya başladı ve 3gün izmirde proje için çalışamasamda içim içimi yedi.  Sorun aslında basitti hata kodunu görünce anladım ama ihmal ettiğim bazı özel durumlar daha sonra tüm membership sistemini yok edip kendi usercontrollerimi ve session yonetimimi yazmamı gerektirdi.

Hata kodu 26: uzak makineye bağlanamıyor gibi bir hata veri tabanıyla olan bağlantının sağlanamamasından doğmuştu. Localde çalışırken sorun yoktu çünkü aspnetdb veritabanı için olan işlemler app_data altındaki veritabanına gidiyor ve localimde kurulu sqlde sorunsuz çalışıyordu. Ancak sitenin barındırıldığı sunucuda BIDB haklı olarak web ve veritabanı sunucularını ayırmıştı. İşte burdan sonra yapılacakları araştırdım.

İki alternatiften söz ediliyordu. İlki aspnet_regsql.exe ile komut satırında çalıştırılan arayüz üzerinden bu veritabanının kurulması işlemidir. Zaten aynı şey bir bakıma localde çalışırkende yapılabilir fakat eğer benim yaşadığım gibi bir sorun varsa.. meselasql sunucusunda yetkileriniz sınırlıysa ozaman tablo yaratamazsınız. Bu durumda başka çözümler aramak gerekti. Mesela tabloyu attach etmek gibi buda bendeki management studionun express edition olmasından ötürü mümkün olmadı sanırım. Belkide ben yeterli araştırma yapamadım hala öğrenemedim.

Sonrasında localime bu veritabanını kurup scriptleri ürettirdim ve sitenin sql sunucunda çalıştırdım ama gene yetkilerle alakalı olarak buradada hata meydana geldi..

Sonrasında ben ne yaptım.Laughing Forza amelelik dedim Smile Oturdum ne kadar hazır tool varsa attım ve kendi usercontrollerim veritabanıma ek sutunlar procedurler yazarak sorunu kısa sürede çözdüm. 

Bunlar tabi tam tatile çıkabilirim artık dediğim günn yaşandığından hiç iyi bir tecrube değildi ama bazen en acı ilaçlar hastaya en yarar sağlayanilaçlar olabiliyor. Kendi adıma pekçok seyöğrendim derste aldım hatta Smile

Tags:

.NET

OPENCV KURULUMU

by Ordinaryus 13. February 2009 02:51

Başlangıçta OPENCV kurulumu ve kullanımı için biraz zorlandım. Visual C++ 6.0 ile kurulumu yaparak çalıştım. OPENCV resmi sitesinden indirdiğim kütüphaneyi kullanıma hazırlamada izlediğim yollar:

1.      OPENCV Kurulumu

a.      OpenCV_b4a.exe” dosyasını çalıştırdım

b.      Karşıma çıkan penceredeki “Add <...>\OpenCV\bin to the system PATH” işaret kutucuğunu işaretlenmemiş olarak bıraktım

c.       Kütüphaneyi “C:\Program Files\Microsoft Visual Studio\OpenCV” dizinine kurdum.

2.      Dosyaların Kopyalanması

a.      İndirdiğim Vc98.zip dosyasını genişlettim

b.      “VC98\Include” klasöründeki dosyaları “Program Files\Microsoft Visual Studio\VC98\Include” klasörüne, “VC98\Lib” klasöründeki dosyaları ise “Program Files\Microsoft Visual Studio\VC98\Lib” klasörüne kopyaladım.

c.       “C:\Program Files\Microsoft Visual Studio\VC98” dizininde bulunan MSCREATE.DIR dosyasını “VC98\Include” altında bulunan dosya ile değiştirdim.

d.      “Program Files\Microsoft Visual Studio\OpenCV\bin” dizinindeki “cv096.dll”, “cvaux096.dll”, “cvcam096.dll”, “cxcore096.dll”, “highgui096.dll”dosyalarını “WINDOWS\System32” klasörüne kopyaladım.

3.      Sistem Konfigürasyonu

a.      Bilgisayarım özelliklerinde Gelişmiş sekmesinde yer alan Ortam değişkenlerine

                                                                                      i.      include değişkenini “%Program Files\Microsoft Visual Studio\VC98\include”

                                                                                    ii.      lib değişkenini “%Program Files\Microsoft Visual Studio\VC98\lib”

                                                                                  iii.      path değişkenini “%Program Files\Microsoft Visual Studio\Common\Tools\WinNT; %Program Files\Microsoft Visual Studio\Common\MSDev98\Bin; %Program Files\Microsoft Visual Studio\Common\Tools; %Program Files\Microsoft Visual Studio\VC98\Bin”  değerleriyle ekledim.

b.      Sistem değişkenlerine ise Path değişkenini “%Program Files\Microsoft Visual Studio\OpenCV\bin” değeriyle ekledim.

4.      Visual Studio Konfigürasyonu

a.      Visual Studio’da yeni bir proje yaratıp proje özelliklerini açıp link sekmesindeki “Win32 Debug” ayarlarını değiştirmem gerekti.

b.      Burada “Object/library modules” altına “cv.lib cxcore.lib cvaux.lib highgui.lib cvcam.lib” .lib dosyalarını, Project Options bölümünde ise “/nologo” değerinden önce “cv.lib cxcore.lib cvaux.lib highgui.lib cvcam.lib” .lib dosyalarını ekledim.

 

Bunun haricinde Dev C++ ile çalışmak bazı noktalarda daha kolay olabiliyor. Derleyici ayarlarından OpenCV adından bir derleyici oluşturup OpenCV ayarlarını saklamak mümkün. C++ 6.0 maalesef her yeni projede ayarları yapmak gerekiyordu.

Tags:

Yazmak için bahane

by Ordinaryus 13. February 2009 02:21

 

Uzun zamandır görüntü işleme konusunda çalıştıklarımı yazmayı planlıyordum. Dokumanlaştırayım ve bunları burada dağıtayım diyordum. Pekçok kaynaktan okuduklarımı sentezleyip birseyler yazmak karsılaştıgım sorunları paylaşmak istiyorum.

Bu dönem İTÜ Bilişim fakultesinden almakta olduğum yüksek lisans dersi BBL588E sayesinde ödevlerimi yaparken biryandanda bloguma bunları yazmaya karar verdim. Geçmişteki çalışmalarımı çabucak derleyip buraya aktarıcagım. Derste öğrendiğimiz matematiksel kısımlarıda burada yazmak oldukça önemli olucaktır. 

OpenCV libraryleri ile C++ olarak yazmaya başladığım kodları burada anlatarak ve çalıştığım diğer projeleride kısaca açıklayarak bu bölümü dolduracağım Laughing

Tags:

Fizy - Music Search

by Ordinaryus 10. February 2009 23:05

 

Gecen gun öğrendiğim ve oldukça beğendiğim bir müzik arama hizmeti. Buradan dinlemek istedğimiz şarkıları aratarak dinleyebiliyoruz. Arşiv olarak zengin bir kaynak var gibi gözüküyor.

http://fizy.org adresinden ulaşmak mümkün.

Tags:

Manu Delago

by Ordinaryus 10. February 2009 00:40

 

Facebookta şans eseri rastladıgım bir videoda dinledim ilk defa bu çalgıyı ses olarak nasıl oldugunu anlamadıgım bir mistik hava veriyordu. Biraz araştırdım (hatta kursu varsa gitmeyi bile düşündümLaughing)  Alet 2 isviçreli adam tarafından icat edilmiş tanesi 1500$ civarı gidiyormus. Bende hemen bu sevdamdan vaz geçmek zorunda kaldım ama iyi bir dinleyici olmaya devam ediyorumLaughing

 

Video gömemiyoruz sanırım sayfalara BlogEngine içerisinde bende mecbur linkini veriyorum ;

Tags:

YSA - 5

by Ordinaryus 10. February 2009 00:30

 

Öğrenme işleminin hızını ve verimliliği birkaç değişkenin değerine bağlıdır bunlar: öğrenme oranı, momentum terimi, gizli katman sinir sayısı ve hata fark değişkenleridir.

·         Öğrenme oranının ağ üzerideki etkisi

Öğrenme oranının değeri öğrenme işleminin süresini belirlemede önemlidir.  Öğrenme işlemindeki adım sayısı öğrenme oranının arttırılmasıyla azaltılmaktadır.

 

·         Momentum teriminin ağ üzerindeki etkisi

Momentum teriminin katılması adım sayısında azalmaya ve öğrenme işleminin kısalmasına sebep olmaktadır. Momentum değer, yüksek alındığında ağdaki toplam hatanın sıfıra daha hızlı bir eğimle yaklaştığı gözlenmiştir.

 

·         Gizli katman sinir sayısının ağ üzerinde etkisi

Ara katman sinir sayısı öğrenme sırasında belleğe yük bindirmek ve işlemciyi yormak haricinde öğrenme işleminin dahi iyi yapılmasını sağlamaktadır. Bu nedenle ara katman sinir sayısı belirlenirken deneme yanılma yapılmaktadır.

 

·         Hata farkı değişkeninin ağ üzerindeki etkisi

Bunu tolerans olarak ta adlandırabiliriz. Tolerans arttıkça yapılan hatalar artmakta ağırlıkların hassasiyeti azalmaktadır. Fakat eğitimin süresini ve adım sayısını arttırmaktadır.

 

Backpropagation algoritması N parametre için N+1 boyutlu bir uzaydaki N değişkenli bir yüzey üzerinde gezinmekte ve hatanın minimum olduğu noktayı aramaktadır. Burada bulunulan noktanın her bir parametreye göre türevi tüm uzayda alınmaktadır. Daha sonra ağırlıklar güncellenmekte ve nokta eski noktaya yakın bir noktadan devam etmektedir. Fakat bu işlem çok uzun sürmektedir ve yüzey üzerinde daha hızlı gezebilmek için momentum katsayısı denilen kavramlar kullanılmaya başlanmıştır. Fakat bu da bellek ihtiyacı doğurmaktadır.

 

RPROP ALGORİTMASI    

            RPROP algoritması da backpropation mantığıyla hareket eden bir algoritmadır. Farkı diğer algoritmada olduğu gibi optimal değere ulaşmaya çalışırken optimum noktanın etrafındaki işaret değişikliklerini takip etmekte ve buna göre nokta etrafında osilasyona girmeyi önleyecek şekilde adımları güncellemektedir.

            Bu yöntem 3 önemli optimizasyon algoritmasının en avantajlı yönlerinin birleştirilmeye çalışılmasından doğmuştur. Bunlar gradyent düşüm modeli, backpropagation ve Levenberg-Marquardt optimizasyon kurallarıdır.

 

Böylece YSA serisinde yazdıklarımın sonuna gelmiş oldum. Yazın Nescafeye abanarak okudugum dokumanlardan sonra aldıgım notlardan oluşan bu dokumanlar sanırım giriş aşamasındaki insanlar için belli bir alt yapı oluşturmustur. Bundan sonra bende Yapay Zeka seruvenime PROLOG bakarak devam edeceğim. Öncesinde Yazdıgım Karar Ağaçları ve Expert System notlarınıda burada paylaşmayı planlamaktayım. Bu dokumanların oluşumunda okuduğum ve tavsiye edeceğim kaynaklarıda vermekte fayda görüyorum.

 

KAYNAKLAR
·         http://en.wikipedia.org/wiki/Adaptive_system
·         http://en.wikipedia.org/wiki/Backpropagation
·         http://ieee.uow.edu.au/~daniel/software/libneural/BPN_tutorial/BPN_English/BPN_English/
·         http://www.eee.metu.edu.tr/~alatan/Courses/Demo/BackPropagation.htm
·         http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html
·         http://www.learnartificialneuralnetworks.com/backpropagation.html
·         http://www.seattlerobotics.org/encoder/nov98/neural.html
·         http://www.neuromod.org/courses/connectionism1999/backpropagation/
·         http://gpdev.net/
·         “RPROP using natural gradient”, Christian Igel
·         Optimization of the Backpropagation Algorithm for Training Multilayer Perceptrons W. Schiffmann, M. Joost, R. Werner
·         http://europa.eu.int/en/comm/eurostat/research/supcom.95/16/result/node23.html
·         Average monthly liquid flow forecasting using neural networksC. Barbălată* and L. Leuştean**
·         http://en.wikipedia.org/wiki/Reinforcement_learning
·         http://www.yapay-zeka.org/modules/wiwimod/index.php?page=ANN&back=WiwiHome
http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html

 

 

 

 

 

 

Tags: ,

Neural Networks | Yapay Zeka

YSA - 4

by Ordinaryus 10. February 2009 00:12
BACKPROPAGATION ALGORİTHM
 

Yukarıdaki gibi bir multilayer feedforward network kademeli yapıya sahiptir. Ağ yapısında en az bir gizli katman bulunmaktadır. Ve her kademe alt katmanlardan girişleri alıp bir sonraki ünite yollayan elemanlara sahiptir. Kademelerdeki nöronlar arası hiçbir bağlantı yoktur. Kademedeki nöron sayılarının belirlenmesi ayrı bir problemdir. Burada nöron sayısı arttıkça öğrenme artmasına rağmen süreç uzamaktadır.

Geri yayılım ağında hatalar, ileri besleme aktarım işlevinin türevi tarafından, ileri besleme mekanizması içinde kullanılan aynı bağlantılar aracılığıyla, geriye doğru yayılmaktadır. Öğrenme işlevi, bu ağda basit çift yönlü hafıza birleştirmeye dayanmaktadır.

Geri yayılımlı öğrenme yöntemi, türevi alınabilir etkinlik işlevlerini çok katmanlı herhangi bir ağa uygulayabilir. Delta kuralı gibi, buda sistem hatasını veya toplam hatayı azaltmaya dayalı bir optimizasyon işlevidir. Bu ağda girdi katmanlar üzerinde hesaplanarak ilerler ve çıkışta belli bir değer elde edilir ve bu değer beklenen değerle karşılaştırılarak belli bir hata bulunur ve bu hata geri besleme ile önceki nöronlar üzerinden başlangıca kadar taşınır. Toplam hata minimuma inene kadar bu işlem tekrarlanmaya devam eder. Bu işlemin nasıl gerçekleştiğini aşağıdan daha iyi anlayacağız. Örnekte aşağıdaki gibi üç girişli bir çıkışlı ve 1 tabaka gizli katmanı olan bir sinir ağı modelini kullanacağız.

 

Örnek bir sinir hücresinde verilen girişlere karşı ürettiği çıkışın nasıl olduğu gösterilmiştir. Yapay sinir ağlarını eğitmek için eğitim verilerine ihtiyaç vardır. Aşağıdaki şekilde x1 ve x2 eğitim verilerini oluşturmaktadır ve buna karşı bir z çıkışı beklenmektedir. Yapay sinir ağlarında girişlere karşı iteratif işlemler sonucu oluşturulan w değerlerinden burada tekrar bahsetmeyeceğim.

 

 

Giriş sinyallerinin çıktıları gizli katman nöronlarına gider burada gelen toplam sinyaller işlendikten sonra bir sonraki katmana aktarılır.

 

Son katmana aktarılır ve burada hata hesabı yapıldıktan sonra geri aktarım işlemi başlar.

 

Son katmanın çıkışı beklenen değerlerle karşılaştırılır ve elde edilen hata sisteme geri besleme olarak aktarılır.

 

Bu aşamada elde edilen hata değeri sistemde backpropagation metoduyla geri yollanır ve olası hatayı azaltmak için katsayılar güncellenir. Bunu yapmamızın sebebi gizli katman nöronların çıkışları ile ilgili verileri kullanamıyoruz. Bu sorunu gidermek üzere zaten geri yayılım metodu geliştirilmiştir.

 

Çıkış nöronunda ulaşılan hata gene ara katman ağırlık katsayıları kullanılarak bu kez tersi yönde ilerlemektedir böylece giriş nöronuna kadar işlem devam ettirilir ve buradan itibaren katsayılar güncellenmeye başlar.

 

 

Tüm nöronlarda hata fonksiyonu çalıştırıldığında başlangıç düğümlerinin ağırlıkları aşağıda belirtilen formülle güncellenir. Daha sonra bu güncellenmiş hali ile ağ üzerindeki tüm bağlantılar güncellenir.

 
 

NOT: Resimler yabancı bir kaynaktan alıntıdır. Ancak üzerinden uzun süre geçtiğinden kaynağı hayırlamıyorum
 

Tags: , ,

Neural Networks | Yapay Zeka

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

Ordinaryus Hakkında

Hayata gözlerini İzmirde açtı. 3 yaşında legolarla oynadı =) Küçük yaşta baskete başladı zaten başka sporlarla arası hiç olmadı. Orta okulda matematikle ilgilendi. Liseyi Karşıyaka Anadolu Lisesinde okudu. 

İTÜ Elektronik Mühendisliğinden 2010 yılında mezun oldu. Fizik bölümünde çift anadala kabul oldu lisans hayatına Fizikten devam etmekte. Koç Üniversitesinde Bilgisayar Mühedisliği Master programına kabul edildi ve akademik hayatının ilk adımlarını sevdiği bir alanda çalışarak atıyor. Fizik ve Bilgisayarın ortak noktalarını gördü ve bunları geliştirmek amacıyla çalışıyor.

Yazılımı sevdi.. Başlarda herşeyle ilgilendi web programlama da yaptı, sokette programladı yeri geldi ağ yönetimi ile uğraştı. Görüntü işlemeden keyif aldı Makine Öğrenmesi ve Örüntü Tanımada kendisini geliştirmeyi istemekte.

2008te MSP oldu belkide bu blogu yazmaya başlamasında en büyük etken=) Bu görevi 2 sene boyunca sürdürdü. Bir yandan 2008de EuroSkillsde Mobil Robotik alanında Türkiyeyi temsil etti. Ardından 2009da Kanada da tekrardan yarışmacı olarak bulundu. Artık bu alanda hakemlik yaparak ve Robotino hakkında öğrendiklerini paylaşarak faydalı olmaya çalışıyor. 

Yapay Zeka, Görüntü İşleme, Kuantum Mekaniği, İstatistik Mekanik ve Bilişsel Bilimlerle ilgili. Geceleri kafasına göre takılıyo. Sabahlarıda öğrencilik yapıyo =)

gibi gibi... 

 

Page Rank

Loading

Google Translate


Şuan ne okuyorum

Bilişsel Psikoloji

Singularity is Near


Ayrıca okuduklarımdan seçtiğim kitaplara buradan ulaşabilirsiniz..

Okuduklarımı üye olarak takip etmek için ise aşağıdaki RSS bağlantısını kullanabilirsiniz. Ayrıca bana kitapta hediye edebilirsiniz =)


CCL


Copyright © Ordinaryus Says That by http://www.vypro.org/ is licensed under a Creative Commons Attribution-No Derivative Works 3.0