Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > З чего начать?


Автор: Wolandello 26.7.2009, 13:44
Привет народ! Сейчас изучаю С и уже имею фундаментальные знание по етому языку. Хочу посвятить себе сфере разпозания образов (отпечатки пальцов, лица людей). З чего начать изучать. Порекомендируйте лытературу или сайты

Автор: Bitter 26.7.2009, 15:32
Начни с орфографии

Автор: Cheloveck 26.7.2009, 16:28
Начать нужно с имения не фундаментальных, а хороших знаний. Затем освоение разнообразных библиотек. После этого понять разницу между целью жизни и задачей, так как распознание чего-либо - это одна из задач, которую тебе, может быть, нужно решить!

Автор: unicuum 26.7.2009, 17:52
Цитата(Bitter @  26.7.2009,  15:32 Найти цитируемый пост)
Начни с орфографии 

Присоединяюсь.

Автор: Dims 26.7.2009, 19:53
Начинай с нейронных сетей. Их достаточно просто программировать и притом они достаточно эффективны.

Автор: Pavia 26.7.2009, 22:45
Wolandello, 
Привет друг.  smile Тут нужно скорее не столько хорошии знания, сколько разнообразные.

Из литературы я бы порекомендовал "Понс, Форсайт Компьютерное зрение" Хотя когда я ее только увидел книжка мне показалась тяжелой. А сейчас набрался знаний из других источников теперь неинтересно все наю все понятно все легко.  smile 

Поддерживаю предложения начать с Нейронных Сетей, так как это достаточно универсальный алгоритм и чаще всего все сходится к ним.  Хотя сейчас популярнее Support Vector Machine. smile 

Тут еще порекомендую boost(усиление) имеется введу алгоритм Ada boost, усиления слабых классификаторов путем состовления из слабых одного сильного. smile 

Дальше можно еще много всего написать. 

Автор: VictorTsaregorodtsev 27.7.2009, 16:08
Pavia, SVM в задачах 
Цитата(Wolandello @  26.7.2009,  13:44 Найти цитируемый пост)
разпозания образов (отпечатки пальцов, лица людей)

многослойные нейросетки не переплюнут. Доказано в статье Bengio Y., LeCun Y. Scaling learning algorithms towards AI / Large-scale kernel machines (L.Bottou, O.Chapelle, D.DeCoste, J.Weston eds), MIT Press, 2007.

Автор: Pavia 27.7.2009, 19:52
VictorTsaregorodtsev, А можете раскозать по подробнее. А то 40 с на английском это тяжело.
Как по мне НС и SVM одно и тоже просто вид с другой позиции. SVM более понятнее. Так что то что не превосходят ничего удивительного. Вопрос в том если отстают, то почему?

Автор: VictorTsaregorodtsev 29.7.2009, 15:11
Pavia, В распознавании изображений простое запоминание эталонов никому не нужно (эталоны можно и так хранить и сравнивать с ними поступающее на распознавание новое изображение). Нужно обеспечение инвариантности распознавания к сдвигам, поворотам, аффинным и нелинейным преобразованиям объекта на изображении. И SVM не может "обобщить" эталон на все его новые возможные положения, например (если сдвинуть английскую l на пиксел влево или вправо - то по "зажженным" пикселам пересечения с исходным изображением не будет вообще). А в многослойных сетях (вернее, в вариантах со специальной организацией локальных рецептивных полей нейронов) возможно следующее: некоторый детектор признаков (нейрон) сканирует изображение и индицирует нужные "позиции", в которых детектор этого признака срабатывает. а на следующем слое (тоже на нейроне, у которого рецептивное поле тоже ограничено, т.е. который оперирует только с некоторой окрестностью на изображении, т.е. получает довольно близкие, по картинке, выходы детекторов) возможно объединение результатов одного или нескольких детекторов на основе функции И или ИЛИ (в зависимости от конкретных весов этого нейрона), ну и так далее от слоя к слою можно строить всё более и более высокоуровневые многошаговые детекторы признаков, инвариантные к некоторым изменениям изображения на фрагменте картинки.
Плюс от слоя к слою в многослойной сети возможна организация даунсэмплинга (уменьшения размера) изображения - тогда немного сдвинутые/повернутые изображения после перемасштабирования превращаются, фактически, в одно - т.е. после обучения по некоторому эталону потом можно будет распознавать и его немного сдвинутые/развернутые (на несколько градусов вправо-влево) изображения даже без применения специальных методов обучения (такие тоже есть).
Ну и плюс там еще доказательства нескольких мелочей.

Автор: shara 12.9.2009, 17:15
VictorTsaregorodtsev, 
интересный пост
по прочтению возник вопрос, кто занимается АРХИТЕКТУРОЙ этой многослойной НС вчасности интересует 
Цитата(VictorTsaregorodtsev @  29.7.2009,  14:11 Найти цитируемый пост)
возможно объединение результатов одного или нескольких детекторов на основе функции И или ИЛИ (в зависимости от конкретных весов этого нейрона), 
 
надеюсь что сие делает алгоритм обучения сам без участия человека
если да, то он отличается от стандартного "обратного распространения ошибки" от слоя к слою. 

если не затруднит - очень хотелось бы видеть общую блок схему или псевдокод..

З.Ы. а как быть с зеркальным отображением?

Автор: VictorTsaregorodtsev 12.9.2009, 20:42
shara, Да это обычный бэкпроп делает для любой слоистой сети.
Имеется в виду то, что при малых по модулю весах синапсов, идущих к некоторому нейрону, его активация (в положительную или отрицательную сторону, т.е. в сторону от "среднего"/нулевого значения) будет возможна только при активациях всех или большинства нейронов предыдущего слоя (посылающих сигналы на этот нейрон). Это - "реализация"-аппроксимация функции И. Если же веса синапсов по модулю достаточно велики, то нейрон может быть активирован единственным возбужденным нейроном предыдущего слоя (функция ИЛИ). 
И пойнт был в том, что предыдущие слои нейронов можно организовывать в виде специальных детекторов признаков, а затем изучать построенную нейросеткой при обучении логику распознавания для сопоставления с нейрофизиологическими механизмами. А также в том, что реализованная нейроном функция ИЛИ позволяет обеспечивать инвариантность к тем или иным преобразованиям образа, если предыдущие слои реализованы в виде наитупейшего сканирования всех возможных вариантов сдвига/смещения/... А функция И позволяет объединять несколько локальных признаков на изображении в отклик касательно принадлежности изображения определенному классу.
Т.е. в общем-то банальности, на практике мало полезные из-за необходимости лезть в потроха сети для конструирования её структуры или её интерпретации.

Автор: shara 12.9.2009, 22:00
Bitter, 

Цитата(Bitter @  26.7.2009,  14:32 Найти цитируемый пост)
Начни с орфографии 


человек за помощью обратился не к учителю русского! 
зачем только засорять топик подобными "советами"??



Добавлено @ 22:09
VictorTsaregorodtsev, 


но что обратное распространение ошибки дает такой результат .. я считал что из обученной сети очень тяжело или даже невозможно вытащить логику ее работы и принципы по которым она дает ответ - видать не все так запущенно. 

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

Автор: VictorTsaregorodtsev 15.9.2009, 16:21
Цитата(shara @  12.9.2009,  22:00 Найти цитируемый пост)
я считал что из обученной сети очень тяжело или даже невозможно вытащить логику ее работы и принципы по которым она дает ответ - видать не все так запущенно. 

Мой нейрософт (и кандидатский диссер) 10+ лет назад начинался с заточки под решение задачи извлечения знаний из обученной нейронной сети (и представление этих знаний, например, в виде набора правил логического вывода). В мире тоже много народу в 90е годы занимались задачами knowledge extraction из нейросеток. Но вот на практике мне это в последствии не особо оказалось нужным - нужнее бывает генерация отдельного модуля (описывающего функционирование обученной нейросети) на некотором языке программирования - чтобы можно было созданную в моей проге сетку вставить в прогу пользователя.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)