- PVSM.RU - https://www.pvsm.ru -
Давным давно, в 2008 году, когда я работал над своей диссертацией меня заинтересовала тема применения сверточных нейронных сетей для задач распознавания изображений. На тот момент они еще не были так популярны как сейчас и попытка найти готовые библиотеки ни к чему не привела — нашлась только реализация на Lush (языке созданном автором сверточных сетей, Яном ЛеКуном). Тогда я подумал, что можно было бы их реализовать на Матлабе используя Neural Network Toolbox. Но столкнулся с невозможностью реализации разделяемых весов в рамках этого тулбокса. И тогда было принято решение написать собственную реализацию.
Первоначально она была сделана на чистом матлабе. Чуть позже я реализовал функции прямого и обратного распространения на CUDA. Эта версия лежит на Matlabcentral [1] и до сих пор имеет по 162 закачки в месяц.
Это, кстати, была первая в интернете версия сверточных сетей на CUDA.
Используя эту реализацию я написал пост Применение нейросетей в распознавании изображений [2].
Поняв что интерес к теме очень большой, я решил переписать библиотеку и сделать ее полностью на C++/CUDA оставив поддержку Матлаба как фронтенда. Так появилась CudaCnn [3]. Эту разработку я уже, по сути, вел в свободное от работы время. Позже я поменял работу и мои возможности вести open source разработку стали очень ограниченными.
С момента начала работы над библиотекой тема сверточных нейронных сетей и deep learning стала очень популярной. Особый всплеск популярности произошел после того как команда Джефри Хинтона, используя свою реализацию сверточных сетей на CUDA (написанную Алексом Крыжевским) победила с большим отрывом от конкурентов в конкурсе Large Scale Visual Recognition Challenge. Сейчас Google использует эту технологию для поиска по картинкам.
Сейчас моя библиотека хостится на bigbucket [4], страницу с описанием посещает порядка 130 человек в месяц:
что конечно-же совсем немного для какого-нибудь блога, но для весьма специализированной библиотеки рассчитанной на узкий круг исследователей не так уж и мало. Кстати, основная масса посещений из Штатов и Китая. Кроме того, мне периодически пишут пользователи с просьбой что-нибудь добавить или исправить и у меня даже не всегда есть время им ответить.
Итак, что в итоге: есть библиотека, реализующая функционал обучения сверточных (и полносвязных) нейронных сетей со следующими возможностями и характеристиками:
Также есть вещи над которыми еще стоило бы поработать. В частности, код для CPU не оптимизирован по скорости, CUDA код тоже есть куда развивать, не помешала бы doxygen документация.
Как я уже отметил выше, у меня на данный момент не осталось ни времени ни возможностей для поддержки библиотеки, поэтому если кого-то заинтересует участие в ее развитии, я готов оказать всяческую помощь. Думаю это может быть полезным для тех, кому хотелось бы поучаствовать в open source проекте, плюс получить опыт в области Machine learning, применить технологии deep learning для своих задач, получить опыт CUDA разработки.
Кто заинтересовался, пишите мне в ЛС.
Автор: intelligenceAgent
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/40968
Ссылки в тексте:
[1] Matlabcentral: http://www.mathworks.com/matlabcentral/fileexchange/24291-cnn-convolutional-neural-network-class
[2] Применение нейросетей в распознавании изображений: http://habrahabr.ru/post/74326/
[3] CudaCnn: https://sites.google.com/site/mihailsirotenko/projects/cuda-cnn
[4] хостится на bigbucket: https://bitbucket.org/intelligenceagent/cudacnn-public/wiki/Home
[5] Источник: http://habrahabr.ru/post/190132/
Нажмите здесь для печати.