Перейти к содержимому
Compvision.ru
Smorodov

Разреженный автоэнкодер (Sparse Autoencoder)

Recommended Posts

По материалам (там-же читать о чем это, вообще):

http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

соорудил автоэнкодер в приложении архив:

SparseAutoencoder.rar

для минимизации целевой функции использовал:

LBFGS_MINIMIZER.RAR

с сайта: http://www.chokkan.org/software/liblbfgs/

Результат обучения (базис, состояший из детекторов границ и габорообразных фич):

post-1-0-71658100-1346316976_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это не быстро, минут 5-10 на 10000 фрагментах (картинка динамически меняется в процессе обучения, поэтому смотреть не так скучно), правда с матлабом у меня к разные картинки выдает (в матлабовской реализации больше похоже на то что на сайте), С - шная реализация вроде бы проходит через тот минимиум и идет дальше (хотя может где-то чего и пропустил, но вроде бы результат логичный (гасим как можно больше связей, но следим чтобы можно было линейной комбинацией полученных фильтров как можно точнее восстановить картинку)).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

по сути применение этого получить базис фич близких к габору?

можно выделять все фичи по площади картинки(например просто маленькие патчи), потом кластеризовать, брать центры кластера, и потом подавать на вход необходимые картинки и смотреть какими фичами можно описать, то что на картинках, какие лучше всего откликнуться ,те лучше всего и описывают целевые объекты.

и как бы без всяких нейросетей)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Применение этому - находить в информации поступающей на вход сети особенности, при помощи линейной комбинации которых можно наиболее полно представить любой из кадров поступавшей информации. То что сходится к Габору, это только академический пример (вообще результаты должны получаться близкие к 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>.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Применение этому - находить в информации поступающей на вход сети особенности, при помощи линейной комбинации которых можно наиболее полно представить любой из кадров поступавшей информации. То что сходится к Габору, это только академический пример (вообще результаты должны получаться близкие к PCA).

ну а ближе к практике?

если мы например на вход PCA подадим скажем фотографии людей находящихся на различном фоне, что мы сможем из этого выцепить потом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эта сеть на первом уровне даст только самые примитивные фичи (грани и углы).

Более сложные куски можно фиксировать на втором слое, и т.д.

Скорее всего аналогично можно и с PCA делать.

Здесь, насколько я понял, используется разреженное кодирование для обучения обнаружению лица (без учителя).

там была ссылка на матлабовский исходник (пока не смотрел):

http://www.mathworks.com/matlabcentral/fileexchange/34500-face-recognition-using-l1-norm-minimization

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сомневаюсь, если например сфотографироваться на фоне леса, там этих углов будет до кучи и в итоге мы получим кучу базисных фич которые непонятно к чему относятся.

просто как я понял это используется для того чтобы обучаться на массиве данных который не размечен,но чтобы потом выцепить нужные фичи(в нейросети фичи от простых к сложным идут) надо либо это руками все проверять, либо подсовывать выборку с предметом(находится человек) или выборку категорию(пейзажи) и смотреть какой нейрон среагирует.

наверно для такой задачи это применимо задача вроде называется (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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я уже записался :)

Один сертификат (по ML) у меня уже есть :)

Statement of Accomplishment.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а есть просто автоэнкодер на матлабе (как в первом посте) чтобы посмотреть какие он фичи сгенерирует с тестовой выборки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мое решение задачки из первого поста на матлабе.

myImplementation.rar

Фичи выдает такого типа:

post-1-0-28757200-1361626196_thumb.jpg

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скорректировал реализацию на С++ (стало похоже на детектор граней, как и должно быть):

post-1-0-50697300-1364647855_thumb.png

post-1-0-18368500-1364648287_thumb.png

main.cpp

Используется библиотека минимизации как в первом посте.

Все равно картинка не как в матлабе, не пойму что не так.

Подозрения на подготовку патчей для обучения, недостаточное количество итераций минимизатора (хотя там уже очень мало изменяется целевая функция), и функцию отрисовки слоя.

Прогнал на MNIST:

post-1-0-93443700-1364662829_thumb.png

но опять же есть расхождение с тем что здесь: http://ufldl.stanford.edu/wiki/index.php/Exercise:Vectorization

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Разреженный автоэнкодер обучающийся по Хеббу (SparseHebbianLearning) (исходники на питоне и матлабе):

http://invibe.net/LaurentPerrinet/SparseHebbianLearning#SparseHebbianLearning.2BAC8-ReproducibleResearch.Reproducible_research_:_matlab.28c.29_implementation_of_SparseHebbianLearning

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попалась неплохая книжка по теме: "Natural Image Statistics — A probabilistic approach to early computational vision"

bookcover3.jpg

Лежит бесплатно на сайте автора: http://www.naturalimagestatistics.net/

Там-же матлабовкий исходный код примеров.

ЗЫ: На гугл плеймарекете тоже есть, но там цена 4890р B)

Ну и туда же:

2450.jpg

http://www.intechopen.com/books/visual-cortex-current-status-and-perspectives

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×