Шаги для создания проекта Python
Наш подход к построению этой модели классификации дорожных знаков обсуждается в четыре этапа:
• Изучите набор данных
• Создать модель CNN
• Обучить и проверить модель
• Протестируйте модель с помощью тестового набора данных.
Цифрами на схеме указана последовательность действий при работе пользователя с системой. Пользователь загружает изображение. Запрос пользователя, обрабатывается web-сервером и загруженное изображение передается в модуль нейронных сетей, где над изображением выполняются все необходимые преобразования (масштабирование, изменение цветовой схемы и т.д.), после чего каждая из нейронных сетей формирует свое предсказание. Затем управляющая логика данного модуля выбирает для каждой сети два наиболее вероятных предсказания и возвращает эти данные web-серверу.
Web-сервер передает полученные данные о предсказаниях сети в модуль классификации, где они обрабатываются и формируется окончательный ответ о прогнозируемом классе изображения, который возвращается web-серверу и оттуда - пользователю. При этом взаимодействие между пользователем и web-сервером и web-сервером и модулями нейронных сетей и классификации осуществляется посредством REST-запросов с помощью протокола HTTP. Изображение передается в формате multipart form data, а данные о результатах работы классификаторов - в формате JSON. Данная логика работы делает отдельные модули достаточно изолированным друг от друга, что позволяет разрабатывать их независимо, в том числе с использованием различных языков программирования, а также в случае необходимости легко изменять логику работы каждого модуля в отдельности, не затрагивая логику работы других.
Для реализации пользовательского интерфейса в данной системе были использованы языки HTML и Java Script, для реализации web-сервера и модуля классификации - язык Java, а для реализации модуля нейронных сетей - язык Python. Внешний вид пользовательского интерфейса системы представлен на (рис.2).
Рис.2. Пользовательский интерфейс системы
Использование данной системы предполагает, что модули нейронных сетей и классификации уже содержат обученные модели. При этом для обучения моделей предоставляется интерфейс администратора, который представляет собой по сути набор скриптов на языке python для обучения нейронных сетей и консольную утилиту на языке Java для обучения итогового классификатора. Предполагается, что данные инструменты не должны использоваться часто или непрофессиональными пользователями, поэтому более продвинутого интерфейса для них не требуется.
В целом, разработанное приложение успешно выполняет все поставленные перед ним задачи, в том числе позволяет пользователю удобным образом получить предсказание класса для выбранного им изображения.
Исходные данные, распределение количества изображений по классам (рис.3).
иметь в виду
Рис.3. Распределение количества изображений по классам.
В качестве входных данных в данном исследовании был использован уже упомянутый ранее датасет GTSRB (German Traffic Signs Recognition Benchmark). Данный датасет состоит из 51840 изображений, принадлежащих 43 классам. При этом количество изображений, принадлежащих разным классам, различно. Распределение количества изображений по классам представлено на (рис.3).
Размеры входных изображений также различаются. Для самого меньшего из изображений ширина равна 15 пикселей, для самого большого - 250 пикселей. Общее распределение размеров изображений представлено на (рис.4).
≤ 95
≤ 85
≤ 65
≤ 35
≤ 45
≤ 55
Do'stlaringiz bilan baham: |