Smorodov 579 Жалоба Опубликовано August 30, 2012 По материалам (там-же читать о чем это, вообще): http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial соорудил автоэнкодер в приложении архив: SparseAutoencoder.rar для минимизации целевой функции использовал: LBFGS_MINIMIZER.RAR с сайта: http://www.chokkan.org/software/liblbfgs/ Результат обучения (базис, состояший из детекторов границ и габорообразных фич): Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 30, 2012 и насколько всё это быстро? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 30, 2012 Это не быстро, минут 5-10 на 10000 фрагментах (картинка динамически меняется в процессе обучения, поэтому смотреть не так скучно), правда с матлабом у меня к разные картинки выдает (в матлабовской реализации больше похоже на то что на сайте), С - шная реализация вроде бы проходит через тот минимиум и идет дальше (хотя может где-то чего и пропустил, но вроде бы результат логичный (гасим как можно больше связей, но следим чтобы можно было линейной комбинацией полученных фильтров как можно точнее восстановить картинку)). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 30, 2012 по сути применение этого получить базис фич близких к габору? можно выделять все фичи по площади картинки(например просто маленькие патчи), потом кластеризовать, брать центры кластера, и потом подавать на вход необходимые картинки и смотреть какими фичами можно описать, то что на картинках, какие лучше всего откликнуться ,те лучше всего и описывают целевые объекты. и как бы без всяких нейросетей) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 30, 2012 Применение этому - находить в информации поступающей на вход сети особенности, при помощи линейной комбинации которых можно наиболее полно представить любой из кадров поступавшей информации. То что сходится к Габору, это только академический пример (вообще результаты должны получаться близкие к PCA). Кстати нашел ошибку у себя: в строчках: if(Patches.at<double>(i,j)>3*stddev[0]){Patches.at<double>(i,j)=3*stddev[0];} if(Patches.at<double>(i,j)<-3*stddev[0]){Patches.at<double>(i,j)=-3*stddev[0];} [/code] было <float>. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 30, 2012 Применение этому - находить в информации поступающей на вход сети особенности, при помощи линейной комбинации которых можно наиболее полно представить любой из кадров поступавшей информации. То что сходится к Габору, это только академический пример (вообще результаты должны получаться близкие к PCA). ну а ближе к практике? если мы например на вход PCA подадим скажем фотографии людей находящихся на различном фоне, что мы сможем из этого выцепить потом? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 30, 2012 Эта сеть на первом уровне даст только самые примитивные фичи (грани и углы). Более сложные куски можно фиксировать на втором слое, и т.д. Скорее всего аналогично можно и с PCA делать. Здесь, насколько я понял, используется разреженное кодирование для обучения обнаружению лица (без учителя). там была ссылка на матлабовский исходник (пока не смотрел): http://www.mathworks.com/matlabcentral/fileexchange/34500-face-recognition-using-l1-norm-minimization Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 30, 2012 сомневаюсь, если например сфотографироваться на фоне леса, там этих углов будет до кучи и в итоге мы получим кучу базисных фич которые непонятно к чему относятся. просто как я понял это используется для того чтобы обучаться на массиве данных который не размечен,но чтобы потом выцепить нужные фичи(в нейросети фичи от простых к сложным идут) надо либо это руками все проверять, либо подсовывать выборку с предметом(находится человек) или выборку категорию(пейзажи) и смотреть какой нейрон среагирует. наверно для такой задачи это применимо задача вроде называется (Image Categorization) http://people.csail.mit.edu/fergus/iccv2005/bagwords.html а вот для поиска объектов рамкой, это я пока не понял. еще кое что http://decsai.ugr.es/~mjmarin/research/animals.html https://www.eecs.berkeley.edu/Research/Projects/CS/vision/shape/poselets/poselets-eccv10.pdf Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 18, 2012 http://homepage.tudelft.nl/19j49/Matlab_Toolbox_for_Dimensionality_Reduction.html Matlab Toolbox for Dimensionality Reduction так же там есть Deep autoencoders и еще тут от хинтона http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html а тут еще http://www.mit.edu/~rsalakhu/DBM.html Learning Deep Boltzmann Machines 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 19, 2012 https://www.coursera.org/course/neuralnets кстати говоря еще и курс будет скоро. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано September 19, 2012 Я уже записался Один сертификат (по ML) у меня уже есть Statement of Accomplishment.pdf Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано October 12, 2012 http://charles.cadieu.us/?p=184 для лиц http://research.ics.aalto.fi/ica/imageica/ еще ICA c кодом на матлабе Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано February 23, 2013 а есть просто автоэнкодер на матлабе (как в первом посте) чтобы посмотреть какие он фичи сгенерирует с тестовой выборки? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 23, 2013 Мое решение задачки из первого поста на матлабе. myImplementation.rar Фичи выдает такого типа: 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 30, 2013 Скорректировал реализацию на С++ (стало похоже на детектор граней, как и должно быть): main.cpp Используется библиотека минимизации как в первом посте. Все равно картинка не как в матлабе, не пойму что не так. Подозрения на подготовку патчей для обучения, недостаточное количество итераций минимизатора (хотя там уже очень мало изменяется целевая функция), и функцию отрисовки слоя. Прогнал на MNIST: но опять же есть расхождение с тем что здесь: http://ufldl.stanford.edu/wiki/index.php/Exercise:Vectorization 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 10, 2013 Разреженный автоэнкодер обучающийся по Хеббу (SparseHebbianLearning) (исходники на питоне и матлабе): http://invibe.net/LaurentPerrinet/SparseHebbianLearning#SparseHebbianLearning.2BAC8-ReproducibleResearch.Reproducible_research_:_matlab.28c.29_implementation_of_SparseHebbianLearning Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 14, 2014 Попалась неплохая книжка по теме: "Natural Image Statistics — A probabilistic approach to early computational vision" Лежит бесплатно на сайте автора: http://www.naturalimagestatistics.net/ Там-же матлабовкий исходный код примеров. ЗЫ: На гугл плеймарекете тоже есть, но там цена 4890р Ну и туда же: http://www.intechopen.com/books/visual-cortex-current-status-and-perspectives Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах