Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.04.2011, 19:33
Новичок

Отправить личное сообщение для stanislav.l Посмотреть профиль Найти все сообщения от stanislav.l
 
Регистрация: 23.03.2011
Сообщений: 6

Глупый теор. вопрос про распознавание изображений
Предупреждение:
1. Я не собираюсь делать распознавание, чиста "апагаварить"
2. Поскольку в вопросе чайник, прошу простить незнание, и отвечать как чайнику. Если неохота до уровня чайника опускаться - не надо отвечать вообще


Итак, немножко почитал на форумах как народ в основном делает распознавание: а тупо предъявляет сети неск. десятков изображений и ждет от нее интеллектуальных выводов...

Допустим, хочу распознавать буквы (классика).
Допустим для простоты, что буквы одного размера, градации яркости отсутствуют.
Очевидно, что если буква представлена в виде битового массива, то та же буква, повернутая на 10 градусов, даст нам абсолютно другой битовый массив, не имеющий абсолютно ничего общего с первым. (Тему "операция поворота" разовью чуть ниже)
То-есть, для корректного распознавания буквы, я должен предъявить ее 20-50-100 раз под разными углами поворота; а сеть будет запоминать их как разные изображения, просто принадлежащие к одному классу. То-есть, размер сети для такого метода должен быть в Эн раз больше, чем для "запоминания" одной буквы в "правильном" положении. То-есть, этот метод можно назвать brute force - бездумно тратим память и время процессора, потому что их вроде бы много и можно не морочиться...

Мне могут возразить: общее между массивами есть - один переводится в другой "операцией поворота"! Да, это так, но, ИМХО, наивно думать, что наша примитивная сеть сможет сама до этой операции "додуматься".
Вот если я сам сначала создам отдельную сеть, которую "научу" выполнять "операцию поворота" над любыми битовыми массивами, а потом как-то интегрирую эту сеть в схему распознавания... Но лично я абсолютно не представляю с какого конца за такую интеграцию браться, эту ветку рассуждений пока отнесем к научной фантастике...

Напрашивается следующая, вроде бы "рабочая" мысль: пишем сами функцию поворота, а затем предъявляем сети, обученной на одном "прямом" примере, исходное изображение под различными углами поворота и проверяем - нет ли на выходе сигнала уверенного распознавания ?
Без проверки можно сказать, что такое работать будет и очень хорошо, но - в "тепличных" условиях - фиксированный размер, фиксированная ось поворота... А если мы сделаем 3 вложенных цикла, в которых будем "крутить" и размер и положение оси поворота, то по эффективности сразу окажемся во всем известном месте.

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

Вопрос: как же поступают умные дядьки ?
  #2  
Старый 05.04.2011, 23:43
гocть

 
Сообщений: n/a

Цитата:
Напрашивается следующая, вроде бы "рабочая" мысль: пишем сами функцию поворота, а затем предъявляем сети, обученной на одном "прямом" примере, исходное изображение под различными углами поворота и проверяем - нет ли на выходе сигнала уверенного распознавания ?
Без проверки можно сказать, что такое работать будет и очень хорошо,
не, это не есть хорошо. неизвестно как поведет себя твой классификатор в новой, невиденной им ранее во время обучения области пространства. теоремы про обобщающую способность, как правило, предполагают, что распределение входных данных во время обучения такое же как и во время проверки. если же проверяешь работу на совсем другом распределении, чем обучаешь, то х/з что получится, никто никаких гарантий тебе не даст

Цитата:
Вопрос: как же поступают умные дядьки ?
да, расширить выборку поворотами - стандартный прием.
еще можно попробовать добавить к классификатору каких-нибудь инвариантных к поворотам фичей, например SIFT
еще есть прием под названием tangent propagation
но понять как все это себя поведет и сколько даст - понять можно только попробовав...
  #3  
Старый 06.04.2011, 04:56
Аватар для pavlinux
Пользователь

Отправить личное сообщение для pavlinux Посмотреть профиль Найти все сообщения от pavlinux
 
Регистрация: 16.11.2008
Сообщений: 93

Сообщение от stanislav.l Посмотреть сообщение
Вопрос: как же поступают умные дядьки ?
http://ftpmirror.gnu.org/ocrad/
  #4  
Старый 06.04.2011, 20:17
гocть

 
Сообщений: n/a

Сообщение от pavlinux Посмотреть сообщение
http://ftpmirror.gnu.org/ocrad/
там вручную написанные алгоритмы, а не обучение по данным как в нейронные сети и т.п. и пробелема поворотов по моему не рассматривается
  #5  
Старый 07.04.2011, 00:14
Пользователь

Отправить личное сообщение для lordKelvin Посмотреть профиль Найти все сообщения от lordKelvin
 
Регистрация: 25.01.2010
Сообщений: 51

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


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распознавание картинки. C-Coder Обработка изображений, звук, графика 19 15.10.2010 02:36
оценка сжатия изображений Мари Обработка изображений, звук, графика 0 04.04.2010 12:54
обработка изображений на delphi гость Реализация, исходники, языки 1 17.05.2009 21:02
распознавание образов ZevS Искусственный интеллект, нейронные сети 3 25.04.2008 23:14
распознавание образов Mayor Обработка изображений, звук, графика 1 09.10.2007 18:06