GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.20 (23)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Распознавание рукописного текста
Slava
Сообщений: 3070
На: Распознавание рукописного текста
Добавлено: 28 сен 11 21:40
вы не услышали или по крайней мере именно на это не прореагировали - главное там было в том, что компьютер, наблюдая за манипуляциями человека по одеванию девочки, открывал какие-то законы, лежащие за этим, и начинал подсказывать варианты действий, исходя уже из этих законов. других игрушек я не видал и поэтому о них ничего сказать не могу. а было это достаточно давно. думаю, где-то во второй половине восьмидесятых или несколько позже. помню, все это делалось чуть ли не на первых виндах. если это нужно, можно и уточнить
[Ответ][Цитата]
гость
88.215.147.*
На: Распознавание рукописного текста
Добавлено: 28 сен 11 22:33
Цитата:
Автор: Slava

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

да, я не поверил что компьютер "наблюдает" я подумал, что программа, просто обрабатывала действия пользователя по заранее определенному алгоритму, но раз вы говорите, что там ищутся законы по одеванию девочки, ...ладно пусть так :-)
и еще, в конце 80, начале 90, Е. Литвинов, вероятно, работал с графикой в VGA режиме, инструментов и библиотек для работы с графикой у него, вероятно, было мало, не знаете, как ему удалось сделать красиво? :-)
[Ответ][Цитата]
Slava
Сообщений: 3070
На: Распознавание рукописного текста
Добавлено: 28 сен 11 22:54
это была первая команда, которая с отечественным нейропроцессором вышла на мировой рынок. они там все сами программировали. фирмы давно нет, Жени - тоже. возможно, где-то что-то и осталось, но шансов найти немного. знаю, что там была их сеть, которая в динамике обучалась и прогнозировала варианты. внимательно смотрел. ощущение было очень хорошее. Женя потом ушел на психфак. Была там у него на моховой лаборатория какая-то. может, там какие-то следы сохранились. но подозреваю, что там, скорее, главным был нейроимитатор -другой его интересный проект
[Ответ][Цитата]
Андрей
Сообщений: 3441
На: Распознавание рукописного текста
Добавлено: 29 сен 11 0:08
Дополнительные мысли к вышеобъявленной задаче.
5. Не следует требовать от машины того, чего не может сделать человек. Т.е. машина не должна угадывать мазню человека лучше, чем эту мазню может угадать какой-то другой человек. На первых порах.
6. Прогноз формируется за 1 кадр мышления, но его глубина может (и должна) быть больше чем 1 кадр. Видимо "смелеть" машина должна по мере обретения знаний. Чем лучше она станет прогнозировать на короткие сроки, тем больший горизонт прогноза она должна себе позволять.
7. Матаппарат теории вероятностей для решения данной задачи не нужен. Тут нужна правильная организация памяти. Долгосрочной и краткосрочной. Когда человек видит предмет он не думает, что это - ведро с вероятностью 95% или кастрюля - с вероятностью 56%. Он думает так: "это ведро - стопудово! но сейчас я его буду использовать как кастрюлю" При этом, это и ведро и кастрюля абсолютно, на 100%. Человек в целом, как и нейрон в отдельности, действует по принципу "всё или ничего" - иначе человек не смог бы и пальцем пошевелить. Он должен действовать однознано и с абсолютной уверенностью, абсолютно ошибаться и абсолютно уверенно исправлять ошибки, плодя следующие абсолютные ошибки (но уже чуть поменьше).
8. Каждый рецептор должен обладать своей собственной памятью и делать собственный прогноз. Но должен обмениваться полезными находками со всеми остальными. При необходимости могут создаваться над-структуры для формирования над-рецепторной памяти, чтобы помогать рецепторам делать прогноз исходя из контекста.
9. Чтобы не мучать программу, начинать нужно с банального - прямых линий.
[заготовочка]
[Ответ][Цитата]
гость
77.88.218.*
На: Распознавание рукописного текста
Добавлено: 01 окт 11 12:42
Андрей, спасибо, прочитал. Я должен заметить, что вы очень глубоко проникли в основы памяти, восприятия и прогнозирования, и в принципе находитесь на правильном пути. Вы уже не первый год мелькаете на экране моего монитора при чтении разных "говно теорий об ИИ", написанных слесарями-энтузиастами в перерыве между основной работой. Респект вам! Как-нибудь займусь чтением всех ваших постов на этом форуме, может найду что полезное для себя.
[Ответ][Цитата]
гость
190.90.36.*
На: Распознавание рукописного текста
Добавлено: 01 окт 11 13:20
Цитата:
Автор: гость

Я должен заметить, что вы очень глубоко проникли в основы памяти, восприятия и прогнозирования


Главное, чтобы предположения перешли в стройную теорию, которая подтвердилась практикой. А пока только гипотезы, основанные в большей степени на своих же более ранних гипотезах
[Ответ][Цитата]
Андрей
Сообщений: 3441
На: Распознавание рукописного текста
Добавлено: 31 дек 11 14:20
Для визуальных экспериментов сделал программку. Она показывает слева-направо в виде спектра усреднённый цвет картинки под курсором в радиусе от 1 точки до 200 точек. Каждому радиусу соответствует полоса "спектра" шириной 4 точки.
[Ответ][Цитата]
Эгг
Сообщений: 10178
На: Распознавание рукописного текста
Добавлено: 31 дек 11 18:53
Цитата:
Автор: Андрей
Для визуальных экспериментов сделал программку

открою тебе один секрет (прими как подарок к Новому Году) - математика может быть любая, от математики ничего не зависит... всякая конкретная математика - это не более, чем оптимизация процесса решения...
[Ответ][Цитата]
Андрей
Сообщений: 3441
На: Распознавание рукописного текста
Добавлено: 31 дек 11 20:41
Цитата:
Автор: Egg
прими как подарок
Благодарю. Пойду думать...
[Ответ][Цитата]
Андрей
Сообщений: 3441
На: Распознавание рукописного текста
Добавлено: 14 авг 12 11:25
Старенький но симпотишный пример распознавалки текста, написанный на Delphi (с исходниками).
Для тех, у кого нет компилятора, выкладываю также исполняемый файл.
[Ответ][Цитата]
Андрей
Сообщений: 3441
На: Распознавание рукописного текста
Добавлено: 14 май 13 14:27
Попробуем создать распознавалку графических образов (цифр) на принципах человеческого восприятия (как я их понимаю), невзирая на скорость работы алгоритма. Т.е. там, где в биологическом распознавателе действует принцип параллельности, в программном распознавателе будем использовать последовательный перебор вариантов.

В программу заложены следующие идеи.
В каждый момент времени распознавания обязательно есть 2 объекта: над-объект и под-объект.
В начальный момент времени над-объект - это прямоугольный битмап (очевидно, что без этого над-объекта никак нельзя, даже когда мы сканируем строки изображения, мы уже должны располагать информацией о ширине, высоте, палитре - т.е. обладать какой-то информацией о над-объекте, значит уже распознать его). Начальный под-объект - это квадратный пиксель, который может быть белого или чёрного цвета.

Важно. В каждый момент распознавания у нас всего один над-объект. Под-объектов в рамках текущего над-объекта у нас всегда больше чем один и они обязательно не равны по некоторому признаку. В данном случае под-объекты равны по 2-м признакам: размеру (все пиксели - это равные квадратики) и по признаку принадлежности к над-объекту (все пиксели принадлежат битмапу). И не равны тоже по 2-м признакам - цвету и месторасположению.

Этап 1.
В начальный момент времени у нас один над-объект (битмап, "лист бумаги") и много под-объектов (квадратные пиксели). Вся совокупность под-объектов в точности соответствует над-объекту. Т.е. они являются взаимозаменяемыми описаниями друг-друга. Это важно т.к. в восприятии человека нет никаких разрывов-зазоров, рецепторное поле человека в каждой своей точке обязательно заполнено каким-то объектом.

Этап 2.
Мы объединяем (синтезируем) под-объекты в новый над-объект по некоторому новому фильтру-признаку, которого не было изначально. Этот новый фильтр может использовать только неравенство под-объектов по какому-то признаку. Под-объекты (пиксели), как мы уже выяснили, не равны по цвету и координатам. Поэтому я использовал такой фильтр - если вокруг пикселя на единичном расстоянии есть пиксель с таким же цветом, то они тождественны. Т.е. объединяю пиксели по признаку восьмисвязности. В итоге все пиксели объединяются в отдельные "островки".

Поиграться можно здесь. Числа показывают количество точек в островке. Картинку можно двигать мышкой. Работает только с bmp-файлами.

Кому интересно, в общем виде алгоритм выглядит так:
- сканируем строки и находим связанные блоки из последовательных тёмных пикселей,
- если над блоком, в предыдущей строке сверху, нет ни одного объекта - создаём новый объект и запоминаем верхнюю координату Y этого объекта,
- если над блоком есть один или несколько объектов то сливаем их все в один объект, именуя их по самому верхнему объекту.

Теперь смотрим, что у нас получилось. Введя новый фильтр (равенство цветов + расстояние) мы создали новый слой абстракции. Теперь над-объект - это битмап. И он состоит из новых под-объектов "островков", которые в свою очередь являются над-объектами для под-объектов - пикселей. Изначально у нас было 2 слоя (битмап, пиксели), теперь стало 3 слоя (битмап, островки, пиксели).

Следующие шаги распознавания можно рекурсивно разделить между этими слоями и строить над-объекты из островков в рамках битмапа, и над-объекты из пикселей в рамках островков. Отметим, что как и на первом этапе каждый над-объект по прежнему целиком и полностью описывается под-объектами, без "зазоров". Но островки (как под-объекты битмапа) теперь равны по двум другим признакам - цвет и принадлежность над-объекту. Размеры и формы у островков разные и это дополнительные признаки, по которым мы теперь можем изобрести для них какие-то другие новые фильтры-признаки.
У пикселей теперь тоже появился новый признак - принадлежность к островку.

Мы пока не будем усложнять до предела и запускать на рекурсию всё это дело. Попробуем разобраться с механикой построения новых признаков-фильтров в рамках одного "островка".

Введём новый фильтр-признак и выделим (объединим, синтезируем) последующие под-объекты в рамках островков.

Этап 3.
Как мы уже выяснили, чтобы создать новый фильтр-признак нам нужны только те признаки, по которым под-объекты (в данном случае - пиксели) могут быть нетождественны в данном над-объекте. Пиксели в рамках одного островка (над-объекта) тождественны по размеру и цвету. Они не тождественны по координатам и по цвету соседей (есть крайние пиксели и внутренние пиксели). Значит нам нужен новый фильтр-признак, разделяющий их по координатам и/или по признаку соседства. Самый простой фильтр - соединить рядом-стоящие пиксели если они равны между собой по тому признаку, что их цвет не равен цвету соседних пикселей. Т.е. выделить крайние точки.

После этого в рамках каждого "островка" у нас появляется от одного до N дополнительных под-объектов в зависимости от графического образа. Например у образа "1" появится один дополнительный под-объект, а у "8" - 3 дополнительных под-объекта. Но в таком случае остальная масса точек "островка" остаётся незадействованной. После многих экспериментов я пришёл к выводу, что эти внутренние точки малоинформативны и дают сведения только о "массе" или "жирности" образа. Наиболее информативным под-объектом для быстрого различения формы оказался внешний контур.

Этап 4.
В рамках объекта "внешний контур" мы очень ограничены в фильтрах и по сути можем отличать одни пиксели контура от других только углом поворота и длиной похожих участков. Я сделал простой фильтр, отличающий правые повороты от левых поворотов и фиксирующий их длину. Распознавалку рукописных цифр на этом принципе можно скачать здесь. Она неплохо опознаёт цифры 0, 3, 8 и 9, остальные кое-как. Цифры можно рисовать мышкой или загружать из файла. Рисовать - левой кнопкой, двигать битмап - правой.

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

Выводы.
1. Для распознавания всегда нужно минимум 2 объекта - над-объект и под-объект.
2. Человеческое распознавание глубоко рекурсивно и использует признаки с разных уровней рекурсии (абстракции) для хорошего распознавания.
3. Новые признаки-фильтры можно создавать только из тех признаков, по которым под-объекты не тождественны в рамках над-объекта.
4. Под-объекты самого нижнего уровня ("пиксели") содержат в себе всю информацию (помнят) о том, к каким над-объектам они относятся.

Отличие этой распознавалки от человеческой в том, что все новые дополнительные признаки я подбирал эвристически и жёстко задавал программно. Программа не может их модифицировать. Полноценный же ИИ должен новые признаки-фильтры генерировать сам, по какому-то единому универсальному принципу.
[Ответ][Цитата]
Kek
Сообщений: 1118
На: Распознавание рукописного текста
Добавлено: 14 май 13 15:24
Цитата:
Автор: Андрей
Отличие этой распознавалки от человеческой в том, что все новые дополнительные признаки я подбирал эвристически и жёстко задавал программно. Программа не может их модифицировать. Полноценный же ИИ должен новые признаки-фильтры генерировать сам, по какому-то единому универсальному принципу.


Потестировал цифры - здорово!
Текст программы не смотрел пока.
Но вот что интересно:
"- сканируем строки и находим связанные блоки из последовательных тёмных пикселей,"
У человека нет строк, нет Декарта. Мне кажется надо в полярные координаты переходить. И вводить такое понятие как центр масс взаимосвязанного объекта.
Фокус внимания всегда направлен на центр масс вначале, а потом идет развертка по кругу.


[Ответ][Цитата]
Андрей
Сообщений: 3441
На: Распознавание рукописного текста
Добавлено: 14 май 13 16:04
У человека и плоскостей нет, у него всё в объёме находится и с перспективой. Имхо, каждая различимая точка пространства в человеческом восприятии имеет уникальное месторасположение (относительно центра вестибулярного аппарата, например). Чем дальше от наблюдателя - тем этих точек меньше.
Я подвожу к тому, что никаких особых "центральных точек образа" нет вообще. Потому что каждая точка - это точка отсчёта. Каждый образ - это точка отсчёта для других образов. И каждый образ - это образ в каждой своей точке. И это, кстати, и звукового восприятия касается. Нет смысла распознавать "звук вообще". Звук - это обязательно "звук в некоторой точке субъективного пространства". Распознавание всегда подразумевает позиционирование.

В программе, конечно, от чего-то пока приходится отталкиваться, можно и от полярных координат, можно и от строк - результат будет один и тот же. Сейчас для меня главная задача - нащупать общий принцип синтеза новых фильтров.
[Ответ][Цитата]
rrr3
Сообщений: 10715
На: Распознавание рукописного текста
Добавлено: 14 май 13 22:21
Цитата:
Автор: Андрей
Выводы.
1. Для распознавания всегда нужно минимум 2 объекта - над-объект и под-объект.
2. Человеческое распознавание глубоко рекурсивно и использует признаки с разных уровней рекурсии (абстракции) для хорошего распознавания.
3. Новые признаки-фильтры можно создавать только из тех признаков, по которым под-объекты не тождественны в рамках над-объекта.
4. Под-объекты самого нижнего уровня ("пиксели") содержат в себе всю информацию (помнят) о том, к каким над-объектам они относятся.

Отличие этой распознавалки от человеческой в том, что все новые дополнительные признаки я подбирал эвристически и жёстко задавал программно. Программа не может их модифицировать. Полноценный же ИИ должен новые признаки-фильтры генерировать сам, по какому-то единому универсальному принципу.


Может я что-то не понял, но попробую перевести на то, что говорилось в этом плане на другом языке.
1. Для определения (распознавания) системы всегда нужно как минимум 2 уровня - какое-то "внешнее" свойство (над-объект) системы (иначе проблемы по теореме Геделя) и элементы (свойство/свойства элементов обеспечивающие системность по уровню системы). Другими словами уровень системы в "общем" и уровень элементов этой системы (над-объект и под-объект).
2. Не требуется перевода.
3. Системы (элементы) не могут быть определены/распознаны только по свойствам входящих в них элементов и должны быть обязательно "сравнены" с другими системами "своего" уровня. Т.е. системное свойство задается через сравнение со своим "внешним" окружением ("не тождественны"). Если элементы одной системы тождественны элементам другой системы, то системы - равны.
4. Из элементов нижнего уровня невозможно вывести свойства системы уровня 3 (через уровень). Т.е. для распознавания/определения системы нужны именно смежные уровни. Принадлежность элемента системе определяется зависимостью системного свойства ("внешнего" свойства системы) от свойств этого элемента системы.

п.п. 1 и 3 можно объединить (в принципе - одно и то же).

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



Может что напутал, прошу тапки выбирать не тяжелые. По сути все это теорема Геделя вывернутая наизнанку.
[Ответ][Цитата]
Kek
Сообщений: 1118
На: Распознавание рукописного текста
Добавлено: 14 май 13 23:49
Цитата:
Автор: Андрей
задача - нащупать общий принцип синтеза новых фильтров.

А эта задача общая для распознавания вообще чего угодно...
Интересно какие вы принципы здесь видите...
Я со звуком начал работать именно для того, чтобы на его основе подойти к осмыслению именно этой задачи: условно - "синтез фильтров". И эти фильтры должны быть иерархическими: первые слои сенсорнозависимые - следующие инвариантны относительно потока. Но это гипотеза...
Ну, самый простой пример инвариантного фильтра - это упорядочивание.
[Ответ][Цитата]
 Стр.20 (23)1  ...  16  17  18  19  [20]  21  22  23<< < Пред. | След. > >>