2010-03-20 6 views
2

Я использую библиотечную структуру AForge и ее нейронную сеть.OCR с нейронной сетью: извлечение данных

В настоящий момент, когда я тренирую свою сеть, я создаю большое количество изображений (по одному изображению на каждую букву на шрифт) при большом размере (30 pt), вырезал фактическую букву, уменьшаю ее до меньшего размера (10x10 px), а затем сохраните его на моем жестком диске. Затем я могу просмотреть все эти изображения, создав массивы double [] с данными. На данный момент я делаю это на пиксельной основе.

Итак, как только я успешно обучил свою сеть, я тестирую сеть и позволяю ей работать на образце с алфавитом разных размеров (в верхнем и нижнем регистре).

Но результат не очень перспективен. Я тренировал сеть таким образом, что у RunEpoch была ошибка около 1.5 (так почти без ошибок), но все равно остались некоторые буквы, которые не попадают в тестовое изображение правильно.

Теперь мой вопрос: вызвано ли это тем, что у меня есть ошибочный метод обучения (в пиксельной базе против предлагаемого использования рецепторов в этой статье: http://www.codeproject.com/KB/cs/neural_network_ocr.aspx - есть ли другие методы, которые я могу использовать для извлечения данных для сети?) или это может случиться, потому что мой алгоритм сегментации для извлечения букв с изображения, чтобы посмотреть, плохо?

У кого-нибудь есть идеи о том, как его улучшить?

ответ

0

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

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

Смежные вопросы