development

Нейросеть для распознавания образов

Программа для распознавания образов на основе нейросети. Программа позволяет рисовать буквы в интерфейсе пользователя и способна анализировать их (Демо).

Программа написана на языке perl с модулей из архива CPAN, поэтому может выполняться на любой системе семейства linux и других, поддерживающих интерпретатор perl. Доступна к использованию под открытой лицензией GNU GPLv2

Модули, использованные при разработке

Возможности

Использование

Для запуска программы необходимо установить перечисленные модули perl. После этого необходимо выставить на неё право на исполнение (chmod +x lab.pl) и запустить её в консоли (perl lab.pl).

После запуска откроется графический интерфейс пользователя (см. рис.1). В нем необходимо ввести распознаваемый символ и нажать кнопку "Анализ". Поле ввода можно очистить с помощью кнопки "Сброс". Также присутствует кнопка выбора цвета кисти.

После нажатия кнопки "Анализ" программа сохранит введённый символ и найдет наиболее подходящий класс для него из известный ей. Результат выведется в правую панель программы (см. рис.2). Результат состоит из наименования класса символа и его вероятности от 0 до 1.

Скриншоты

интерфейс пользователя

Рис. 1. Графический интерфейс пользователя.

интерфейс пользователя

Рис. 2. Ввод пользователя и вывод результатов распознания.

Скачать

Видеозапись примера работы программы вы можете увидеть здесь.

Скачать программу можно по этой ссылке.

Принцип работы

нейросеть

В процессе обучения сети создается нейронная сеть, содержащая два слоя нейронов. Входной слой содержит 1024 нейрона, (32x32, разрешение сохранённых образцов), выходной - несколько нейронов, по числу известных классов символов. При обучении на входные нейроны подаются значения пикселей сохранённых образцов, а на выходе устанавливается единица на выходе соответствующего класса символа. Обучение происходит до тех пор, пока ошибка распознавания не станет меньше минимально допустимой. После этого все параметры сети сохраняются в файл для дальнейшего распознавания с помощью интерфейса пользователя.