mrgloom 242 Жалоба Опубликовано August 21, 2012 vector<Mat> db_lbp(db.size()); for(int i=0;i<db.size();++i) { lbp::OLBP(db[i],db_lbp[i]); } vector<Mat> db_hist(db.size()); for(int i=0;i<db.size();++i) { lbp::histogram(db_lbp[i],db_hist[i],256); } db= db_hist; попробовал так, получилось нечто опять же не очень ,если судить по проекции на 2д. еще встаёт вопрос, почему тогда нельзя было использовать гистограмму и без LBR. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 22, 2012 пишут что mathematically a k-means method yields the same centroids as a PCA projection http://ranger.uta.edu/~chqding/papers/KmeansPCA1.pdf только всё равно не понятно как это использовать ибо из kмеаns мы получаем принадлежность к классу, а из PCA всего лишь базис. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 22, 2012 mrgloom, не знаю видели ли Вы эту страничку (по deep learning - помню Вы давали какую то ссылку), но думаю она будет для Вас интересна. http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial ЗЫ: Внизу страницы есть матлабовские исходники некоторых модулей. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано October 29, 2012 похоже про проекции называется задача Manifold learning тут помоему лучше всего isomap отработало http://scikit-learn.org/0.10/auto_examples/manifold/plot_lle_digits.html t-sne кстати попробовал работает, но о качестве трудно судить, а матлабовская версия работает ощутимо долго. http://homepage.tudelft.nl/19j49/t-SNE.html и еще вот это в тему Multidimensional scaling http://en.wikipedia.org/wiki/Multidimensional_scaling еще может пригодится http://people.cs.uchicago.edu/~dinoj/ndaona/ сравнение алгоритмов http://www.cs.wmich.edu/~yang/research/dembed/ еще 1 метод визуализации http://people.cs.uchicago.edu/~dinoj/vis/digits/ визуализация на питоне http://www.pymvpa.org/examples/mdp_mnist.html 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 29, 2012 isomap - красивее смотрится, те методы, которые дают нечто, похожее на треугольник, кластеры тоже не плохо собрали. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 23, 2013 решил попробовать svm на mnist http://ttic.uchicago.edu/~smaji/projects/digits/ то что тут без напильника не завелось. и в итоге классификаторы я качал отдельно новые версии libsvm и liblinear т.к. в матлабовском svm нет поддержки классификации для многих классов. в итоге libsvm работает довольно долго и для большой выборки я так и не дождался окончания там пару раз было 10кк итераций каких то. кстати я так и не понял что это за итерации. liblinear работает быстро, но точность почему то хуже у неё, чем у линейного классификатора в libsvm.(опять же это похоже связано как то с итерациями ибо там 1к максимум их было). попозже еще отпишу про точность и выложу архив со всем готовым. sphog фичи кстати улучшают распознавание, только вектор увеличивается в 3 раза(по сравнению с просто пикселями). непонятно почему, если я беру набор 70к запихиваю его в svm и потом прогоняю, точность всё равно не 100%, т.е. он не смог разделить тренировочную выборку или как это трактовать? еще интересно будет попробовать сделать искажения цифр и дополнить этим тренировочную выборку, только я пока не нашел кода на матлабе для этого. (но тут может быть опять же проблема, что если мы имеем сильную внутриклассовую различность, то результаты классификации могут ухудшиться(?) ну типа 1 класс имеет несколько подклассов, но мыслиться человеком как 1 класс). 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 24, 2013 попробовал libsvm с gpu http://mklab.iti.gr/project/GPU-LIBSVM я так понял там на gpu переложены какие то матричные операциии, которые делаются спомощью cublas, у меня заработало только собранное из сорцов, причем там нету интерфейса для матлаба, но можно из матлаба экспортировать данные с помощью svmwrite и потом использовать их просто с .exe. но при работе я как то не заметил, что gpu хоть как то используется. еще можно тот же mnist скачать отсюда http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#mnist вообщем в итоге похоже данные перед использованием надо скейлить на [0 1], ибо видимо какая то численная нестабильность. причем обучение прошло относительно быстро ,а вот проверка долго, ибо наверно получилось большое кол-во support vectors. запускал с параметрами '-s 0 -t 0' model = Parameters: [5x1 double] nr_class: 10 totalSV: 11625 rho: [45x1 double] Label: [10x1 double] sv_indices: [11625x1 double] ProbA: [] ProbB: [] nSV: [10x1 double] sv_coef: [11625x9 double] SVs: [11625x784 double] Accuracy = 96.9314% (67852/70000) (classification) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 26, 2013 попробовал варьировать С параметр и при С=10 выдало 100%, но непонятно хорошо ли это или плохо.(всмысле оверфитинг и все дела). еще есть некий online svm http://leon.bottou.org/papers/loosli-canu-bottou-2006 http://leon.bottou.org/projects/lasvm с 8кк сэмплов сделаных путем деформации обычного mnist. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 26, 2013 попробовал варьировать С параметр и при С=10 выдало 100%, но непонятно хорошо ли это или плохо.(всмысле оверфитинг и все дела). Это на тестовой выборке? Если да, то это вряд-ли оверфиттинг. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 26, 2013 Это на тестовой выборке? Если да, то это вряд-ли оверфиттинг. это на той же выборке на которой проводилось обучение. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 26, 2013 Ну тогда это ни о чем, надо на тестовой проверить. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 26, 2013 ну так как раз меня бы не удивило, если бы было всё время 100%, а так в зависимости от параметра С может получиться и не 100%. по дефолту например С=1 и не дает 100%. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 26, 2013 С - это параметр регуляризации (или для svm цена ошибки классификации), он задает гибкость модели. Для SVM (обычно везде наоборот), чем больше C, тем меньше регуляризация, и больше гибкость модели. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 26, 2013 ну как я понял этот параметр как то тоже можно через grid search найти автоматом, что то там связанное с кроссвалидацией. пока не пробовал. попробовал применить svm для распознавания лиц, на orl database 40 индивидов и по 10 картинок на кадого и всего 400. и вроде бы работает хорошо, только опять же эксперимент не совсем четный получился, ибо я брал так. на матлабе %orl dataset test n=200; k = randperm(size(orl_data,1)); ndata = orl_data(k(1:n),: ) ; nlabel = orl_label(k(1:n),: ) ; model= svmtrain(nlabel,ndata,'-s 0 -t 0') n=400; %вроде так не совсем честно ибо тестовая выборка должна не пересекаться k = randperm(size(orl_data,1)); ndata = orl_data(k(1:n),: ) ; nlabel = orl_label(k(1:n),: ) ; [predict_label, accuracy, dec_values] = svmpredict(nlabel, ndata, model); потом попробовал по честному на питоновых скриптах и батниках libsvm libsvmwrite('orl_data.txt', orl_label, sparse(orl_data)); и разделил на тренировочную и тестовую python subset.py orl_data.txt 100 orl_train.txt orl_test.txt на 100 и 300. потом обучил и проверил svm-train -t 0 orl_train.txt orl_model.txt svm-predict orl_test.txt orl_model.txt orl_res.txt выдало 72% если наоборот 300 и 100 98% интересно, как это будет работать если классов будт много, можно еще проверить на feret db она вроде побольше. оказывается на матлабе разделить выборку тоже довольно просто X = magic(8); inds = randperm(64); vector1 = X(1:5); vector2 = X(6:12); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 19, 2013 еще по поводу визуализации, когда хотим максимизировать расстояние между классами и минимизировать внутри класса. http://stats.stackexchange.com/questions/16305/dimensionality-reduction-technique-to-maximize-separation-of-known-clusters 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 19, 2013 на python используя sklearn import numpy as np import matplotlib.pyplot as plt from itertools import product from sklearn.decomposition import RandomizedPCA from sklearn.datasets import fetch_mldata from sklearn.utils import shuffle #use all digits mnist = fetch_mldata("MNIST original") X_train, y_train = mnist.data[:70000] / 255., mnist.target[:70000] #X_train, y_train = shuffle(X_train, y_train) #X_train, y_train = X_train[:1000], y_train[:1000] # lets subsample a bit for a first impression pca = RandomizedPCA(n_components=2) fig, plot = plt.subplots() fig.set_size_inches(50, 50) plt.prism() X_transformed = pca.fit_transform(X_train) plot.scatter(X_transformed[:, 0], X_transformed[:, 1], c=y_train) plot.set_xticks(()) plot.set_yticks(()) plt.tight_layout() plt.savefig("mnist_pca.png") (Я извиняюсь, но уж очень долго грузит, уменьшил размеры изображения в 2 раза (Smorodov) ) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 28, 2014 проекция mnist на 2D используя t-sne http://www.informatik.uni-bremen.de/~afabisch/files/tsne/ 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 28, 2014 А сколько это считалось? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Victor Tsaregorodtsev 10 Жалоба Опубликовано April 2, 2014 2 mrgloom: Рядом бы для сравнения поместить картинку из статьи Хинтона в Сайнс 2006г (с той, с которой начался мировой бум deep learning). Чисто для спекуляции насчёт того, что алгоритм снижения размерности, явно не ставящий задачи минимизации внутриклассовых расстояний и максимизации межклассовых, - тоже отрабатывает на этой базе очень достойно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах