Sayfalar

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

Pazartesi, Ekim 20, 2008

OpenCv 1.1 pre yayınlanmış

OpenCv nin yeni sürümü olacak olan 1.1 versiyonun ön test sürümleri sessiz sedasız yayınlanmış
yeni haberdar oldum haber edeyim dedim

MKY ile karşılaşma ve ...

İnsanların kaçta kaçı düşünür?
Düşünenlerin kaçta kaçı karşılaşır
ve açılır birbirine
Ortak ilgi alanına sahip insanların görüşmesi konusundaki fikirlerimi yazmıştım. Böyle fırsatlar ele geçtikçe değerlendirmeye çalışıyorum . Internet üzerinden tanışıpta yüz yüze görüştüğümüz kişiler de oluyor. Kendi adıma bu görüşmelerden çok istifade ettim. - mesela VS OpenCv ilgimi perçinledi, HB FannTool'un gelişmesinde yönlendirici oldu - İşte bu tarz görüşmelerden biri geçtiğimiz cumartesi gerçekleşti.

MKY ile cumartesi iş çıkışı buluşmak üzere sözleştik. Görüşmemiz ilk olması hasebiyle daha çok tanışma faslı tarzında oldu. Anlayabildiğim kadarıyla MKY, pek çok konuda benden daha bilgili ve dahi benden daha genç bir arkadaş. Özellikle G.A. benzeri YZ metodlarıyla ilgili ciddi çalışmaları olmuş....

Sonuçta ortak ilgi alanlarına sahip insanlarla tanışmanın konuşmanın verdiği bir memnuniyet kaldı. Böyle niteliklere sahip gençlerle tanışmak da umut kaynağı oluyor. Ah bir de öğretici yazılar yazarak projeler yayınlayarak, bilgisini umumun istifadesine açsa.

Pazartesi, Ekim 13, 2008

BluePlayer 'ın Ölümü

Audiere kullanarak yazdığım basit bir ses çalma programı. Arabirimini yine FLTK ile yazdım. ve benim ilk yayınladığım açık kaynak kodlu projem. yani ilk göz ağrım. elimde yayınlanmamış 0.7. versiyonu vardı, ancak fırsat buldum yayınlıyorum. Ve Projeyi böyle yarım yamalak bırakıyorum.
BluePlayer 0.7 for Linux
BluePlayer 0.7 for Windows

Bu vesile ile Açık kaynak kodlu projelerin gelişimi ve tabii ki ölümü üzerine yazmak istiyorum.

Yazılarını severek okuduğum FerruhMaviTuna Open Source buna değer mi -fikirlerine katılmadığım - yazısında Açık Kaynak kodlu Proje geliştirmek için sebeplerden bahsediyor. Aynen aktarıyorum

- İnsanlara Yardım Etmek (peh!)
- Şöhret
- Kariyer
- Uzun vadede bir iş modeli ile para ve güç kazanma
Sondan başlarsak Uzun vadeli bir iş modelim yok,
Kariyerimle alkası yok,
Şöhret derseniz nickin - bluekid - bir şöhreti oluyor. İsme geçmediğinden temel sebep olmaz.
Geriye tek seçenek kaldı. FMT nin peh dediği seçenek İnsanlara Yardım etmek. Hatta bir de yazı yazmıştım. Delimiyim Ne Bence hiç de küçümsenecek bir şey değil. Ayrıca Faydalı olacağınız insanlar için de çooook önemli bir kişi de var kendiniz.

BluePlayer 'ı yazmarken pek çok şey öğrendim. Uzun boylu bilgisayar başında oturup müzik dinleyemesemde Linux da BluePlayer'ı kullanıyorum. Ama işte o kadar. Artık BluePlayer üzerinde sarfedeceğim emeğin bana bir kazancı yok. Zaten başka da faydalanan insan olmadığına göre Bu proje ömrünü doldurmuş oldu.

Peki tek çiçekle bahar gelirmi sadece kendiniz için yazdığınızı niçin yayınlıyasınız ki ? Paylaşmak İçin Kaç Kişiye İhtiyaç Var diye bir yazıda yazmış FMT. güzel noktalara deyinmiş. İnsanı düşündürüyor açıkçası. mesela FannTool'un en son hali için Bir hocayla - HB - olan görüşmemizin çok büyük etkisi olmuştur. Sadece hata bildirimleri bile projenin gelişimine katkı verir. Beğendiğiniz bir Açık kaynak kodlu projeyi kullanmak, görülen hataları bildirmek, önerilerde bulunmak bizim içinde Projenin geleceği içinde doğru olandır...

Kendi kendime soruyorumda
FannTool'u yada cvPreProcessor'u kullanan yoksa, arayan, soran, dürtükleyen yoksa ne diye ve ne yöne gelişsinki ?

Salı, Ekim 07, 2008

CvPreProcessor 0.8 ve Fl_OpenCv 0.90 Çıktı


Evet Sabırsızlıkla beklendiğiniz an geldi ! cvPreProcessor'un yeni hali ve Fl_OpenCv nin yeni versiyonları yani, cvPreProcessor 0.80 ve Fl_OpenCv 0.90 çıktı. Temel Görüntü işleme işlemlerinin çoğunu içeriyor. ve sonuçta Size çalıştırabileceğiniz bir kod da üretiyor.

Google code da sayfasını zaten almıştım

http://code.google.com/p/cvpreprocessor/

Bu adresten hem Windows hem de Linux versiyonunu kodlarıyla birlikte indirebilirsiniz. Tahmin edebileceğiniz gibi GUI olarak FLTK 1.1.9 IDE olarak CodeBlocks kullanıldı. Ve pektabii OpenCv. Linux versiyonu OpenSuse 10.3 de hazırlandı.

Her türlü görüş, öneri, hata bildirim ve isteklerinizi haasretle bekleriz

Cuma, Ekim 03, 2008

Learning OpenCV: Computer Vision with the OpenCV Library

OpenCv nin ilk İngilizce Kitabı yayınlandı - tabi japaonca yayınlananı saymazsak - darısı Türkiyenin başına; Tez zaman da Doğru düzgün tercümesini bekliyoruz. Telif bir eserde daha güzel olur aslında. Akademisyenlerimize duyrulur.

The book includes:
  • A thorough introduction to OpenCV
  • Getting input from cameras
  • Transforming images
  • Shape matching
  • Pattern recognition, including face detection
  • Segmenting images
  • Tracking and motion in 2 and 3 dimensions ,
  • Machine learning algorithms
Ek : Kitapda geçen örnek programların kodları yayınlandı.
İndirmek için buradan buyurun : LearningOpenCV_Code.zip

Cuma, Eylül 26, 2008

Tecelli-i Esma

ALLAH(cc)!

Sensin ALLAH(cc) sanadır kulluğum
Sendedir çarem seninledir varlığım
Seni arar ruhum seni anar kalbim
Başkasına değil sana muhtacım
Başkasını değil seni çağırırım
Başkası yaratılmıştır sen yaradansın
Başkası devamsızdır sen daimsin ve daim eyleyensin
Başkaları muhtaçtır sen ihtiyaçsızsın ihtiyaçları görensin
Başka ilah yok sen ALLAH(cc)'sın
Sen ki eşi benzeri olmayansın
Sen ki bütün eksiksiz sıfatların sahibisin
Cemaline çevir yüzümü başkasına rağbet ettirme kalbimi

...

Ya Melik!

Kimsenin kimseye fayda vermediği gün hüküm senin
Gökler yarılırken sahibim sensin
Yıldızlar dağılırken sahibim sensin
Varlığım bana ait değil varım yoğum senin
Elimde olanlar benim değil sahiplendiklerim de senin
Yokluğa düşürme beni an senin
Darlık verme kalbime mekan senin
...

Ya Mümin!

Sen hidayetini göndermezsen kalpler nasıl mutmain olur
Sen kalplere itminan vermezsen kim inandığından emin olur
Sen inandırmazsan kim mümin kalır
Hevamın tuzağına düşürme beni nefsimin diline bırakma beni
Öyle mümin eyle ki beni pişmanlıklarım beni sana döndürsün
...

Ya Cebbar!

Sen ki mağrurları gururlarına esir eylersin
Sen ki kibirlenenlerin boynuna kibirlerini tasma eylersin
Sen ki zor kullanıp zulmedenleri vicdanlarının pençesine hapsedersin
Bir sineği vasıta eyle de Nemrutlardan kurtar beni
Bir asayı vesile eyle de firavunlara galip getir beni
Ebabilleri gönderde Ebrehelerin fillerinden koru kalbimi
Nefsimin beni isyana zorlamasına izin verme
Aklımın beni saptırmasına geçit verme
Hep itaat üzre sabit kıl beni
...

Ya Musavvir!

Yokluğa varlık suretini giydiren sensin
Hiçliğe varlık boyasını çalan sen
Güzeli güzel kılan ancak senin tasvirindir
Sen ki yüzümü benim için biricik sevdiklerim için tanıdık eylersin
Katında makbul olan güzellikle tasvir eyle suretimi
...

Ya Alim!

Senin için bilmenin başı yoktur
Ben ancak sonradan bilirim
Senin bilmediğin bir an yoktur
Ben ancak bazen bilirim
Sen açık edip söylediğimi de bilirsin
Sen susup kendime sakladığımı da bilirsin
Unutup kendimden sakladığımı da bilirsin
Kendi kuyularıma aklımın iplerini salarım
Kendime aklım ermez sen beni benden çok bilensin
Kalbimin kuytularında el yordamıyla dolaşırım
Kendime kendim yetmez sen bana benden çok sırdaşsın
Bildiğimi bilenlerden eyle beni bilmediğimi bilenlerden eyle beni
Sana malum olan ayıp ve kusurlarımla utandırma beni
...

Ya Hafiz!

Hıfzının hazinesinde alem bir noktadan ibarettir
Hıfzının ayinesinde ay ve güneş sönük bir parıltıdan ibarettir
Bahar kışa döner bir gün gün akşama çıkar
Sabahlar sendendir koru beni sabaha eriştir
Yıldızlar söner bir gün dağlar yerinden oynar
Gökler senindir koru beni kapına yetiştir
Göklerde ölür bir gün yer yerinden oynar
Her yer senindir koru beni menzile eriştir
Kuşlar dağılır bir gün denizler kaynar ufuklar senindir
Koru beni ötelere eriştir
İsmim unutulur bir gün sesim boşlukta çınlar
Yakınlıklar sendendir
Koru beni yakınlığına eriştir
Defterim açılır bir gün günahlarım çok tutar
Takdir senindir koru beni affını yetiştir
Sözüm biter bir gün sessizlik uzar kelam senindir
Koru beni müjdeni yetiştir
...
Amin

99 Esma / Senai Demirci


Kadir gecenizi tebrik eder dua eder dualarınızı bekleriz...

Cuma, Eylül 19, 2008

CvPreProcessor 0.7

Bu aralar uzun laf edecek durumda değilim Daha önce bahsettiğim görüntü Önişlemcisini ( cvPreProcessor ) biraz toparladım yayınlayıp bir fikir soralım hatalar bildirilsin onları düzeltelim dedim. Bilmem anlatabildim mi meramımı sayın okuyucu

İndirmek için buyrunuz : cvPreProcessor 0.7

Çarşamba, Eylül 17, 2008

Yapay Zeka Temellerin duruşması 5

Turing Testini geçemezsin demedim Adam Olamazsın dedim

Adamın birinin çok haylaz bir oğlu varmış adamcağız sürekli senden adam olmaz der dururmuş. Haylaz çocuk evden kaçmış ve yıllar sonra bir şekilde o yöreye vali olmuş. Makamına oturunca babasının adını verip alın getirin diye emir vermiş. adamı yaka paça tutup getirmişler. vali "baba bana adam olmaz diyordun bak ben vali oldum" demiş ihtiyar adam acı acı gülümsemiş şöyle demiş "be oğul ben sana vali olamazsın demedim adam olamazsın dedim"

Bu Kıssa herhalde fikrimiz anlatmamıza yeterli gelir. İnasanoğlunun zekasına ulaşacak bir sistemin inşası hesap üzere kurulamaz. Bu konuda çok itiraz var. Bizim de bahsettiğimiz Çin odası deneyi mesela. bilgisayarların Algoritmik olarak çalışması oysa algorithmik çözümü olmayan problemlerin varlığı insanın bunları çözebliyor olması. Sonra meşhur durma problemi. Gödelin Eksiklik teoremi gibi. Bunca itiraza rağman YZ ciler bunların teknik problemler olduğu bir şekilde ! aşılacağı konusunda sonderece iyimserler. Hatta iddiaya girenler bile var. Amma bütün bunların ötesinde bizce insanı insan yapan tek başına zeka da değildir.

Evet medarı iftiharımız Bütün dünyanın takdir ettiği bir Zekadan Oktay Sinanoğlundan bir alıntıyla devam edelim
Batı zannetmiştir ki, akıl her şeyden üstündür. Oysa bu düşünce eksiktir. Neden çünkü Akıl bir uzuvdur. Nasıl insanın bacağı yürümeye yararsa, akıl , beyin de biyolojik bilgisayar gibi bir şeyleri hesap etmeye yarar. Mesela Kastamonu'ya gitmeye karar verseniz, oraya giderken en kestirme kaç kilometre, nekadar engebelidir, haritalara bakarak öğrenilebili, bunu bilgisayarda yapar gibi saptayabilirsiniz. Bu işin bilgisayarıdır. Ama bilgisayar Kastamonu'ya gitmek için karar verdirmez. Nereye gitmek istediğini sana söyleyen içindeki sestir. Yani, gönüldür. İşin manevi tarafı birtakım önemli kararları aldırır. Ondan sonra işin ayrıntısını, nasılını akıl bulur.
...
Aklın gönlün emrinde olması lazım. Yoksa akıl muzırlıkla uğraşır. Nitekim her yerde görüyoruz. Gönül terbiyesinden, hatta gönül kavramından bile mahrum olan batı'da ki bilim adamlarından bazıları ne yapmışlardır ? Bilimle atom bombası yapmışlardır, çeşitli bombalar yapmışlardır. Zehirli gazlar, biyolojik silahlar yapmışlardır. Bunlarla milyonlarca insanın perişan edilmesine yol açmışlardır.
Gönül terbiyesi olan insanlar bbunu yapmaz. Bilimi insanlığın hayrına kullanır. Onun için gönül olmadan bilim ve akıldan zarar gelebilir.
Bilim bir çeşit alet gibidir, iyiyede kötüyede kullanılabilir. Bir bıçakla ekmek dilimleyip meyve soyabileceğiniz gibi insan da öldürebilirsiniz. Allah insanoğlunu halifeyi ruy-i zemin olarak yaratmıştır. İstidatlarına da hemen hemen had konulmadığı düşünülürse. İnsanoğlu Yapay Zeka konusunda bazı aşamalar kaydedebilmesi pekala mümkün. İşte bu aşamalara katkıda bulunurken dikkat edelim Bindiğimiz dalı kesiyor olmayalım. Bütün insanlığa zarar verecek bir çalışma içinde bulunmayalım. İlmimiz insanlığa faydalı olsun, Zarar vermesin hatta faydasızda olmasın.
Allahım! Faydasız ilimden,
ürpermeyen gönülden,
doymak bilmeyen nefisten ve
kabul olunmayan duadan sana sığınırım.

Not : Fazlasıyla acele bir bitiş oldu ama kusura bakmayın, söylenecek söz çok da bizde istidat yok

Salı, Eylül 09, 2008

OpenMP ve OpenCv ile Kenar Bulma

Öncelikle uygulamamızdan bahsetmek istiyorum. Basit bir kenar bulma işlemi yapacağız. Hem OpenMP'li Hemde normal yapacağız ki performans farkını görelim
  • İlk etapta resmi siyah beyaza çeviriyoruz. Bu işlemi programda görüntüyü yüklerken "CV_LOAD_IMAGE_GRAYSCALE" diyerek hallediyoruz. (bakınız işin kolayına kaçma metodları s-??? )
  • Kenar bulma için kullanacağımız metod ise gayet basit. Bir pikselin solundaki veya üstündeki piksel ile olan renk farkı belli bir eşik değerini aşıyorsa kenardır, beyaz (255) olarak işaretlenir. Aşmıyorsa kenar değildir, Siyah (0 ) değeri atanır.yani
X kenarı bulunacak görüntü dosyası olsun K ise Kenarları gösterdiğimiz görüntü dosyası olsun

Eğer |X(i,j)-X(i-1,j)| > eşik veya |X(i,j)-X(i,j-1)| > eşik
ise K(i,j)=255;
değil ise K(i,j)=0;
  • işlemin mantığından da anlayabileceğiniz gibi her piksel için yapılacak işlem bağımsız. ve paralel olarak çalıştırmak için gayet uygun bir metod.
  • Kenar bulma fonksiyonumuzda bir döngü ( for ) içinde pikselin kenar olup olmadığını bulan kodu yazıyoruz.
  • Şimdi geldik işin en zor kısmı olan paralel versiyonunu yazmaya. Kenar bulma fonksiyonumuzu kopyele yapıştır deyip 2. bir nüshasını alıyoruz ! Adını OpenMP li olarak değiştiriyoruz. for döngümüzden önceki satıra şu çoook zor satırı yazıyoruz.
#pragma omp parallel for
yani diyoruz ki bundan sonraki for döngüsünü paralel çalıştırılsın.
Sonarasında çalıştırıp sonuçları gözlüyoruz.


Benim evdeki AMD64 çift çekirdekli işlemcideki performansı Resimde de görebilirsiniz. % 44 lük bir hızlanma hem de tek satırlık eklemeyle hiç fena değil öyle değilmi ? Farkın nereden geldiğini CPU Usage grafiğinde rahatlıkla görebilirsiniz. OpenMP siz kenar bulma fonksiyonu çalışırken işlemcinin sadece biri çalışıyor. OpenMP li versiyonunda işlemci kullanımı % 100 lere ulaşıyor.

Sonuç : OpenMP ile işlemcinizin atıl duran çekirdeklerinide çalıştırıp programlarınızı hızlandırabilirsiniz. Hatta hiç başka bir detay öğrenmeseniz bile bizim burada bahsettiğimiz paralel çalıştırılabilecek döngüler çok işinize yarıyacaktır eminim. Helede İşlemcilerin çekirdek sayılarının arttığını düşürsek - 4 çekirdekli çıktı bile-

Örneği İndirmek için : OpenCV & OpenMP

4 çekirdekli işlemcisi olup da deneyen olursa performans artışını bize bildirsin. seviniriz.

Pazartesi, Eylül 08, 2008

OpenMP

ReklamlarStart();
DerinDeliMavi'den bir ilk daha , Sizler için hiçbir fedakarlıktan kaçmayan sitemiz size yine yeni imkanlar sunuyor. Hafta sonu yemeyip içmeyip - oruç oruç - sizlere neler hazırladık neler...
ReklamlarEnd();

Benim gibi çiftçekirdekli bir işlemciniz varsa yazdığınız programların CPU kullanımına baktığınızda Yukardaki grafikteki I numaralı bölümdeki gibi bir manzarayla karşılaşırsanız. Yani uzunlafın kısası Bilgisayarınız çift çekirdekli ama Yazıl sadece birini kullanıyor. Paralel programlama işi de burada ortaya çıkıyor. Bütün her iş için olmasada paralel olarak çalıştırarak programın hızlanması imkanına sahibiz. Grafiğin II kısmında görebileceğiniz gibi. Yapılacak iş teorik olarak şöyle ; Aynı görevi, küçük bir birinden bağımsız çalışmasında mahzuru olmayacak şekilde bölüp çoklu işlemcilerde eş zamanlı olarak çalıştırılmasıdır.

İşte OpenMP bu işi kolaylaştırmak için yapılmış API dır. Pek çok donanım ve işletim siteminde çalışan ve basit derleyici ön işlem direktifleriyle kullanacağınız bir sistem.


OpenMP nin çalışma sistemi program paralel işletilmesi gereken kısımlarda dallanır paralel çalışıp işlem bitince tekrar birleşmesi şeklinde olur. ( Fork - Join Model )

Bu kadar teorik bilgi yeter daha fazlasını merak eden google'dan soruştursun. Yukarda bahsettiğimiz üzere OpenMP derleyici önişlem direktifleri kullanıyor yani öncelikle OpenMP desteği sunan bir derliyiciye ihtiyacınız olacak.
OpenMP desteği sunan derleyiciler
http://openmp.org/wp/openmp-compilers/

Linkde gördüğünüz gibi Eğer Linux kullanıcısıysanız ve derleyiciniz gcc 4.2 ve üstünde probleminiz yok. Microsoft Visual kullanıyorsanız OpenMP 2.0 destekleniyor ve ücretsiz versiyonlarında olup olmadığından da emin değilim. Benim gibi CodeBlocks ile Mingw32 kullanıyorsanız "TDM's Experimental GCC/MinGW32 Builds" kurmanız lazım.

Yapılacak işlemler
  1. http://www.tdragon.net/recentgcc/ adresinden Bundled Installer ı indirin
  2. Daha önceden Mingw yi kurğunuz yerin üzerine kurun.
  3. Hemen güzel bir OpenMP makalesi okuyun.
  4. CodeBlocks ' çalıştırıp yeni bir console projesi oluşturun
  5. Project->Build Options kısmından Linker settings tabında Link libraries kısmına gomp ve pthread girin
  6. Project->Build Options->Compiler Settings tabının other options kısmına -fopenmp girin

İşlem tamam. Artık bütün bunlarun üstüne şöyle basitçe hemde OpeCv li bir program yazmaya başlayabiliriz. Malum Performans en çok Görüntü işlemede lazım oluyor...

Devam edecek...

Cumartesi, Eylül 06, 2008

İnternette dağıtılan İlmin zekatı

Eskiden herhangi bir konuda örnek program bile bulabilmek zor işti. Bilgisayar dergileri ya programlamayla ilgili ekler verirlerdi yada içlerinde 3 - 5 yazı olurdu. Ve o zor imkanlarla elimize geçen kaynakları tabiri caiz ise son damlasına kadar kullanırdık. Günümüzde özelliklede internet sayesinde bilgiye ulaşmanın çok kolaylaşmasına rağmen insanlar bu imkanlardan yeterince faydalanmıyorlar. Bu konuda eski bir arkadaşa sızlandığımda. Arkadaşım "Bir şeyler kolayca elde edilince kıymeti bilinmiyor" dedi ve galiba haklıydıda...

Ben şimdi size yine İngilizcesi ve de İyi bir internet bağlantısı olan için gayet kolayca ulaşabileceğiniz bir kaynakdan bahsedeceğim. videolectures.net "exchange ideas / share knowledge" sloganıyla çalışan bir site. Envai çeşit konuda video şeklinde dersleri slayt gösteriside yanında olmak üzere seyredebiliyorsunuz. Mesela Computer Vision konusunda 41 tane ders görünüyor. Öğrenmek isteyen için büyük fırsat.

Hemen her filim için türkçe alt yazı hazırlayan internette kolaylıkla bulabilmeniz için siteler hazırlayan fedakar insanlarımızın bu video derslerinden haberleri yok herhalde. Yoksa filimlerden katbe kat memleketimiz için daha faydalı olan dersler içinde alt yazı hazırlamazlar mı ...

Üniversitedeki Fedakar hocalarımızın böyle bir imkandan haberleri yok olmalı. Yoksa hocalarımız ilimlerinin zekatını seve seve vermezlermiydi. Benzeri bir siteyi Türkiyede türkçe olarak oluşturmazlarmıydı...

İşte Haberdar oldunuz ey Fedakar arkadaşlar ! çalışmalarınızı ve ve Ey Fedakar Hocalarımız İlminizin zekatını bekliyoruz. Malum Zekat fakirin hakkıdır, zenginin lutfu değil !

Çarşamba, Ağustos 27, 2008

Yapay Zeka Temellerin duruşması 4

Yolun Sonu Görünüyor...
Bu dünyanın direği yok
Merhameti yüreği yok
Klavuzun gereği yok
Yolun sonu görünüyor
Nerede Kalmıştık Assume spherical chicken deyip YZ ye ulaşmıştık. Peki bütün bunların anlamı ne ? Varsayımımıza devam ediyoruz. Yapay Zekaya ulaşdık, peki bu insanlığı nereye götürecek ? İnsanlardan daha zeki YZ ye ulaştıktan sonra önümüzde iki ihtimal var

Birincisi ve de kuvvetle muhtemel olan YZ nın yani makinaların kontrolü ele geçirmeleridir. "Madem bizden zekiler bizim hakkımızda daha doğru tercihler yaparlar"1 diyerek doğrudan devredilebileceği gibi. Makinalarla yapılacak savaş sonucu yenilerekte olabilir. Makinaların insanlara ihtiyaçlarının olmadığınıda düşünürsek. İnsanlığın geleceği YZ nin insafına kalır. Belkide Insanlığın çoğu yok edildikten sonra bir kısmının soyu tükenmiş mahluklar nevinden bir çeşit kafeslerde yaşamalarına izin verebilirler. Pardon ya biz YZ nin içine insaf merhamet falan koymamıştık değil mi ? Tüh...

İkinci ihtimale gelirsek. İnsanlar bir şekilde 2 kontrolü ellerinde tutmayı başarabilsinler. Yani YZ insanoğlunun boyunduruğu altında tutulsun. Ama Kontrolü ellerinde tutanlar İnsanların umum değil Elit bir kesimi olacak. Bu Elit kesimin büyük çoğunluğunun sermaye sahipleri olacakları aşikar. Ve Sermayenin artık Emekçi İnsanlara ihtiyaçları kalmayacak. Artık çok daha ucuza çalışacak emekçi robotları var. Ortaya iki ihtimal daha çıkıyor. İlki Elit kesimin İnsanların ekmek elden su gölden yaşamalarına izin verirmesi ki ben hiç sanmıyorum. 3 İkinci ihtimal Elit kesim dışında insanlığın nüfuslarının azaltılarak yok edilmesi. 4 Bütün bunlar olup bittikten sonra Elit kesim uzun yaşayabilmek için bedenlerini de feda edip cyborglara dönüşmesiyle yeryüzünde insan kalmayacaktır...

Bilmem farkındamısınız ama bütün ihtimaller Yolun sonunu gösteriyor. Eğer ilk varsayımımız doğruysa Yapay Zeka ile uğraşarak bindiğimiz dalı kesiyoruz. Bunun farkında olan pek çok insan var ve kara kara düşünüyorlar. Bu konu da neler mi yapıyorlar ; İşi oldukça abartanlardan5 tutun, vakıf 6 kuranlara, hikayeler, romanlar yazanlara , filimler çekenlerine kadar. İnsanlığın geri kalanı ne mi yapıyor ? En fazla bahsedilen filmi seyredip
" - Ne filimdi abi ya insanın heyecandan nefesi kesiliyor ... "
diyorlar...

devam edecek edecek de nasıl bilmem...


Notlar

1 Robotlar parti kurup seçimlere katılabilseler yada seçimlere katılan bir parti deseki biz seçilirsek yönetimi bizden çok daha zeki olan rüşvet yemeyen, adam kayırmayan, ... robotlara devredeceğiz deseler, oy alamazlar mı dersiniz.

2
En bilinen tedbir Robot kanunları
  • Bir robot bir insana zarar veremez, veya pasif kalmak suretiyle zarar görmesine izin veremez.
  • Bir robot kendisine insanlar tarafından verilen emirlere 1. Kural ile çelişmediği sürece itaat etmek zorundadır.
  • Bir robot 1. ve 2. Kurallar ile çelişmediği sürece kendi varlığını korumak zorundadır
ama bu kanunların olması bile robotların kontrolü ellerine almalarını engelliyemiyor. bakınız
"I Robot" filmi. İnsanlara insanların zarar verdiğini gören YZ kanunun 1 maddesi gereği Bu zararı önlemek adına insannları denetim altına almaya çalışıyor. İşin daha da ilginci , İnsanlığı Robotların Elinden kurtaran daha insanımsı olduğu için Robot kanunlarına uymayan bir robot oluyor. Pekiii Daha sonra insanımsı robot kim durdurabilir !

3
"1960'da dünya nüfusunun en fakir %20'si ile en zengin %20'si arasındaki gelir oranı 1'e 30 iken, 1995'te 1'e 82 olmuştur." Niçin sanmadığım anlaşılıyordur herhalde

4 Nüfus azaltma işine zaten şimdiden başlandığının bilmem farkındamısınız: İç ve dış savaşlar, Doğal ve doğal olmayan - deprem tetiklettirmek İklim bomabalarıyla oluşturulacak kasırgalar kuraklıklar - afetler, Tarımın öldürecek şekilde tedbirler alıp bütün dünyada gıda fiyatlarını yükseltip parası olmayanları açlığa sevketmek, Nereden geldiği belli olmayan ölümcül virüs hastalıkları - biyolojik silah- ... gibi

5 Mesela Theodore John Kaczynski parlak bir matematikçiyken, aniden inzivaya çekilip orada teknolojik ilerlemenin kötülüklerine karşı savaşmaya! karar veriyor. Üniversitelere ve havayolu şirketlerine bombalı mektuplar ve paketler gönderiyor. bu yüzden Unabomber ("UNiversity and Airline BOMber") olarak nam salıyor. 29 kişinin yaralanmasına 3 kişinin ölümüne sebep oluyor. manifestosunu eksiksiz biçimde the washington post ve the newyork times gazetelerinde yayınlanması koşuluyla bir daha bombalı eylem yapmayacağını bildirmesi ardından söz konusu gazetelerde özel bir ek şeklinde yayınlanmasından sonra. 1996 da yakalnıyor,1998'te müebbet hapse mahkum oluyor.
6 Mesela Lifeboat Foundation hatta bu vakfın birde AIShield diye bir de projeleri var. Projenin amacına gelirsek
To protect against unfriendly AI (Artificial Intelligence). Consequently, we support initiatives like the Friendly AI proposal by the Singularity Institute for Artificial Intelligence.

Perşembe, Ağustos 21, 2008

Yapay Zeka Temellerin duruşması 3

Assume spherical chicken !

Haydaa bu ne biçim bir başlık demeyiniz azıcık sabrediniz. Bu bizim okulda öğrenciler arasında kullanılan bir tabir. Hocalar konuları anlatırken en başta olayın basitleştirilmiş hallerinden başlarlardı, Farzedelim şöyle olsun, varsayalım böyle olsun diye. İşte bu tabirde bu farzedişlerin uçukluğunu anlatan bir anlam taşıyor. "Farzedelim Tavuk küre şeklinde olsun ! "

Anlıyacağınız bizde bu şekilde başlıyoruz. "Assume spherical chicken !" Varsayalım İnsanı insan yapan ve zekanın kaynağı beyin olsun. Farzedelim Beyin sadece biyolojik bir bilgisayar olsun. Dijital Bilgisayarlarımızla beynin yapayını nasıl yaparız.

Donanımdan başlayalım. Beynimiz elektronik devreye göre çooook yavaş olan nöronlardan oluşuyor.Onlarda ancak saniyede 200 işlem yapabiliyor. Fakat Herbirisinde yaklaşık 1000 bağlantı olan yaklaşık 100 Milyar nöron var ve paralel olarak çalışıyorlar. Sonuç olarak İnsan beynin donanım gücü 20 Milyar MIPS oluyor.*

Intelin kurucularından olan Gordon Moore'un 19 Nisan 1965 yılında Electronics Magazine dergisinde yayınlanan makalesinde demişki ( Moore Yasası ) "her 18 ayda bilgi işlem gücü iki katına çıkar" Şu anda evlerimize alabileceğimiz 1000 $ lık bir bilgisayar kapasite olarak bir böcek ile bir fare beyni arasında bir yerlere tekabül ediyor. Bu gelişme hızına göre 2020 yılına gelindiğinde İnsan beyni kapasitesindeki bir bilgisayarı 1000$ verip evlerimize alabilecekmişiz. yani Donanım olarak Yapay bir beyin yapmak için herhangi bir problem yok yani...

Gelelim yazılım kısmına. Yazılım kısmında beynin nasıl çalıştığının anlaşılması lazım. Bu konuda zaten değişik branşlarda insanlar çalışmalar yapılıyor.** Mesela bir görüşe göre Nanobotları kullanarak Beyinin çalışma anında bütün nöronlarını kapsayacak bir haritasını alabilir. Bu verilerle ve reverse engineering*** - tersten inşa- ile istediğimizi elde edebileceğimizi iddia ediyorlar. ve bu işin çok yakın olacağını tahmin ediyorlar.

Bunca iyimserliğin üzerine bir kaç bir şey ekleyelim.

YZ temellerinin ilk atılışı adının konuluşu 1956 da Dartmount daki bir toplantıda olmuştur.Toplantıya katılanlar MIT den marvin Minsky Stanforddan John McCharty Carnegie-Mellon dan Allen Newell ile Herbert Simon dur. Sadece 2 yıl sonra 1958 de Simon şöyle demiş
Amacım sizleri şaşırtmak yada şoka uğratmak değil... Ama anlatacaklarımı en basit şekilde anlatmamın tek yolu, şu anda dünyada düşünen, öğrenebilen ve yaratabilen! makinelerin var olduğunu söylemek olacak. Üstüne üstlük , bu makinelerin öğrenme yetileri gelecekte dahada hızlı gelişecek, öyle ki, yakın gelecekte çözebilecekleri problemler kümesi , insan zihninin uğraşmakta olduğu problemler kümesiyle özdeş hale gelecek
Demiş demesine de şimdi bulunduğumuz nokta ortada... Sonuç olarak herşey varsayımlardaki gibi olmuyor Küre şeklinde tavuk olmaz.

Devam edecek de nasıl bilmem...


* Bu konudaki muhtelif rivayetler için bakınız
** Bazı linkler vermek istiyorum
*** bir iki jump ayarı birkaç nop ile program kırıp kendini reverse-engineer görenlere duyrulur.

Salı, Ağustos 19, 2008

Yapay Zeka Temellerin duruşması 2

Çin odası Turing testine karşı

YZ nın temellerinden başladık ama niçin tanımları anlatmaya başlamadık ? haklı olarak soruyorsunuz. Bunun başlıca sebebi Kavramların pek çoook tanımı var ve Bakış açımıza göre seçeceğimiz bir tanım üzerinden yürüyüp üzerine de bolca laf salatasıyla servis edebilirdik pek tabii. Fakat bu Başka bir tanım üzerinden konuya bakanlar için saçma bir yazı olur çıkardı.

Böyle felsefi tanımlarla kafa karıştırmak yerine biz Ne yaparsak YZ ye ulaşmış oluruz ? sorusunun cevabıyla başlıyoruz, Turing testi. Alan Turing YZ nin öncülerinde bir İngiliz matematikçi. Testide oldukça basit. " Öyle bir donanım ve yazılım sistemi oluşturmuş olun ki onunla konuşanlar Bir makinayla konuştuklarının farkına varamasınlar ve Bir insanla lafladıklarını sansınlar. İşte o sistem Yz ye ulaşmıştır." diyor. Bu test sayesinde dolaylı olarak YZ den ne kastedildiğide ortaya çıkmış oluyor.

Karşıt görüşte olanlarda boş durmuyor. Bir Felsefe profösörü olan John Searle de bir düşünce deneyi ortaya atıyor, Çin Odası deneyi. "Tek kelime çince bilmiyorsunuz ve sizi bir odaya kapatıyorlar. İçerisi çince sembollerle dolu birde kitap var sembolleri nasıl kullanacağınızı anlatıyor. Dışarıdan içeriye çince semboller geliyor. sizde kitaba bakarak o sembollere karşılık olarak başka sembolleri dışarıya yolluyorsunuz. Dışarıda olan çinli içeride olanlardan habersiz zannediyorki içeride çince bilen bir insan var. Oysa içeride çince bilen kimse yok." Bir noktaya dikkatinizi çekmek istiyorum aslında Çin odası deneyi çince yapılmış bir Turing testinden başka birşey değil. Üstelik testi geçmiş. Yani Elimizde Çince yapılmış bir Turing testi var fakat çinceden anlayan kimse yok !
Bu Deneye şu şekilde itiraz ediliyor. Tek tek kimse çince bilmesede sistem olarak çince biliniyor. Searle bu itirazı şu şekilde cevaplıyor. Odadaki kişiye anladığı dilden sorulara verdiği cevapları soruların anlamını bilip karşılığını vermekle oluyor. Diğerinde yapılan işlem sadece sembollerin işlenmesidir.anlama yok. Searle'nin kendi tabiriyle devam edelim.

" Kimse bilgisayardaki simulasyonun gerçek olduğunu varsaymaz; kimse bilgisayarda simule edilmiş fırtınanın bizleri ıslatacağına veya yangının yakacağını, düşünmez. Niçin aklı başında herhangi bir kimse zihinsel süreçlerin bilgisayar simulasyonunun gerçekten zihinsel süreçlere sahip olduklarını düşünür?

Sonuç olarak ilk yazımızda belirttiğimiz gibi çıkaracağımız sonuçlar farklı olabiliyor ama en azından şöyle bir ortak noktda bulaşabiliyoruz. Zeki olan yada zekiymiş gibi davranabilen sistemler oluşturabileceğiz.

Peki ama Nasıl devamı bir sonraki yazımızda.

bir sonraki yazımız " Assume spherical chicken ! "