| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > З чего начать? |
| Автор: Wolandello 26.7.2009, 13:44 |
| Привет народ! Сейчас изучаю С и уже имею фундаментальные знание по етому языку. Хочу посвятить себе сфере разпозания образов (отпечатки пальцов, лица людей). З чего начать изучать. Порекомендируйте лытературу или сайты |
| Автор: Bitter 26.7.2009, 15:32 |
| Начни с орфографии |
| Автор: Cheloveck 26.7.2009, 16:28 |
| Начать нужно с имения не фундаментальных, а хороших знаний. Затем освоение разнообразных библиотек. После этого понять разницу между целью жизни и задачей, так как распознание чего-либо - это одна из задач, которую тебе, может быть, нужно решить! |
| Автор: unicuum 26.7.2009, 17:52 |
Присоединяюсь. |
| Автор: Dims 26.7.2009, 19:53 |
| Начинай с нейронных сетей. Их достаточно просто программировать и притом они достаточно эффективны. |
| Автор: Pavia 26.7.2009, 22:45 |
| Wolandello, Привет друг. Из литературы я бы порекомендовал "Понс, Форсайт Компьютерное зрение" Хотя когда я ее только увидел книжка мне показалась тяжелой. А сейчас набрался знаний из других источников теперь неинтересно все наю все понятно все легко. Поддерживаю предложения начать с Нейронных Сетей, так как это достаточно универсальный алгоритм и чаще всего все сходится к ним. Хотя сейчас популярнее Support Vector Machine. Тут еще порекомендую boost(усиление) имеется введу алгоритм Ada boost, усиления слабых классификаторов путем состовления из слабых одного сильного. Дальше можно еще много всего написать. |
| Автор: VictorTsaregorodtsev 27.7.2009, 16:08 |
| Pavia, SVM в задачах многослойные нейросетки не переплюнут. Доказано в статье 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 на пиксел влево или вправо - то по "зажженным" пикселам пересечения с исходным изображением не будет вообще). А в многослойных сетях (вернее, в вариантах со специальной организацией локальных рецептивных полей нейронов) возможно следующее: некоторый детектор признаков (нейрон) сканирует изображение и индицирует нужные "позиции", в которых детектор этого признака срабатывает. а на следующем слое (тоже на нейроне, у которого рецептивное поле тоже ограничено, т.е. который оперирует только с некоторой окрестностью на изображении, т.е. получает довольно близкие, по картинке, выходы детекторов) возможно объединение результатов одного или нескольких детекторов на основе функции И или ИЛИ (в зависимости от конкретных весов этого нейрона), ну и так далее от слоя к слою можно строить всё более и более высокоуровневые многошаговые детекторы признаков, инвариантные к некоторым изменениям изображения на фрагменте картинки. Плюс от слоя к слою в многослойной сети возможна организация даунсэмплинга (уменьшения размера) изображения - тогда немного сдвинутые/повернутые изображения после перемасштабирования превращаются, фактически, в одно - т.е. после обучения по некоторому эталону потом можно будет распознавать и его немного сдвинутые/развернутые (на несколько градусов вправо-влево) изображения даже без применения специальных методов обучения (такие тоже есть). Ну и плюс там еще доказательства нескольких мелочей. |
| Автор: VictorTsaregorodtsev 12.9.2009, 20:42 |
| shara, Да это обычный бэкпроп делает для любой слоистой сети. Имеется в виду то, что при малых по модулю весах синапсов, идущих к некоторому нейрону, его активация (в положительную или отрицательную сторону, т.е. в сторону от "среднего"/нулевого значения) будет возможна только при активациях всех или большинства нейронов предыдущего слоя (посылающих сигналы на этот нейрон). Это - "реализация"-аппроксимация функции И. Если же веса синапсов по модулю достаточно велики, то нейрон может быть активирован единственным возбужденным нейроном предыдущего слоя (функция ИЛИ). И пойнт был в том, что предыдущие слои нейронов можно организовывать в виде специальных детекторов признаков, а затем изучать построенную нейросеткой при обучении логику распознавания для сопоставления с нейрофизиологическими механизмами. А также в том, что реализованная нейроном функция ИЛИ позволяет обеспечивать инвариантность к тем или иным преобразованиям образа, если предыдущие слои реализованы в виде наитупейшего сканирования всех возможных вариантов сдвига/смещения/... А функция И позволяет объединять несколько локальных признаков на изображении в отклик касательно принадлежности изображения определенному классу. Т.е. в общем-то банальности, на практике мало полезные из-за необходимости лезть в потроха сети для конструирования её структуры или её интерпретации. |
| Автор: shara 12.9.2009, 22:00 |
| Bitter, человек за помощью обратился не к учителю русского! зачем только засорять топик подобными "советами"?? Добавлено @ 22:09 VictorTsaregorodtsev, но что обратное распространение ошибки дает такой результат .. я считал что из обученной сети очень тяжело или даже невозможно вытащить логику ее работы и принципы по которым она дает ответ - видать не все так запущенно. а распознавание зеркального отображения графических изображений думаю можно реализовать на стадии обучения (подавать эталонные образы в нескольких вариантах - не искаженных а именно преобразованных) |
| Автор: VictorTsaregorodtsev 15.9.2009, 16:21 | ||
Мой нейрософт (и кандидатский диссер) 10+ лет назад начинался с заточки под решение задачи извлечения знаний из обученной нейронной сети (и представление этих знаний, например, в виде набора правил логического вывода). В мире тоже много народу в 90е годы занимались задачами knowledge extraction из нейросеток. Но вот на практике мне это в последствии не особо оказалось нужным - нужнее бывает генерация отдельного модуля (описывающего функционирование обученной нейросети) на некотором языке программирования - чтобы можно было созданную в моей проге сетку вставить в прогу пользователя. |