Cuma, Kasım 28, 2008

TorchVision



Efendim TorchVision OpenCv gibi bir Kütüphanedir. Machine-Learning camiasında iyi bilinen -ben onların yalancısıyım - Torch kütüphanesini temel alır. Hem Torch hem de TorchVision Açık kaynak kodlu cross-platform ve ticari uygulamalarınızda bile kullanabileceğiniz - lisansı BSD - ücretsiz kütüphanelerdir. İsviçre dağlarında IDIAP da geliştirilmektedir. Özelliklerine gelirsek

Torch
Yayınlanmış Son versiyon 3.1 ve yayınlanış tarihi 11 Ağustos 2004
Özelliklerine gelirsek;
  • A lot of things in gradient machines, that is, machines which could be learned with a gradient descent. This includes multi-layered perceptrons, radial basis functions, mixtures of experts, convolutional networks and even time-delay neural networks. In fact a lot of "modules" are available that you can plug as you want to get what you need.
  • Support vector machines, in classification and regression. As fast as the old stand-alone program SVMTorch II, but with the powerful environment of the library.
  • Ensemble models such as bagging or adaboost.
  • Non-parametric models such as K-nearest-neighbors, Parzen regression and Parzen density estimator.
  • Distributions stuff, like Kmeans, Gaussian mixture models, hidden Markov models, input-output hidden Markov models, and Bayes classifier.
  • Speech recognition tools (Embedded training and large vocabulary decoding).
Evet gördüğünüz gibi pek çok imkana sahip bir machine-learning kütüphanesi. Gelelim asıl konumuza

TorchVision
Yayınlanmış son versiyon 2.1 ve yayınlanış tarihi 2 Nisan 2007
Özellikleri;
  • read/write basic image formats (pgm, ppm, gif, tif, jpeg)
  • basic image processing and feature extraction algorithms such as rotation, flip, photometric normalisations (Histogram Equalization, Multiscale Retinex, Self-Quotient Image or Gross-Brajovic), edge detection, 2D DCT, 2D FFT, 2D Gabor, PCA to do Eigen-Faces, LDA to do Fisher-Faces
  • various metrics (Euclidean, Mahanalobis, ChiSquare, NormalizeCorrelation, TangentDistance, ...)
  • face detection using MLP, cascade of Haar-like classifiers
  • 2D objects manipulation and drawing
  • video file decoding/encoding, image capture from a frame grabber or from USB
  • Sony pan/tilt/zoom camera control using VISCA interface
OpenCv ile bir karşılaştırma da yapmışlar bakınız yüz tanıma ve bulma konusunda oldukça iddialılar

Bana soracak olursanız OpenCv nin yerine geçmesi pek mümkün görünmüyor. Teknik eksikliği yüzünden değil, İnsan eksikliği yüzünden. Açık kaynak kodlu bir kütüphaneyi -yada programı- kullanan geliştiren insan sayısı ve gayretleri onun geleceğini de belirliyor. OpenCv nin epey bir camiası var. Yinede OpenCv ile birlikte kullanmamak için bir engel yok.

Neyse ben lafı daha fazla uzatmayım linkleri vereyim. Artık siz bir zahmet ilgilenirsiniz. Hele de kullanımını anlattığınız bir yazı yazsanız ne sevinirim...

Perşembe, Kasım 27, 2008

Döndüm işte

Çetele


...
Bu çetele mi kalacak benden geriye
yalnızca
hüznün dipsularında gezinen bir denizaltı olduğum
gözlerim buğulanarak baktığım toprak
gerçek rengiyle kutuplaştığım yaprak
delikanlı adımlarla arşınladığım dünya
unutulacak mı ?

Bir kireç beyazlığına sığınıyor
herkes
maskeyle
Ben bunun'çün yenik
ve güçsüzdüm dünyanın karşısında Baba

Çiziktirdiğim çetele bir hayat sundu bana
...
Gönlüne dizgin vurmak ne mümkün
ne mümkün kişneyen taya
- Cumali Ünaldı Hasannebioğlu ( Kendini Yusuf Gören) -

Uzun uzadıya bir şey yazayım istedim olmadı beceremedim :(
sözün özü döndüm buralardayım çiziktirmeye devam edeceğiz.

Cumartesi, Kasım 22, 2008

Ödev yapan cvPreProcessor



İki basit Ödevin cvPreProcessor ile çözümünü görüyorsunuz
-yada göremiyorsunuz video ekleme işini ilk defa yapıyorum ne şekilde görünecek emin değilim -
İlk Ödevde Gizili yazıyı ortaya çıkarma var;
Görüntümüzün içindeki yazıyı gizlemenin en kolay yolu Arka plan rengiyle yazı rengini birbirine çok yapmaktan geçiyor. Üzerinede biraz gürültü ekledinmi tuz biber nevinden :) problemimiz tamam oluyor Nitekim Histogramında baktığımızda görebiliyoruz. Yaptığımız işlem cvSmooth dan median seçeneğiyle gürültüden temizlik daha sonra Histogram eşitlemeyle yazıyla arkaplan grenginin arasını açıyoruz

İkinci Ödevde Görüntüden Kare Daire ve çubuk kısımlarını ayırmamız isteniyor. Morfolojik işlemlerle - cvDilate ve cvErode - işlemimiz tamamlanıyor

Alıcınızın ayarlarıyla oynamayın videodaki programın versiyonu 0.85 yayınlanmamış bir sürüm


Not : Biraz daha iyiyim - Allaha şükür - ve boş durmuyorum program yazmaya devam diyorum İnşallah yakın bir zamanda cvPreProcessor 'un yeni versiyonunu yayınlarız.

İlave Not : Videonun Daha bir görünebilir halini indirmek için buyrunuz Download Video

Salı, Kasım 18, 2008

Sabahı bekleyen Adam

Ne hasta bekler sabahı,
Ne taze ölüyü mezar.
Ne de şeytan, bir günahı,
Seni beklediğim kadar.

Geçti istemem gelmeni,
Yokluğunda buldum seni;
Bırak vehmimde gölgeni,
Gelme, artık neye yarar

Necip Fazıl Kısakürek


Bir süre Sabahı bekleyen adam oldum, bir süredir Sağlığın kıymetini hakkal yakin ! anmalaya çalışıyorum. sözün kısası Ufak ! bir operasyon geçirdim. şifa dualarınızı bekleriz.

Çarşamba, Kasım 05, 2008

Kütüphane Kullanımı

Kütüphane kullanımı konusunda epey bir sıkıntı çekildiğini bana ulaşan mesajlardan anlıyorum. Büyük bir şevkle yeni bir kütüphaneyi kullanmaya niyetleniyorsunuz. Örnek programlarından biri derlemeye kalkıyorsunuz. Anlamadığınız hatalar veriyor. Bütün istek ve arzunuz kayboluyor. Belkide çoğu kimse vazgeçiyor. Panik yapmayın herşeyi anlatacağız. Anlatacaklarımız CodeBlocks ve Mingw32 gibi görünsede diğer IDE lerde de aynı ayarların yapıldığı yerler var. İşin mantığını anlamanız yeterli.

Temel olarak bilmemiz gereken şudur. Herhangi bir kütüphaneyi kullanabilmek için iki şeye ihtiyacımız var.
  1. Fonksiyon ve Sınıf tanımlamalarının bulunduğu başlık dosyaları ( uzantıları *.h yada *.hpp olur)
  2. Derlenmiş kütüphane dosyaları ( Uzantıları *.lib GCC için *. a ) mesela libfltk.a yada fltk.lib gibi
Kütüphaneyi kullanabilmek için bu ikisine de ulaşılabilir olması lazım. Eğer başlık dosyasına ulaşamazsak derleme işlemi olmaz. Kütüphaneler ise derleme işleminden sonra, bağlamada - Link - sırasında gerekli oluyor. Yani hatamızın hangi aşamada oluştuğuna bakarak neyi düzeltmemiz gerektiğini anlayabiliriz

Mesela Projemizde mylib diye bir kütüphane kullanmak istiyoruz ve kütüphanemizi
"c:\mylib" e kurduk
Başlık dosyalarımız "c:\mylib\include" de - mylib.h -
Derlenmiş kütüphane dosyalarımız "c:\mylib\lib" de olsun - mylib.lib -

CodeBlocks' çalıştırın
Öncelikle projemizi oluşturuyoruz.
Menuden Project -> Build Options seçin
Search Directories kısmının
Derleyici - Compiler - kısmına Başlık dosyamızın bulunacağı dizini yazıyoruz


Bağlayıcı - Linker - kısmına kütüphane dosyalarımızın bulunacağı dizini yazıyoruz


Yine aynı pencereden Linker settings kısmında link libraries kısmına kullanacağımız kütüphaneyi yazıyoruz.


Hepsi bu kadar. Eğer Kütüphanemizin başka bağımlılığı yoksa bu ayarlarla kullanabilirsiniz. Başka bir kütüphaneye bağlıysa üstte bahsettiğimiz ayarları o kütüphane için de yapmanız gerekir.

Kütüphane kullanımı konusundaki başka bir sıkıntı da genelde kütüphanelerin kaynak kod olarak dağıtılıyor olması. Yani derlemenizin gerekmesi.

Bu problemin en kolay yolu Derlenmişini İnternette aratmanızdır. Özellikle derlenmesi zor kütüphaneler için hazır derlenmiş paketler var. Bunda dikkat edilecek husus kendi derleyicinize göre kütüphane bulmanız. Her ne kadar Mingw32 *.a uzantılılar gibir *.lib kütüphanelerini kullanabilsede bazen problem çıkabiliyor. Karşılaşırsanız. şaşırmayın.

Bir başka metod DevPak kullanmak. DevPak zaten DevCpp için hazırlanmış derlenmiş kütüphanelerdir. 7z ile açıp içinden gereken dosyaları alıp kullanabilirsiniz.

Başka bir çözüm yoluda MSYS kurmaktan geçiyor. MSYS ile size komutsatırından derleme imkanı oluşuyor Linux vari
./configure
make
komutlarıyla şansınızı deneyin pek çok kütüphaneyi bu şekilde derledim. Bu metodun bir avantajıda derleme opsiyonlarını kullanabilmeniz.

Yine diğer bir metod; Çoğu Kütüphanenin MSVC için proje - Workspace yada solution - dosyaları oluyor. CodeBlocks'un da bu dosyaları import etme seçeneği var.
File->import project den ilgili seçeneği seçip Kütüphanenin proje dosyasını C::B da derleyebilirsiniz.

Son olarak da kendi kütüphane projemizi kendimiz hazırlamak da bir çözümdür bakınız bir örnek çalışma Fann

Pazartesi, Kasım 03, 2008

Geri dönmek için gerekçe

Bir sıkıntıdır gidiyor. Yazmak istiyorum, kafamda tasarlıyorum, bir türlü toparlayamıyorum. Yazabildiğimde de epey bir karamsar yazılar çıkıyor.
Bu arada blogger'a engelleme kondu, "Ferman padişahın dağlar bizimdir " türünde bir yazı yazmak geldi içimden elim varıpda yazamadım.
Günü birlik İstanbula bir fuar vesilesiyle gitmiştim. Bol enaniyetli bir yazı yazayım bu konuda dedim olmadı.
FannTool'un download sayısı 1500' yanaştı caka satmak babından bir yazı yazayım dedim, ne mümkün.

bütün mesai boyunca.
buruşuk pardesülü adam dalgın
gittikçe daha dalgın, elinde cetvel
masada hesap makinesi, pusula
yetmiyor dibe dalmasına
bağlıyor kalın bir urganla beline
ağır bir sandık
salıyor kendini
yeşil yosunların
kırmızı balıkların
uçan kabarcıkların
derinliklerine
orada
bir sandık buluyor
yakutlar, altınlar, pırlantalar
adam dibe inmek için beline bağladığı
sandığını keşfediyor dibe ulaştığında.
öyleyse adamın eyvah ışıdı yüreği
eve dönmesine gerekçe
bulamıyacak bir daha.

"Geri dönmeye gerekçe bulamıyacağım bir daha" diye bol karamsar bir yazı yazayım dedim. Yapamadım benim olanca karamsarlığıma rağmen
Uzun zamandır blogunuza yazı yazmamışsınız.
Merak içinde kaldık?
İnşallah sağlığınız iyidir.
diyen vefakar arkadaşlar oldu
Blogumun engelliği zamanlarda Yer gösterip buyur buradan yayınlayalım diyen, blogun geleceği konusunda epey bir teşvik eden arkadaşlar oldu. sağolsunlar

Hatta inanmazsınız Projelerinize yardımcı olabilirmiyiz diye soran bile oldu

El hasıl Işıdı yüreğim Geri dönmek için gerekçe buldum bir daha

Buna vesile olan arkadaşlar Allah sizlerinde Işıtsın yüreğini