Методы распознавания капчи с помощью нейронных сетей

Заказать уникальную дипломную работу
Тип работы: Дипломная работа
Предмет: Python
  • 59 59 страниц
  • 17 + 17 источников
  • Добавлена 15.02.2024
2 500 руб.
  • Содержание
  • Часть работы
  • Список литературы
Оглавление
Введение 2
1 Глава – Актуальность проблемы и анализ алгоритмов 3
1.1. Актуальность капчи в современном информационном мире. 3
1.2. Обзор алгоритмов распознавания капчи. 11
2 Глава – Математический модель и алгоритм 23
2.1. Математический аппарат нейронной сети. 23
2.2. Анализ сложностей процесса распознавания капчи. 34
3 Глава – Программная реализация 40
3.1. Выбор наиболее подходящей библиотеки Python. 40
3.2. Процесс подготовки данных. 42
3.3. Обучение нейронной сети. 46
4 Глава – Анализ результатов. 50
4.1 Анализ результатов обучения. 50
4.2 Эксперимент тестирования. 52
4.3 Концепция всей системы в целом для коммерческого применения. 53
Заключение. 55
Список литературы. 56

Фрагмент для ознакомления

Загрузчик разбивает тестовый набор на пакеты и предоставляет эти пакеты для оценки модели.В результате, был выполнен процесс подготовки данных к обучению нейронной сети.Здесь определяем нашу модель. Архитектура довольно проста: используем два слоя CNN для получения информации из изображений, а затем используем GRU для последовательного анализа каждой доступной буквы. GRU расшифровывается как GatedRecurrent Unit, который представляет собой тип архитектуры рекуррентной нейронной сети (RNN). Он используется для задач последовательной обработки данных, таких как обработка естественного языка. Последовательный анализ каждой доступной буквы означает обработку последовательности букв одну за другой с использованием модели GRU. Это позволяет модели фиксировать зависимости и шаблоны в последовательности, что делает ее полезной для таких задач, как генерация текста, распознавание речи и машинный перевод.Что касается функции потерь, используем CTCLoss для последовательного поиска ошибки. Написали функцию `get_loss_function`, которая использует модуль `nn.CTCLoss` из библиотеки PyTorch для вычисления функции потерь CTCLoss (ConnectionistTemporalClassification) для задачи распознавания речи или последовательностей.Код выполняет следующие действия:1. Вычисляет логарифм от softmax значений `x` с использованием функции `F.log_softmax`.2. Создает тензор `input_lengths`, заполняя его значениями размера `bs` (размер пакета) и заполняет его значением `log_softmax_values.size(0)` (размер последовательности).3. Создает тензор `target_lengths`, заполняя его значениями размера `bs` и заполняет его значением `targets.size(1)` (длина целевой последовательности).4. Возвращает значение функции `nn.CTCLoss`, принимая в качестве аргументов `log_softmax_values`, `targets`, `input_lengths` и `target_lengths`. `blank=0` указывает, что используется символ-заполнитель с индексом 0.Функция `nn.CTCLoss` используется для обучения моделей, решающих задачи распознавания последовательностей с переменной длиной.В итоге, создали класс для создания модели MyCaptchaModel.Он состоит из нескольких слоев:1. Слой свертки `conv1` с 3 входными каналами (RGB) и 128 выходными каналами. Используется ядро свертки размером 3x3 с заполнением 1x1.2. Слой максимального пулинга `maxpool1` с ядром размером 2x2.3. Слой свертки `conv2` с 128 входными каналами и 64 выходными каналами. Используется ядро свертки размером 3x3 с заполнением 1x1.4. Слой максимального пулинга `maxpool2` с ядром размером 2x2.5. Полносвязный слой `linear1` с 1152 входными нейронами и 64 выходными нейронами.6. Слой исключения `drop1` с вероятностью 0.2 для исключения случайных нейронов во время обучения.7. Рекуррентный слой `gru` с 64 входными нейронами и 32 скрытыми нейронами. Бидирекциональность и два слоя GRU используются для учета контекста с обоих сторон. Вероятность 0.25 применяется для отсева нейронов во время обучения.8. Полносвязный слой `output` с 64 входными нейронами и (num_chars+1) выходными нейронами. В данном случае, num_chars представляет количество символов, которые могут появиться на капче, и добавляется 1 для учета класса "нет символа" (нулевой символ).Далее скомбинируем всё, что разработали ранее. Загружаем данные в data_loader, а затем создаем прогнозы на основе модели CRNN. CTCLoss выдает потери, а затем корректируем веса, чтобы получить более точные прогнозы на следующую эпоху. Как только потери стабилизируются, то сохраняем модель и используем ее для прогнозов.Далее запустили процесс обучения на 30 эпохах, но сработала ранняя остановка.Так как значение потери при тестировании стало меньше трешолда в 0.05, то обучение завершилось на 23 эпохах. Через matplotlib создаем линейный график, чтобы увидеть изменение значения потерь на протяжении всего процесса обучения. Как видим, потери уменьшаются, а затем, когда они выравниваются, то реализуем раннюю остановку, чтобы предотвратить переобучение. Тут постоянно идет валидация на 10 % от всех обучающих данных.Рисунок20 –график функции потерь при обученииПроизвести эксперимент не так-то просто благодаря всем вышеописанным преобразованиям по подготовке данных.Сначала создали двефункции: get_imageиget_sample_photo.И вот именно с помощью созданных функций можем получать случайное изображение с меткой, отправлять на вход модели, отрисовывать изображение капчи и выводить на экран результат предсказания модели.Рисунок 22 –эксперимент по распознаванию капчиВ итоге, эксперимент по тесту модели прошел успешно.Концепция коммерческого продукта, основанного на автоматическом распознавании визуальной CAPTCHA, предполагает создание системы или программного обеспечения, способного автоматически решать задачи CAPTCHA без вмешательства человека.В продукте будут использоваться передовые алгоритмы распознавания изображений, методы машинного обучения и искусственный интеллект для анализа и интерпретации визуальных элементов изображений CAPTCHA для определения правильного ответа. По сути, это будет копировать человеческую способность расшифровывать искаженные или сложные символы, символы или изображения, часто используемые в тестах CAPTCHA.Однако важно учитывать потенциальные этические проблемы и последствия для безопасности. Автоматическое распознавание CAPTCHA может подорвать запланированные меры безопасности, потенциально делая возможными вредоносные действия, такие как автоматическое создание учетных записей или рассылка спама. Внедрение дополнительных уровней безопасности наряду с системой автоматического распознавания будет иметь решающее значение для снижения этих рисков.В заключение, эта дипломная работа направлена на разработку и реализацию классификатора капчи нейронной сети с использованием Python. Благодаря обширным исследованиям и экспериментам успешно продемонстрировали эффективность использования нейронных сетей для задач классификации капчи.Исследование началось с предоставления всестороннего обзора технологии капчи, ее цели и ее растущей значимости в цифровом мире. Исследовали существующие алгоритмы автоматического распознавания капчи.Далее углубились в теоретические основы нейронных сетей, обсудив различные архитектуры и алгоритмы, обычно используемые в задачах классификации изображений.После теоретической подготовки приступили к практической реализации классификатора капчи. Нашли разнообразный набор данных изображений капчи и предварительно обработали их.Затем набор данных был разделен на наборы для обучения и тестирования, чтобы точно оценить производительность модели.Используя язык программирования Python, задействовали популярную и мощную библиотеку глубокого обученияPyTorchдля построения архитектуры нейронной сети. Выбрали тип нейронной сети CNN. Далее провели кропотливую работу по подготовке данных и созданию всех необходимых для нейронной сети и успешного обучения. Процесс обучения включал в себя итеративную подачу пакетов изображений в сеть, расчет потерь и обновление весов сети с использованием обратного распространения ошибки. Отслеживали ход обучения модели и использовали раннюю остановку, чтобы предотвратить переобучение.По завершении обучения оценили работу классификатора на одном из примеров, для этого также создали некоторые вспомогательные функции. В конце работы, предложили детальную концепцию коммерческого продукта для распознавания капчи на основе нейронной сети.

1. Глория, Буэно Гарсия Обработка изображений с помощью OpenCV: моногр. / Глория Буэно Гарсия и др. - М.: ДМК Пресс, 2016. - 210 c.
2. Методы обработки и распознавания изображений лиц в задачах биометрии / Г.А. Кухарев и др. - М.: Политехника, 2013. - 416 c.
3. Обработка и анализ цифровых изображений с примерами на LabVIEW и IMAQ Vision / Ю.В. Визильтер и др. - М.: ДМК Пресс, 2016. - 464 c.
4. Таганов, Александр Иванович Нейросетевые системы искусственного интеллекта в задачах обработки изображений / Таганов Александр Иванович. - М.: Горячая линия - Телеком, 2016. - 531 c.
5. Абади М. и Фазлязизи Р. (2018). Распознавание капчи с помощью сверточных нейронных сетей. В 2018 г. 9-й Международный симпозиум по телекоммуникациям (IST) (стр. 754-759). IEEE.
6. Фей М., Цянь К. и Ли М. (2019). Распознавание капчи на основе глубокого обучения. В 2019 г. 4-я Международная конференция по автоматизации, управлению и роботам (ICACR) (стр. 32-36). IEEE.
7. Хан Ю., Ван К., Чжан В. и Чжэн Ю. (2016). Новый подход к распознаванию CAPTCHA на основе глубоких нейронных сетей. Нейрокомпьютинг, 173, 785-791.
8. Линь Ю., Ли Ю. и Чен В. (2019). Распознавание CAPTCHA с использованием глубоких сверточных нейронных сетей в сочетании со слиянием функций. Нейронные вычисления и приложения, 1-11.
9. Ху Ю., Чжан Г., Ван К. и Ван Дж. (2017). Распознавание капчи с использованием рекуррентных сверточных нейронных сетей. Нейрокомпьютинг, 237, 338-344.
10. Лю П., Хоу Дж., Цао Ю. и Лю П. (2019). Метод распознавания CAPTCHA, основанный на сверточной нейронной сети. В 2019 г. 11-я Международная конференция по измерительной технике и мехатронике (ICMTMA) (с. 215-220). IEEE.
11. Чен К., Чен Ю., Ма В. и Чен К. (2018). Новый метод распознавания CAPTCHA с использованием глубокого обучения. На Международной конференции по нейронной обработке информации (стр. 86-95). Спрингер, Чам.
12. Бабу С.К. и Бабу Р.С. (2018). Распознавание CAPTCHA с использованием глубокого обучения и трансферного обучения. На Калькуттской конференции IEEE (CALCON) 2018 г. (стр. 113–118). IEEE.
13. Чжан X., Ли Ю., Чжан Х., Хань В. и Хуан Х. (2019). Распознавание CAPTCHA с помощью сверточных нейронных сетей с текстовым управлением. Доступ IEEE, 7, 24963-24973.
14. Чжан Х., Ли Ю., Чжан Х. и Хуанг Х. (2018). Сквозное распознавание CAPTCHA с использованием глубоких сверточных нейронных сетей. В 2018 г. 13-я конференция IEEE по промышленной электронике и приложениям (ICIEA) (стр. 1303-1307). IEEE.
15. Резаиан М. и Абаде М.С. (2017). Распознавание CAPTCHA с использованием трансферного обучения с глубокими сверточными нейронными сетями. На конференции по искусственному интеллекту и обработке сигналов (AISP) 2017 г. (стр. 1–5). IEEE.
16. Фу Х., Ван Ю. и Хе К. (2019). Распознавание CAPTCHA на основе глубокого обучения с ограниченным количеством помеченных образцов. В 2019 году Международная конференция по виртуальной реальности и интеллектуальным системам (ICVRIS) (стр. 7-12). IEEE.
17. Сяо Г., Хуан С. и Цуй С. (2018). Распознавание CAPTCHA на основе сверточной нейронной сети с множественной ветвящейся структурой. В 2018 г. прошла 15-я Международная конференция IEEE по передовому видеонаблюдению и сигнальному наблюдению (AVSS) (стр. 1–6). IEEE.