Optimizasyon algoritmalarımızdan ikincisi Simulated Annealing olarak ta bilinen tavlama benzetimi algoritması. İsmi Metalurji biliminden gelmektedir. Metallerin tavlanması işleminden esinlenerek ortaya çıktığı için bu ismi almıştır. Genellikle ayrık optimizasyon problemleri için kullanılır.
Devamını oku...>>
OpenCV 2.0 Windows .lib dosyaları?
OpenCV v2.0 kararlı sürüm yayınlandı. Pek çok güncelleme ve yeni fonksiyonlar içeriyor.(Neler Mesela?)
OpenCV yi windows ortamında visual studio ile kullanıyorsanız bir süprizle karşılaşabilirsiniz. Kurulumla birlikte
lib dosyaları gelmiyor. Bu dosyaları elde etmek için kaynak kodun isteğinize uygun konfigürasyon parametreleri ile
derlenmesi gerekiyor.
Derleme işlemine girmeden hazır olarak kullanmak isterseniz. Kendim için derlediğim libleri sizinle paylaşabilirim :)
Download OpenCV 2.0 lib,dll,include files for Visual Studio.
Devamını oku...>>
0
yorum - yorum yaz
18 Ekim 2009
Zeki Optimizasyon Teknikleri - 1 (Hill Climbing)
Optimizasyon Algoritmalarımızdan ilki Stochastic(içerisinde rastgelelik bulunan) tekniklerden birisi olan Hill Climbing algoritması. Bu yöntem pek çok uygulamada uygulama kolaylığı nedeniyle seçilebilir.
Optimizasyonu istenen problemin gösterimi, elde olan çözüme göre komşu çözüm üreteci, ilk çözüm üreteci ve çözüm değerlendirme fonksiyonu uygulama için yeterli olmaktadır.
Algoritmanın dezavantajları olarak yerel çözümlere takılabilmesini ve çözümün seçilen başlangıç noktasına çok bağlı olmasını sayabiliriz.
Hill Climbing yöntemden bahsedersek:
Devamını oku...>>
0
yorum - yorum yaz
08 Ekim 2009
OpenCV altında SVM kullanmak. (OpenCV SVM Sample Code)
Bilindiği gibi OpenCV kütüphanesinin machine learning modülünde libsvm wraplenmiştir. Böylece biz OpenCV kullanıcıları harici bir kütüphane kullanmadan SVM(Support Vector Machines) i uygulamalarımızda kullanabiliriz. Aşağıda bu konuda bir örnek hazırlamaya çalıştım. Yorumlarda açıklamalar mevcuttur.
Devamını oku...>>
#include#include #include #include using namespace std; int main() { CvSVM SVM; CvMat trainData; CvMat labels; CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_EPS,100,0.001); //eğitim için term kriterimiz. int array_labels[5]= {1,1,1,-1,-1}; //5 eğitim verisinin bildiğimiz etiketleri.(labels, responses). //ilk 3 veri 1 sınıfına, diğer iki veri ise -1 sınıfına ait. //eğitim verilerini diziye doldurdum. Gerçek uygulamalarda filedan okuma veya hesaplama şeklinde olur. //kodu basit tutmak için bu şekilde gösterdim. #pragma region data //5 egitim verisi olsun herbiri 40 tane feature içersin. float array_trainData[5][40] = { 1,0.443137,0.333333,0.392157,0.0313725, 0.270588,0.870588,0.964706,1,0.439216, 0.337255,0.380392,0.0235294,0.266667,0.862745, 0.964706,1,0.431373,0.337255,0.368627, 0.0156863, 0.262745, 0.854902, 0.964706, 1, 0.423529, 0.341176, 0.360784, 0.0156863, 0.258824, 0.847059, 0.964706, 1, 0.419608, 0.341176, 0.34902, 0.0117647, 0.254902, 0.839216, 0.968627, 0.572549,0.4,0.113725,0.0784314,0.137255, 0.160784,0.00784314,0.337255,0.580392,0.407843, 0.121569, 0.0745098, 0.133333, 0.156863, 0.00392157, 0.341176, 0.584314, 0.411765, 0.12549, 0.0666667 , 0.129412, 0.152941, 0, 0.34902, 0.592157, 0.419608, 0.129412, 0.0588235, 0.12549, 0.14902, 0.00392157, 0.352941, 0.596078, 0.423529, 0.137255, 0.054902, 0.121569, 0.145098, 0.00784314, 0.356863, 0.882353, 0.741176, 0.305882, 0.305882, 0.278431, 0.141176, 0.156863, 0.509804, 0.882353, 0.741176, 0.305882, 0.305882, 0.27451, 0.141176, 0.14902, 0.501961, 0.886275, 0.741176, 0.305882, 0.305882, 0.270588, 0.141176, 0.141176, 0.498039, 0.886275, 0.741176, 0.305882, 0.305882, 0.266667, 0.141176, 0.137255, 0.490196, 0.886275, 0.737255, 0.305882, 0.305882, 0.266667, 0.137255, 0.129412, 0.486275, 0.929412, 0.917647, 0.717647, 0.356863, 0.133333, 0.156863, 0.231373, 0.709804, 0.929412, 0.913725, 0.721569, 0.356863, 0.137255, 0.164706, 0.219608, 0.694118, 0.92549, 0.905882, 0.729412, 0.356863, 0.141176, 0.168627, 0.207843,0.67451, 0.917647, 0.901961, 0.733333, 0.360784, 0.141176, 0.172549, 0.196078, 0.658824, 0.909804, 0.894118, 0.737255, 0.360784, 0.141176, 0.180392,0.180392, 0.639216, 0.760784, 0.372549, 0.407843, 0.298039, 0.160784, 0.72549, 0.988235, 0.960784, 0.772549, 0.372549, 0.411765, 0.305882, 0.160784, 0.709804, 0.992157, 0.960784, 0.780392, 0.376471, 0.419608, 0.309804, 0.160784, 0.698039, 0.992157, 0.960784, 0.784314, 0.376471, 0.419608, 0.317647, 0.164706, 0.686275, 0.996078, 0.964706, 0.792157, 0.376471, 0.423529, 0.32549, 0.160784, 0.670588, 1, 0.964706 }; #pragma endregion data cvInitMatHeader(&trainData,5,40,CV_32FC1,array_trainData); //eğitim verimizi tutacak matris. cvInitMatHeader(&labels,1,5,CV_32SC1,array_labels); //etiketlerimizi tutacak matris. //classification olduğu için CV_32SC1 kullandık. SVM.train(&trainData,&labels,0,0,CvSVMParams(CvSVM::C_SVC,CvSVM::RBF,3,0.025,0,1,0.5,0.1,NULL, criteria)); //train fonksiyonumuz (libsvm ile kontrol etmek için libsvm ile //gelen svm-train.exe nin default parametreleri kullanıldı.) //Parametrelerin detaylı açıklaması için opencv docs. //SVM.save("test.volkan"); //eğittiğimiz modeli kaydedip daha sonra kullanabiliriz. for(int i = 0; i < 5; i++ ) { double r; CvMat sample; cvGetRow(&trainData, &sample, i ); r = SVM.predict( &sample ); //predict edip sonuçları kontrol edelim. } }
Devamını oku...>>
0
yorum - yorum yaz
23 Ağustos 2009
Programınız için performans ipuçları.(x86)
Genel amaçlı üretilmiş mimariler üzerinde sinyal işleme, görüntü işleme gibi ağır matematiksel işlemler gerektiren uygulamalar yapıyorsanız optimizasyon çok önemli bir hale gelir.
Bilgisayar tasarımı çalışırken bir zamanlar Türkiye Görüntü İşleme mail grubuna gönderilen bir yazı aklıma geldi. Faydalı bir yazı olduğunu düşündüm ve blogumda paylaşmak istedim. Yazı 17 Şubat 2008 tarihinde Mustafa Sakar tarafından AMD x86 Code Optimization Guide tan yararlanılarak yazılmış.
Devamını oku...>>
Devamını oku...>>
5
yorum - yorum yaz
01 Mayıs 2009
Kaydol:
Kayıtlar (Atom)

