№2(20)2009
В. В. Андреев, М. С. Журавлев
Распознавание рукописных символов с применением нейросетевой технологии
Предлагается метод классификации рукописных образов из графического файла, основанный на выделении точек, несущих наибольшую информацию об их идентификации с последующей обработкой и инвертированием информации по положению, масштабу и толщине. Среди отдельных подпрограмм для анализа и обобщения данных — функция обработки и нейронная сеть.
Данный алгоритм может быть использован для распознавания цифр с анкет и документов. Он опробован при анализе символов, подверженных искажению и за-шумлению.
Задача распознавания любого рукописного символа (отнесение его к определенному классу объектов, имеющих подобную структуру) представляется весьма непростой задачей с множеством особенностей. Однако ее решение сопровождается значительным практическим интересом, исходя из того что создание эффективного алгоритма распознавания позволило бы, в частности, сэкономить время для записи информации с документов на компьютер, исключив из этой системы человека. Уже существуют коммерчески успешные программы (например, ABBY FineReader), которые способны считывать простой, не сильно «зашум-ленный» текст для последующего сохранения. Однако, при наличии спроса на такие программы, аналогов, способных считывать даже чуть искаженный текст с последующим преобразованием в документ хорошего качества, недостаточно.
Представляем программу, способную сканировать из графического файла символы определенной группы — цифры от нуля до девяти, с последующим сохранением информации в текстовый файл. При этом полагаем, что файл не содержит каких-либо иных символов, кроме цифр, написанных с умеренным наклоном, поскольку это усложнит задачу слишком большими отличиями в геометрии структуры.
Конечная программа, реализованная в среде MATLAB, использует функцию обработки
одиночного символа и нейронную сеть для последующего анализа данных.
Растровое изображение (графический файл) представляет собой матрицу чисел, в которой каждый элемент является точкой двухмерной картинки. Значение этого элемента определяет цвет точки, а его координаты в матрице — положение точки. Если изображение цветное, то используются три матрицы — для красного (/?), зеленого (G) и синего (В) цветов, которые позволяют синтезировать всю гамму оттенков.
Входные данные, представляющие собой цветную картинку, сохраним в виде файла формата BMP или JPG. Затем этот файл переведем в черно-белое изображение, что легко осуществимо в среде MATLAB. После этого изображение трансформируется в матрицу, содержащую только нулевые и единичные элементы. Нулевые элементы соответствуют точкам образа (темные цвета), единичные — белому фону. Полученная матрица очищается от шума и содержиттолько нулевые элементы, соответствующие символам. Это связанно с тем, что при трансформации файла, имеющего приемлемое качество, в матрицу легко убрать мелкие и незначительные элементы, т. е. шум. Также при этом можно несколько сгладить изображение всех символов сразу. Далее программа построчно считывает, обрабатывает, анализирует и сохраняет каждый обнаруженный символ.
№2(20)2009
При этом отдельные файлы, в которых числа написаны ординарным почерком и не сильно за-шумлены, могут быть распознаны абсолютно точно. Если же при написании заметны отличия в геометрии (к примеру, единица написана одной линией, без «козырька»), то они могут быть распознаны неправильно. Почерк не имеет значения, если заполнять графы документа по образцу. При простой модернизации программа способна идентифицировать и другие образы — символы ввода, буквоподобные образы и т.д.
Разработанную программу можно применять при анализе информации из простых документов в виде анкет, где требуется написать числа (или другую информацию) в установленных полях.
1. Основные понятия и описание метода
Главная проблема — краеугольная в решении задачи анализа объекта для последующего его отнесения к какому-либо классу— получение из структуры объекта информации, позволяющей максимально точно его идентифицировать. Необходимо выделить из объекта данные таким образом, чтобы влияние размера, положения,толщины и непроизвольного искажения формы образа, всегда возникающего при его написании, было нивелировано. Следует отметить, если система будет настроена на определение мельчайших деталей объекта, то можно не получить нужного разбиения объектов по классам, поскольку все символы, написанные человеком, индивидуальны. Далее имеющуюся информацию об объекте следует проанализировать и сделать вывод о его принадлежности к какому-либо классу. Для этой цели можно создать самостоятельную систему анализа, которая будет сравнивать полученные числа от системы обработки с уже имеющимися данными, которые соответствуют образам идеально написанных чисел. Однако при любой модернизации системы обработки необходимо будет переделывать систему анализа. В качестве готового инструмента в среде МАЛАВ имеются объекты из класса нейронных сетей [1]—[3], которые идеально подходят для обобщения самой различной информации и легко модернизируются при изменении сис-
темы обработки. Для использования нейронной сети надо первоначально инициализировать ее параметры, обучить сеть, т. е. внести в ее БД некоторые образы идентифицируемых объектов, и сохранить. Это позволит вызвать уже полностью настроенную сеть в любой момент времени.
Алгоритм системы обработки включает в себя следующее.
1. Сканирование подаваемой матрицы на наличие нулевых элементов. Предварительно, перед считыванием,проводится проверка расположения символа в данной матрице. Если в первых строках и/или столбцах не окажется нулевых символов, то производится перенос объекта вверх и/или влево. Так происходит сдвиг образа в направлении левого верхнего угла, соответствующего началу координат в сетке компьютера (рис. 1). Поиск нулевых элементов реализован в виде двойного цикла, который в матрице построчно находит соответствующие элементы. Найденные элементы служат компонентами для комплексного массива. Например, если найденный тринадцатый нулевой элемент занимает седьмой столбец и девятую строку, то в комплексном массиве ему будет соответствовать элемент 2(13)=7 + 9у, где у — мнимая единица. На рис. 1 элементы И(п) обозначают все элементы символа; элементы К.т) определяют левую внешнюю границу объекта; ЮОР(.т) задают правую внешнюю границу объекта.
тт
Рис. 1. Сдвиг символа к началу координат и определение его внешней границы
2. Комплексные числа в массиве описывают весь образ. Из полученного массива необ-
116
№2(20)2009
ходимо оставить только те точки, которые максимально идентифицируют объект. В образе имеется много точек, расположенных внутри фигуры, которые не дают новой информации. Также всегда есть точки, слишком детализирующие объект. Все они должны быть удалены, поэтому на втором шаге выделяем из полученного массива два других, которые характеризуют только две грани объекта — левый и правый края (рис. 1-3).
3. Полученные массивы готовы к преобразованию, в качестве которого выбрано дискретное преобразование Фурье [1]—[3]:
7(п) = х(п) + уу(п);
^ = Р(/с)=£7(п)ехр[-у^/сп
п = 0 I М
Фурье-образ определяет структуру исходного объекта в другой системе параметров (рис. 2, 3), в которой легко осуществить масштабирование введением коэффициента нормализации векторов [3]:
т
Кс
FKs(k)--
К<
В результате получим два массива, причем с одним и тем же коэффициентом масштабирования, иначе они будут определять две линии, абсолютно не связанные друг с другом, что «разобщит» результат обработки. Из теории преобразования Фурье известно, что наиболее важными являются пары векторов
[Fi;FM_i], [F2; Fm_2] и т.д. Для классификации только цифр достаточно использовать четыре пары векторов.
4. Полученные два массива чисел уже могут быть поданы с выхода системы обработки на вход нейронной сети для дальнейшего анализа. Но для более глубокого анализа можно дополнить данные другими параметрами, основанными на простейших законах геометрии. Таковыми здесь может служить количество замкнутых областей фигуры. Это позволяет легко рассортировать данные на три подкласса: цифры, не имеющие замкнутые области, — 1,2,3,4,5 и 7; цифры, имеющие одну замкнутую область, — 6,9 и 0; цифра 8.
Также был поставлен эксперимент по определению символов исключительно по геометрическим признакам:
1) количеству резких возрастаний ширины образа (двойка имеет два, тройка три, четверка один и т.д.);
2) концентрации элементов, соответствующих граням элемента относительно положения друг друга (т. е. концентрация элементов, расположенных относительно своего нижнего соседа под углом 0°, 45°, 180°, 270°,...).
Впоследствии полученные параметры легко дополняют уже имеющиеся. Но они менее надежны и более зашумлены, т. е. сильно зависят от почерка. В программе реализовано распознавание исключительно на преобразовании Фурье и параметре, учитывающем количество замкнутых областей.
-10
-15
-20
ZmüZDOP
* * |
* \ * |
* 1 *
* ! *
---- Hf-------1---- ------- -*------------
* | *
* ! * |
* 1 * 1
* ' *
---- -#-------1---- ------- Ф
* 1 | *
* 1 1 *
* 1 ! *
* 1 1 *
---- -*-------\---- ------- -{—*■---------
* 1 1 *
* 1 1 1 1 | *
10
15
Рис. 2. Структура символа после удаления неинформативных точек из массива
0,25
0,20
0,15
0,10
0,05
0,00
Fand ИДО
* 4*« *
____*
-1,00 -0,50
0,00
0,50
Рис. 3. Фурье-образ символа
1,00
117
№ 2(20) 2009 ^
Алгоритм функционирования нейронной сети включает несколько стадий.
1. Инициализация классической нейронной сети с обратным распространением ошибки. Она содержит два слоя и десять нейронов. Входной вектор имеет тридцать три строки и десять столбцов (каждый столбец соответствует одному шаблону цифры).
2. Тренировка сети на идеальных данных, которые соответствуют идеально написанным числам.
3. Последующая тренировка сети на других данных, соответствующих различно написанным числам. При этом числа обязательно должны быть не похожи друг на друга, иначе сеть будет настроена на работу только схорошо написанными образами. Впоследствии сеть тренируем на зашумленных образах восемь раз.
4. Финальная вторичная тренировка на идеальных образцах, поскольку после тренировок на зашумленных образах сеть «разучает-ся» понимать хорошо написанные числа. Сохраняем обученную сеть.
Получив готовые к использованию системы обработки и анализа (нейронная сеть), создадим конечную программу для работы с простым, никак не обработанным графическим файлом, на котором запечатлены только цифры. Ее работа сводится к выполнению алгоритмизированного процесса:
• первичная обработка файла с целью превращения его в бинарную матрицу (содержащую только единицы и нули);
• построчный поиск объектов;
• при нахождении таковых идет вычленение, загрузка в функцию обработки и впоследствии в нейронную сеть. Полученный анализ запоминаем в строковом массиве;
• удаление объекта из файла и продолжение поиска других объектов; при отсутствии объектов происходит сохранение результата и завершение работы программы.
2. Анализ фотографий рукописных символов
Для подачи на вход разработанной системы распознавания с помощью камеры мобильного телефона Sony Ericsson К31 Oi (VGA Camera) были сфотографированы числа, написанные в различное время суток с разными наклоном, ракурсами и масштабом (рис. 4-6).
При создании нейронной сети в пакете MATLAB ее исходные параметры определяются произвольно, поэтому сети, созданные в разное время, могут отличаться друг от друга по эффективности (малосущественно).
Для установки оптимальных параметров сети используется «тренировка» функцией TRAINGDX, представляющей собой алгоритм градиентного спуска с возмущением и адаптацией параметра скорости настройки. Данный алгоритм применяется для многослойных сетей с прямой передачей данных. При применении функции TRAINGDX указываются вектор входных значений и целевой вектор. Потом эта функция совершает обучение нейронной сети. Если на выходе сети получается вектор, у кото-
1 1 1 1 1 L i 1
2 2 г 2 г 2 г 2
3 3 3 3 3 3 ъ 3
Ч Ч ч Ч ч Ч ч Ч
5 5 5 5 5 5 5 5
6 t е С 6 6 6
7 7 7 7 7 7 7 7
а & 8 Ь 8 & 8 в
9 9 9 9 9 9 9 3
0 О О О О О о О
1 1 i { 1 1 1 1 1 1
2 г z г 2 г Z г 1 г
3 3 3 3 3 3 3 3 3 3
Ч ч Ч ч Ч ч и ч ч ч
5 5 5 5 5 5 5 5
6 6 6 6 в 6 (, i £
7 7 7 7 7 7 7 7 7 7
S S 8 8 8 в & 8 а 8
3 э 9 9 9 9 9 9 9 3
О 0 О О о О О О о О
1 1 1 i 1 1 1 4 1 1 d 1 1 1 4 i
2 2 2 2 2 2 2
ь 3 3 3 3 3 3 3
Ч ч ч ч ч ч Ч Ч Ч Ч ч Ч Ч Ч Ч Ч
5 5 5 5 5
6 & 6 6 6 6 € 6 €
7 ? ? 7 ? 7 7 7 7 7 7 7 7 7 7 7
8 3 а 6 6 8 8 8 8 8 в
э 3 э 9 э $ 9 Э 3 9 9 9
о о о О о о О о О О
Ряс. 4. Фотография 1 рукописных символов, подаваемых на вход сети
118 ^
Рис. 5. Фотография 2 рукописных символов, подаваемых на вход сети
Рис. 6. Фотография 3 рукописных символов, подаваемых на вход сети
№2(20)2009
рого расхождение с целевым больше заданного уровня погрешности, то совершаются дополнительные испытания до тех пор, пока не будет достигнута требуемая точность. Количество тренировок (вызовов функции ТРА1ЫС0Х) в разработанной системе распознавания — девять.
На рис. 7а по оси абсцисс отложены номера тренировок, а по оси ординат — количество испытаний, затраченных на достижение требуемой точности. На рис. 76 для удобства и наглядности отдельно представлены данные, относящиеся ктренировкамсо 2-й по 9-ю, так как при первой тренировке всегда для достижения заданной точности требуется слишком большое, по сравнению с последующими, количество циклов обучения нейронной сети.
1-9
2-9
600 500 400 300 200 100 0
11111 ..... ..... 1 1 1 1
11111 11111 11111 L_.L_.L_i_ 1 1 1 __1__ __
..... 11111 11111 1 1 1 1
11111 11111 ..... 1 1 1 1
..... 11111 11111 1 1 1 1 1 1 1 1
-"п г'пг'п 1 п 1 п
120 100 80 60 40 20 0
-4-- + -4-
123456789 23456789
а б
Рис. 7. Зависимость количества циклов обучения нейронной сети от номера тренировки
В данном случае нейронная сеть в начале обучается на условно идеальных образцах, представленных десятью элементами на рис. 8.
98 765 432 1о
Рис. 8. Условно идеальные образцы для обучения нейтронной сети
Продолжается обучение на «неидеальных» образцах (рис. 9).
В завершении сеть повторно обучается на идеальных образцах, приведенных на рис. 8. В данном случае на вход нейронной сети были поданы первые 10 цифр из каждого ряда на рис. 9.
На вход обученной таким образом нейронной сети были поданы для распознавания об-
1 г ъ ч 1 7 а 9 0 £ 1 7 3 3
1 2 3 1 5 i 7 & 0 £ 1 7 3 5
1 г 3 4 6 7 8 0 6 7 7 3 3
1 г 3 4 5' С ? 8 9 0 е ? ? $ 3
1 г 3 Ч 5 £ 7 а 9 0 * 7 7 3 3
1 1 V ч * 7 8 0 7} ? 3 3
1 г ч 5 е 7 & 0 6 7 7 5 *
ср
I'
I
О £
^
00 00
Рис. 9. Рукописные символы, принятые за образцы
разцы, представленные на рис. 4-6. При этом система распознавания показала результаты, показанные на рис. 10-12. Видно, что цифры на рис.4 распознаны практически без ошибок. Исключение составляет последняя восьмерка в соответствующем ряду, написание которой отличается от других восьмерок. Данная 8 при этом идентифицирована как 6. На входных образах на рис. 5 и 6 некоторые семерки идентифицированы как 5 и 4, а девятки — как 8,5,4 и 3.
Результаты обучения нейронной сети при подаче на ее вход по тринадцать первых цифр из каждого ряда на рис.9, представлены на рис. 13. Видно, что в этом случае количество необходимых циклов обучения для достижения заданной точности для каждой из тренировок, по сравнению с данными на рис. 7, в среднем увеличивается.
После обучения нейронной сети на ее вход были вновь поданы образцы на рис. 4-6. Результаты распознавания представлены на рис. 14-16. Можно заметить здесь некоторое уменьшение случаев неправильного распознавания по сравнению с предыдущим случаем, представленным на рис. 10-12.
Результаты обучения нейронной сети, в случае когда на ее вход при обучении подавались все 15 цифр из каждого ряда на рис. 10, представлены на рис. 17.
При этом необходимое количество циклов обучения для достижения требуемой точности распознавания возрастает для каждой из тренировок по сравнению с предыдущими случаями. Результаты работы нейронной сети по распознаванию образцов, представленных на рис. 4-6, показаны на рис. 18-20.
119
№2(20)2009
11111111
22222222 33333333 44444444 55455555 66666666 77777777
99999999 00000000
1111111111
2222222222 3333553333 4444444444 5555555555 6666666666 7557777777
9559399999 0000000000
1111111111111111
2222222 53333333
4444444444444444
555555
6666666666
7777547777775477
999999998944 0000000000
Рис.10. Результат распознавания входного образа на рис. 4 при обучении сети на 10 цифрах каждого ряда образца
Рис. 11. Результат распознавания входного образа на рис. 5 при обучении сети на 10 цифрах каждого ряда образца
Рис.12. Результат распознавания входного образа на рис. 6 при обучении сети на 10 цифрах каждого ряда образца
1-9
2-9
о §
Ж
>а а
<о
1200 1000 800 600 400 200 0
'Г-Г-Т-Т-~Г-~Г~~1
ппппппПп
1 2 3 4 5 6 7 8 9 а
160 140 120 100 40 20 О
2 3 4 5 6 7 8 9 б
Рис. 13. Зависимость количества циклов обучения для достижения заданной точности от номера тренировки (при использовании 13 цифр каждого ряда образца)
а .§"
ш зе
1
а ®
I §-
»
0 §
<а
1
а
1
«»•
й ®
в
х
§
5
шиш
22222227 53333333 44444444 55553555 66666668 77777777
1111111111
2227222222 3333333333 4444444444 5555555555 6686666626 7777777777
1111111111111111
2222222 53333333
4444444444444444
555555
6666666666
7777777777777777
99999999 00004000
Рис.14. Результат распознавания
входного образа на рис. 4 при обучении сети на 13 цифрах каждого ряда образца
9999999999 0000000000
Рис.15. Результат распознавания входного образа на рис. 5 при обучении сети на 13 цифрах каждого ряда образца
999999999999 0040004000
Рис. 16. Результат распознавания входного образа на рис. 6 при обучении сети на 13 цифрах каждого ряда образца
Заключение
Здесь количество неправильно распознанных цифр по сравнению с предыдущими случаями существенно меньше.
По результатам этой работы можно сделать важные выводы.
120
№2(20)2009
1-9
2-9
3000 2500 2000 1500 1000 500 0
"1 Г —Т — Т Г Г 1 I
ПППгУЛПЛ
1 2 3 4 5 6 7 8 9 а
300 250 200 150 100 50 О
Т"Т"ГТТ
2 3 4 5 6 7 8 9 б
Рис. 17. Зависимость количества циклов обучения для достижения заданной точности от номера тренировки (при использовании 15 цифр каждого ряда образца)
11111111
22222222 33333333 44444444 55555553 66666668 77777777
1111111111
2222222222 3333333333 4444444444 5555555545 6666666666 7777777777
1111111111111111
2222222 33333333
4444444444444444
555555
6666666666
7777777777777777
99999999 00000000
Рис.18. Результат распознавания
входного образа на рис. 4 при обучении сети на 15 цифрах каждого ряда образца
9999999999 0000000000
Рис.19. Результат распознавания
входного образа на рис. 5 при обучении сети на 15 цифрах каждого ряда образца
999999997999 0000000000
Рис. 20. Результат распознавания
входного образа на рис. 6 при обучении сети на 15 цифрах каждого ряда образца
Т. Особенностью метода является использование максимально обобщающей информации об образце, направленность программы на работу с экспериментальными, реальными данными об объекте, а также возможность всесторонней модернизации через более глубокий анализ данной проблемы или в целях последующего практического применения.
2. Классификация любых рукописных символов должна производиться с исключением всевозможного рода шумов и искажений, в том числе в структуре геометрии образца. При этом решение проблемы ни в коем случае не должно быть найдено с помощью увеличения числа шаблонов в базе данных сети или функции анализа, так как это приводит к ненадежности результатов работы программы с различными почерками, а в экстремальных ситуациях — к уменьшению быстродействия и может нарушить гибкость системы в перепек-
121
<а
1
00
£
®
<и Ж
тиве (сеть с большим количеством шаблонов будет направлена на идентификацию только группы почерков). Основным направлением в программной разработке должно быть выделение самых ключевых данных об образце.
3. Применение компьютеров для классификации графических символов отнюдь не трудоемкая задача, решение которой состоит только в улучшении эвристических методов создания алгоритма программ и обязательной проверки каждого шага и возможной ситуации на практике.
СПИСОК ЛИТЕРАТУРЫ
1. Дьяконов В. П., Абраменкова И. В. МАПАВ. Обработка сигналов и изображений: специальный справочник. СПб.: Питер, 2002.
2. Поршнев С. В. МАПАВ. Основы работы и программирования: учебник. М.: Бином-Пресс, 2006.
3. Оссовский С. Нейронные сети для обработки информации. М.: Финансы и статистика, 2002.