GotAI.NET

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

 

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

 Все темы | Новая тема Стр.3 (18)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Распознование текста
Corwin
Сообщений: 1324
На: Распознование текста
Добавлено: 08 янв 08 20:03
Занятно. Разрывы на предложеных Вами картинках вообще не представляют особых сложностей. Думаю можно будет даже обойтись без векторных методов склеивания - достаточно по пиксельной обработки поступающей картинки. Зато с шумом весьма проблемно - зачастую полоски шума имеют туже ширину что и линии символа.
По поводу самой выборки символов - Цифры и только крупные символы латыни (причем фиксированного шрифта) существенно упрощают сам процесс распознавания.
Учитывая высокую степень деформации символов думаю что наиболее эффективным методом распознания будет как раз векторное распознавание (если конечно удастся обойти проблему с шумами). Даже SymvecView справился с некоторыми символами, хотя первоначально эта программа разрабатывалась и обучалась для несколько других задач. Впрочем если ее переучить только под эту конкретную выборку символов и внести некоторые изменения в код то можно добиться неплохих результатов.
[Ответ][Цитата]
beliy
Сообщений: 20
На: Распознование текста
Добавлено: 08 янв 08 20:56
Выходит для данной задачи я выбрал правильный подход. Под "изменениями в коде" Вы подразумеваете модуль склеивания букв? Шум сдесь действительно является очень большой проблемой. Зачастую он даже образует некое подобие букв, которые при векторизации может быть распознано как определённый символ. Еще может помоч то что символов всегда 8 штук, и если программа опознала 9, то откинуть символ с самым малым coof(вот только проблема в том, что эти "образы" которые образует шум могут иметь больший coof чем настроящие буквы).
Да и еще. Мне всё таки кажется что способ подавления шума должен быть разработан логически именно под этот пример, общие методы наврятли помогут.
Если у кого есть идеи, буду рад их прочитать, к тому же очень благодарен.
Зарание спасибо.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознование текста
Добавлено: 08 янв 08 22:01
На тех картинках которые Вы предоставили проблем с "левым" шумом особых нет. Он в основном находиться внизу картинки (ниже средней линии текста) и по размеру занимает меньше места чем сам символ, так что его отфильтровать в процессе распознавания не составит большого труда.
Наибольшая проблема это линии которые перечеркивают символы. Из-за этого на векторном скелете образуются лишние ключевые точки (или даже закрытые области), что очень усложняет распознавание.
В SymvecView к примеру сравнение символов проходит через сравнение векторов. Векторы сравниваются от одной ключевой точки к другой (начало и конец вектора) и так дальше по цепочке ключевых точек (от одного вектора к другому), для этого используется рекурсия. Как бы эталонное представление символа пытается подстроиться под распознаваемое. Поэтому лишняя ключевая точка по средине вектора совершенно меняет весь ход подстраивания эталонного символа и неизвестного символа.
Если делать обход логически, тогда можно попробовать реализовать дополнительную рекурсию пропуская при сравнении некоторые ключевые точки, если они лежат на относительно прямой линии. Довольно сложно точно предсказать что из этого получиться. Конечно при небольших шумах эталонные символы будут более правильнее подстраиваться под распознаваемый символ что обеспечит более высокий уровень распознания. Но это также потребует дополнительных обработок символов типа "t" и "l". Хотя кажеться в больших буквах подобных спорных проблем должно быть меньше чем в маленьких.

>Под "изменениями в коде" Вы подразумеваете модуль склеивания букв?

Нет. Модуль склеивание букв это вообще дополнение поскольку его там нет В программе есть некоторые проблемы и неточности которые следовало бы поправить для использования. К примеру теже символы "D" и "О". Также следовало бы более лучше подобрать выбор параметров сравнения (длина, угол, кривизна векторов) именно для этой задачи.
[Ответ][Цитата]
beliy
Сообщений: 20
На: Распознование текста
Добавлено: 08 янв 08 22:45
Ок. Спасибо. Есть инфа, есть исходник, есть задача, а самое главное мозги. Будем думать.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Распознование текста
Добавлено: 09 янв 08 1:43
Corwin, а если векторизовать, а потом все это в ИНС засунуть. Ну для ИНС будет проще... шума уже нет, и все такое. Ну а некоторую изогнутость, как раз ИНС хорошо обработает.
И уберет всякие черточки ненужные. Что об этом думаешь?
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознование текста
Добавлено: 09 янв 08 3:23
Чесно говоря не совсем представляю как именно подавать векторизированый символ в ИНС.
Можно попробовать на основании векторов возобновить бинарное изображение. Это было бы весьма занятно ведь при векторизации мы как бы нормируем символ, можем весьма качественно подогнать его размеры под нужную НС, отфильтровать лишнее, сделать более качественную сегментацию (кластеризацию), даже сделать предварительный прогноз что это за символ.
Можно также попробовать подавать сами вектора или ключевые точки (вернее их параметры) на НС, но здесь проблема - к примеру символ состоит из 5 векторов. При искажении или даже просто при увеличении/уменьшении тотже символ будет состоять уже из 9 векторов. Т.е. сами вектора символа будут выглядеть для НС как шум.
Можно попробовать классифицировать вектора, к примеру на эти входные нейроны подавать только вектора заданного угла, на другие нейроны подавать вектора с другими углами. Так мы можем распознать в наборе векторов знакомые нам символы и не обращать внимания на "лишние" вектора которые могут быть шумом. Но при этом теряется "связанность" символа. Как уже раньше писалось при таком подходе в отпечатке пальца можно увидеть весь алфавит, поскольку там будут вектора со всеми возможными углами.
Можно классифицировать вектора, при этом разделить символ на регионы и за каждый регион будет отвечать своя НС... К примеру поделить символ на клеточки 3х3 (итого 9 НС на один символ получиться).
Должен заметить что при использовании НС мы можем получить весьма важный фактор - коэффициент степени "правильности" символа (в процентом соотношении от 0% до 100%) который довольно сложно получить при простом векторном подходе распознания.
[Ответ][Цитата]
beliy
Сообщений: 20
На: Распознование текста
Добавлено: 09 янв 08 10:36
Вчера ложился спать и тоже пришла мысль засунуть векторизированные изображения в нейроночку, вот толкьо не знал как ей всё это подать. Как всегда вывез Corwin. нравится идея с востановлением бинарного изображения. Жаль кожить не умею, что бы воплатить любую мысль, приходится какк в глухом телефоне передавать её в виде ТЗ програмеру.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Распознование текста
Добавлено: 09 янв 08 13:52
Цитата:
Автор: Corwin
Можно попробовать на основании векторов возобновить бинарное изображение. Это было бы весьма занятно ведь при векторизации мы как бы нормируем символ, можем весьма качественно подогнать его размеры под нужную НС

я про это и говорил.
Хотя как вы верно заметили, можно и с другими параметрами поизвращаться.... ну это уже не тривиально и надо думать.
[Ответ][Цитата]
гость
89.208.11.*
На: Распознование текста
Добавлено: 14 янв 08 19:00
я бы перевел все в пикселы, загнал в матрицу и откомпарировал все по контрасту бинарно.
затем решил бы задачу, что есть фон, а что полезная информация (фоновых пикселей больше). т.е. присвоил бы критерий истинности информативным пикселям.
затем, я бы начал вертеть символы, нашел бы ось симметрии и перепозиционировал все символы в вертикальное положение.

затем я бы взял наиболее часто используемые векторные шрифты (их много, но что делать) и начал бы сравнительный анализ, расставляя весовые коэффициенты соответствия.
Этот процесс я бы тоже разбил на несколько этапов.
сначала бы я определился с кеглем и интервалом, затем разбил бы буквы на широкие и узкие, имеющие круги и не имеющие круги в своем составе. Таким образом, обработка изображения заметно бы сократилась по времени.
[Ответ][Цитата]
гость
89.208.11.*
На: Распознование текста
Добавлено: 14 янв 08 23:44
векторное искажение не проблема. достаточно просто приводить пропорции в естесственный вид после того, как выровняете по вертикали.

для этого создаются несколько правил:
все изогнутые незамкнутые линии выпрямляются, все замкнутые преобразуются в круги.

в итоге приводим любой шрифт к общему знаминателю (цифровому шрифту).

линии помех можно легко выделить по соотношению длинн.
[Ответ][Цитата]
гость
89.208.11.*
На: Распознование текста
Добавлено: 14 янв 08 23:45
да, забыл сказать, длина приведенных к прямым линий стандартизируется.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознование текста
Добавлено: 15 янв 08 0:34
Всего комментировать не буду ибо долго...

>все изогнутые незамкнутые линии выпрямляются

Это довольно проблематично, поскольку:
1. Даже легкий шум может создавать замкнутые регионы там где их не должно быть.
2. Такие символы как "r", "j" фактически являются изогнутыми и незамкнутыми и простое выпрямление даст несколько нежелательный результат.
3. Изз-за "некачественного" изображения при векторизации могут получиться явные изогнутые линии там где должен быть прямой (или не очень) угол. К примеру "Г", "Е", "Б"

>все замкнутые преобразуются в круги.

Будут проблемы с такими символами где:
1. Замкнутый регион не является кругом.
2. Где после преобразования ЗР в круг символ будет сильно напоминать другой символ.
Для примера: "D", "Д", "А".

Лично я сейчас думаю что на закрытые регионы вообще не стоит обращать внимания. Разве что как альтернативный (дополнительный) показатель при сравнении.
[Ответ][Цитата]
гость
89.208.11.*
На: Распознование текста
Добавлено: 15 янв 08 7:48
озвученные проблемы простые Корвин. лень дописывать их решение. вы лучше в теме с вероятностями блесните.
[Ответ][Цитата]
beliy
Сообщений: 20
На: Распознование текста
Добавлено: 15 янв 08 7:54
Провелимы векторизацию, провели бинаризацию векторов. Получившиеся бинарники кидаем в нейронку. Будет ли мысл, если скормить нейроночке не всю савокупность полученных юинарников, а по группам(А,В,С). Получем на каждую букву по одной нейронке, и , прогоняя новый пришедший символ по всем неронкам получим процентное соответствие одному из символов. Это получается как бы двойное обучение, сначала с помощью человека мы в ручную разбиваем савокупность на классы, а потом по каждому классу нейронку обучаем. Или это всё равно что впихнуть всю савокупность полученных бинарников в нейронку, а она сама там раберётся.
[Ответ][Цитата]
гость
195.200.94.*
На: Распознование текста
Добавлено: 15 янв 08 8:28
зачем так всё усложнять?) Тем более толку от этого, в скором будущем хотмейл всё равно капчу сменит
[Ответ][Цитата]
 Стр.3 (18)1  2  [3]  4  5  6  7  ...  18<< < Пред. | След. > >>