GotAI.NET

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

 

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

 Все темы | Новая тема Стр.4 (8)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Распознавание символов
kshmirko
Сообщений: 1
На: Распознавание символов
Добавлено: 04 дек 07 11:27
А можно исходник посмотреть?
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 04 дек 07 13:13
Не вижу причин почему не можно. Тем более ссылка давалась несколько постов тому назад...
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 21 янв 08 0:47
Решил провести небольшой эксперимент по объединению шаблонного способа распознания (НС, попиксельное сравнение) и векторного способа. За платформу была взята преведущая версия SymvecView.
Собственно эксперимент не для того чтобы распознавать символы, а больше для того чтобы проверить теорию увеличения качества шаблонного распознавания с помощью векторов.
Обучение и распознание происходило следующим способом:
Этап 1. Символ векторизировался также как это было и ранее. С той только разницей что теперь максимально возможный вектор имел ограниченную длину т.е. ключевые точки расставлялись равномерно по всему символу, а не только в местах пересечений линий. Также не проводилась корректировка векторного скелета (т.е. кривые не выравнивались и замкнутые регионы не искались). При обучении полученный векторный скелет заносился в БД как эталонный.
Этап 2. Собственно сравнение полученного векторного скелета с скелетами из БД. Для сравнения скелет неизвестного символа отрисовывался на картинке (растеризовывался), также отрисовывался скелет из БД. А дальше просто проходило попиксельное сравнение этих двух изображений. В принципе для этого можно было использовать НС, но не очень хотелось возиться с ее обучением, так что обошелся обычным попиксельным сравнением.
При воссоздании картинки символа с векторного скелета получаем практически копию оригинальной картинки, с той разницей что все линии символа имеют одну ширину и нормированные края линий.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 21 янв 08 0:47
Собственно как и любой другой шаблонный метод данный подход оказался сильно шрифтозависимым а также имел плохую стойкость к деформации. Что впрочем не удивительно - ведь в другом шрифте пиксели символа могут находиться в совершенно другом месте чем в эталонном. Даная проблема как правило решается банальным обучением программы множеству шрифтов, но как понятно, это не дает защиту от деформаций или вызывает проблемы с новым неизвестным шрифтом.

Дальше было решено перед растеризацией векторов попробовать "натянуть" векторный скелет распознаваемого символа на символ из БД. Т.е. попробовать скорректировать координаты ключевых точек распознаваемого векторного скелета к координатам ключевых точек символа из БД. Натяжка происходила весьма банально. Бралась точка из распознаваемого скелета и искалась ближайшая точка по координатам в символе из БД. Если такая находилась, то координаты точки изменялись на найденные из БД. Таким образом наиболее подходящие ключевые точки (КТ) неизвестного символа передвигались для большего соответствия с БД. Поскольку координаты КТ поменялись, также поменялись и сами векторы т.е. при отрисовке они ближе лежат к эталонному символу.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 21 янв 08 0:48
Обучение программы проводилось исключительно маленькими символами шрифта Arial.(другие шрифты при обучении не брались).

Получились следующие результаты:
(Первое число - качество сравнения без "натяжки" %, второе - с натяжкой %)

Times New Roman | 30.76 / 46.15 |
Book Antiqua | 26.92 / 46.15 |
Arial | 100.0 / 100.0 |
Century Gothic | 50.00 / 73.07 |
Sylfaen | 26.92 / 65.38 |
Verdana | 69.23 / 88.46 |
Comic Sans MS | 34.61 / 76.92 |
Impact | 23.07 / 53.84 |
-------------------
Italic (Стиль курсивом):
Arial It | 42.30 / 69.23 |
Book Antiqua It | 15.34 / 38.46 |
Times New Roman It| 7.69 / 42.30 |
-------------------
Deformations (сильные деформации символов):
Arial | 38.46 / 61.53 |
Times New Roman | 3.84 / 3.84 |
Verdana | 26.92 / 50.0 |
-------------------
Итого:
Без натяжки: 35,43%
С натяжкой: 58,23%

Кстати если программу обучить шрифтам Arial + Times New Roman то получим
Итого:
Без натяжки: 47%
С натяжкой: 68%

В принципе по таблице видно что используя такой довольно простой способ выравнивания символа можно получить довольно неплохой прирост стойкости деформации.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 21 янв 08 0:49
Хотя честно говоря программа писалась (вернее модифицировалась) в спешке (на это ушло где то 5 часов). Я вполне уверен что если заняться разработкой подобного метода детальнее то можно получить гораздо большую эффективность работы алгоритма натяжки.

Весьма важно также то что при примерно таком способе распознания мы получаем как шаблонное распознавание, так и возможность векторного распознавания, ведь у нас есть векторный скелет. Также на основании векторного скелета можно сделать заключение о типе шрифта которым напечатан распознаваемый шрифт, что также может увеличить качество шаблонного распознавания.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Распознавание символов
Добавлено: 21 янв 08 3:09
Очень интересно. Было бы совсем замечательно, если бы вы решились все таки обучить нейронку!!! Это было бы исключительно интересно.

Кстати, по смещению точек:
Было бы неплохо, если бы вы смещали, не только ближайшие точки КТ, но и точки между ними.
Алгоритм смещения второстепенных точек может быть такой:
dx1,dy1 --- смешение первой КП (КП1)
dx2,dy2 --- смещение второй КП (КП2)
х,у --- координаты второстепенной точки(ВТ) между первой и второй КП.
D1, D2 --- расстояние от ВТ до КП1 и до КП2 соответственно
D --- расстояние между КП1 и КП2
тогда dx,dy --- смещение ВТ будет
dx = dx1*(D1/D)+dx2*(D2/D)
dy = dy1*(D1/D)+dy2*(D2/D)
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 23 янв 08 2:11
В принципе я этот алгоритм попробовал из-за его просты. Боюсь на реализацию нейронки и ее обучение уйдет больше времени чем пользы
Ваше предложение по смещению точек которым не нашлось соответствие весьма кстати. Очень часто бывает что в символе из БД к-точек меньше чем в распознаваемом символе, в результате чего не все к-точки неизвестного символа ссовываються и получается шум который ухудшает распознание.
Но наиболее проблематично это когда к-точкам было найдено неправильное соответствие (когда ближе всего лежит не та к-точка что нужно). Впрочем само распознавание от этого не пострадает (без алгоритма натяжки такой символ всеравно не распознается). Думаю для увеличения процента распознавания не помешало б сделать более "интеллектуальную" натяжку.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Распознавание символов
Добавлено: 23 янв 08 2:45
ну не скажите. Нейронка умеет выделять особенности объектов, а не просто разницу между пикселями считает. Так что, толк очень даже может быть.
Кстати, вы когда приводили проценты распознавания, забыли написать процент, старым методом (ну т.е. классическим).

Так вы предложенный мной алгоритмик по натяжке проверите ?
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 23 янв 08 4:45
Толк от НС может и быть,только сомневаюсь что он компенсирует мне потерю свободного времени Хотя конечно если кто-то хочет над этим поработать - буду рад помощи.
Не совсем понял что Вы имели в виду говоря про классический способ написания процентов?
Алгоритм ваш попробую реализировать, хотя глубоко сомневаюсь что он даст какой-то существеный прирост качества натяжки.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Распознавание символов
Добавлено: 23 янв 08 5:07
Цитата:
Автор: Corwin
Не совсем понял что Вы имели в виду говоря про классический способ написания процентов?

не способ написания процентов, а способ распознавания символов классический. Ну тот, что у вас в начале был, до последних изменений .
[Ответ][Цитата]
гость
89.208.11.*
На: Распознавание символов
Добавлено: 23 янв 08 9:58
*
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 23 янв 08 21:55

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

Да и еще на первой страничке этого топика есть результаты распознавания для разных шрифтов в процентах.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Распознавание символов
Добавлено: 24 янв 08 1:40
Цитата:
Автор: Corwin


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

Да и еще на первой страничке этого топика есть результаты распознавания для разных шрифтов в процентах.

Ну там я смотрю проценты вообще не слабые, или там все-таки другое эксперименты были????
Если те же, то... тогда натяжка и бинаризация просто в попе отдыхают! и им ТАКАЯ интеллектуальная добавка нужна, что просто в неё не вериться!
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Распознавание символов
Добавлено: 24 янв 08 3:06
Протестировал Вашу поправку Данер. Получились следующие результаты:
Первое число - старое значение с натяжкой, второе число - натяжка с поправкой незафиксированных точек:
Times New Roman | 46.15 - 46.15 |
Book Antiqua | 46.15 - 42.3 |
Arial | 100.0 - 100.0 |
Century Gothic | 73.07 - 73.07 |
Sylfaen | 65.38 - 61.53 |
Verdana | 88.46 - 96.15 |
Comic Sans MS | 76.92 - 73.07 |
Impact | 53.84 - 53.84 |
-------------------
Italic (Стиль курсивом):
Arial It | 69.23 - 76.92 |
Book Antiqua It | 38.46 - 46.15 |
Times New Roman It| 42.30 - 38.46 |
-------------------
Deformations (сильные деформации символов):
Arial | 61.53 - 65.38 |
Times New Roman | 3.84 - 3.84 |
Verdana | 50.0 - 42.30 |

Насколько могу судить - качество на некоторых шрифтах ухудшилось из-за областей в районе дуг и кругов. Просто при предложенном алгоритме поправки незафиксированных точек эти точки начинают больше "выпирать" из дуги.
[Ответ][Цитата]
 Стр.4 (8)1  2  3  [4]  5  6  7  8<< < Пред. | След. > >>