Распознавание капчи с использованием CNN не дает ожидаемых результатов

Я пытался разработать программу распознавания капчи с использованием TensorFlow на Python.

Когда я начал, я проверил некоторые статьи в Интернете и обнаружил, что изображение Captcha сегментировано на отдельные цифры, и эти отдельные цифры распознаются. Но я хотел попробовать другой подход. Я хотел узнать капчу без сегментации.

Рекомендации:

Автоматическое распознавание номерных знаков - я использовал этот пост в качестве ссылки.

Код для ANPR - это код из вышеупомянутого сообщения в блоге.

Мое решение:

Код для моего решения

Генерация данных:

Я создал около 60000 160 * 60 изображений RGB. Все капчи были 6-й длины. Я использовал 25000 изображений в качестве обучающих данных и 9000 изображений в качестве тестовых данных и не использовал остальные изображения.

Пример данных:

0A6ZYC ----> 0A6ZYC

0A9L8W ----> 0A9L8W

0AKDTP ----> 0AKDTP

Архитектура нейронной сети:

160 * 60 * 3 ------ (5 * 5 Conv) ---> 160 * 60 * 24 ------ (2 * 2 MaxPool) ---> 80 * 30 * 24 --- - (5 * 5 Conv) ----> 80 * 30 * 36 ---- (4 * 2 MaxPool) ----> 20 * 15 * 36 ---- (Полностью подключен)--->(4096*1) -----(полностью подключен)--->(216*1)

Некоторые другие свойства Сети:

1) мини-размер партии: 100

2) Оптимизатор: Адам Оптимизатор

3) Эпох: 60

4) Длина капчи: 6

6) Используемые символы: [A-Z0-9]

Проблемы, с которыми сталкиваются:

1) Когда у меня был еще один слой свертки, моя сеть начала выводить то же значение. Я пробовал нормализацию, но без изменений. Поэтому я удалил слой и изменил окончательный слой Maxpool с (2*2) на (4*2). Я запустил программу на 30 эпох

2) Теперь, когда я запускаю программу для 60 эпох с вышеупомянутой архитектурой, я получаю около 50% точности в моем тренировочном наборе после 50 или 55 эпох, но я получаю 0-5% точности в своем тестовом наборе.

Чего мне не хватает в этой сети? Это неправильные данные? Мой подход правильный? Почему я не получаю хорошие результаты?

0 ответов

Другие вопросы по тегам