Распознавание изображений на Python при помощи нейросети
Разработка нейронной сети для распознавания изображений. Рассмотрение примеров применения машинного обучения в различных областях. Фреймворки и библиотеки для упрощения разработки ботов для Telegram. Создание приложения при помощи нейросети на Python.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | русский |
Дата добавления | 20.12.2023 |
Размер файла | 920,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования Республики Беларусь
Учреждение образования «Гомельский государственный университет имени Франциска Скорины»
Факультет физики и информационных технологий
Кафедра автоматизированных систем обработки информации
Отчет по практике
“Распознавание изображений на Python при помощи нейросети”
Исполнитель
студент группы АС-36 Кацубо А.С.
Научный руководитель Аксёнова Н. А.
Гомель 2023
Содержание
Введение
1. Информация о компании “IBA”
1.1 Общая информация
1.2 Обзор предметной области
1.2.1 Фреймворк TensorFlow
1.2.2 Машинное обучение
1.2.3 MobileNetV2
1.2.4 Telegram Bot API
1.2.5 Pillow
1.3 Постановка задачи
2. Разработка проекта
Заключение
Список использованных источников
Введение
Производственная практика для студентов - важная составляющего учебного процесса, позволяющая сориентироваться на рынке труда и найти себя в будущей профессии. Работодатели получают возможность присмотреться к потенциальным сотрудникам, привлечь на предприятие молодые перспективные кадры. Поэтому, чтобы извлечь из практики максимальную пользу, учащимся вузов важно серьезно к ней отнестись.
Производственная практика - это обязательная составляющая образовательного процесса, необходимая для подготовки квалифицированных работников, хорошо ориентирующихся не только в профильной теории, но и в реалиях трудовых будней. Этот этап обучения обычно осуществляется вне стен вуза - на базе учреждений, соответствующих будущей специальности студента. Перенос учебного процесса в условия, максимально схожие с обстановкой будущей профессиональной деятельностью студента, - обязательный этап на пути получения высшего образования.
Основная цель производственной практики - закрепление теоретических знаний, отработка профессиональных навыков и умений в условиях реальной рабочей деятельности. Нередко именно эта часть обучения становится стартом будущей карьеры выпускника.
Целью данной практики было разработать нейронную сеть для распознавания изображений. Распознавание изображений существует либо по отдельности, либо в интегрированном виде. Оно используются в таких сферах, как безопасность и наблюдение, сканирование и создание изображений, маркетинг и реклама, дополненная реальность и поиск изображений. В рамках практики изучить различные методы машинного обучения и реализовал нейронную сеть, способную распознавать изображения.
1. Информация о компании “IBA”
1.1 Общая информация
IBA Group -- международная ИТ-компания, основанная в 1993 году в Минске, Беларусь. Основные сферы деятельности -- ИТ-аутсорсинг, разработка ПО (RPA, BI/Big Data, цифровые двойники, автоматизация, мобильная разработка), внедрение облачных решений и услуги ЦОД, DevOps, внедрение решений вендоров.
В сферу компетенций компании входят информационные технологии, безопасность, промышленность, телекоммуникации, транспорт и логистика, банковский сектор, энергетика и нефтегазовый сектор, торговля. С момента основания компания выполнила более 2000 проектов. География заказчиков включает в себя более 50 стран.
С 2005 года головной офис располагается в Праге, Чехия. Компания владеет офисами в 15 странах, в том числе центрами разработки -- в 8 странах (Чехия, Словакия, Болгария, Польша, Литва, Грузия, Беларусь, Казахстан). Число сотрудников составляет более 2700 человек. Они сертифицированы IBM, SAP, Check Point, Microsoft.
IBA Gomel (Иностранное унитарное предприятие «ИВА-Гомель») - Гомельский центр разработок международного холдинга IBA Group, более 20 предприятий которого работают в 11 странах.
Наша компания объединяет более 350 специалистов высокой квалификации, имеющих большой опыт в разработке программных решений с использованием самых современных технологий, платформ и программных продуктов для различных отраслей экономики и производства. Именно их высокий профессионализм, целеустремленность, умение работать в команде и желание развиваться выводят компанию на лидирующие позиции.
Основные направления деятельности:
1 Проектирование, разработка и сопровождение:
- приложений для платформы Java Enterprise Edition, Microsoft SharePoint/.Net;
- приложений для извлечения, преобразования, загрузки массивов данных с использованием ETL-технологий;
- приложений в среде «облачных» вычислений;
- приложений для работы с BigData и SemanticWeb;
- приложений для мобильных устройств на различных платформах (Android, iOS, Windows Phone/Mobile);
- приложений с использованием концепции SPA (Single Page Application) и сервис-ориентированной архитектуры (SOA);
- приложений на языке ABAP для систем SAP;
- приложений на базе системы коллективной работы IBM Notes/Domino;
- продуктов Интернет и e-business (информационных порталов, Web-сайтов, систем ведения электронных платежей и др.);
- решений для обмена данными между корпоративными системами, включая унаследованные, SAP и Web-приложения (на базе IBM Websphere Message Broker)
2 Создание и развитие интегрированных систем управления предприятием на базе решений SAP;
3 Миграция программных продуктов между разнообразными платформами и средами;
4 Проектирование и администрирование баз данных (DB2, Oracle, MS SQL Server);
5 Разработка и внедрение BI-решений по отчетности и анализу данных;
6 Разработка облачных сервисов по управлению НСИ (MDM, MDG), в том числе:
- Анализ качества данных в справочниках (ISO 8000/22745);
- Построение систем управления НСИ (SAP MDG, MDM/BPM/Webdynpro);
- Построение онтологий и средств структуризации данных (RDF/OWL);
- Преобразование данных НСИ к формату Semantic Web и организация доступа (SPARQL)
7 Банковские технологии.
1.2 Обзор предметной области
1.2.1 Фреймворк TensorFlow
Фреймворк TensorFlow -- это относительно простой инструмент, который позволяет быстро создавать нейросети любой сложности. Он очень дружелюбен для начинающих, потому что содержит много примеров и уже готовых моделей машинного обучения, которые можно встроить в любое приложение. А продвинутым разработчикам TensorFlow предоставляет тонкие настройки и API для ускоренного обучения.
TensorFlow поддерживает несколько языков программирования. Главный из них -- это Python. Кроме того, есть отдельные пакеты для C/C++, Golang и Java. А ещё -- форк TensorFlow.js для исполнения кода на стороне клиента, в браузере, на JavaScript.
Этим возможности фреймворка TensorFlow не ограничиваются. Библиотеку также можно использовать для обучения моделей на смартфонах и умных устройствах (TensorFlow Lite) и создания корпоративных нейросетей (TensorFlow Extended).
Чтобы создать простую нейросеть на TensorFlow, достаточно понимать несколько основных принципов:
· что такое машинное обучение;
· как обучаются нейросети и какие методы для этого используются;
· как весь процесс обучения выглядит в TensorFlow.
1.2.2 Машинное обучение
В обычном программировании всё работает по заранее заданным инструкциям. Разработчики их прописывают с помощью выражений, а компьютер строго им подчиняется. В конце выполнения компьютер выдаёт результат.
Например, если описать в обычной программе, как вычисляется площадь квадрата, компьютер будет строго следовать инструкции и всегда выдавать стабильный результат. Он не начнёт придумывать новые методы вычисления и не будет пытаться оптимизировать сам процесс вычисления. Он будет всегда следовать правилам -- тому самому алгоритму, выраженному с помощью языка программирования.
Рисунок 1 Обычное программирование
Обычное программирование -- это когда входные данные поступают в программу, а она выдаёт результат. Машинное обучение работает по-другому. Нам нужно отдать компьютеру уже готовые результаты и входные данные и сказать: «Найди алгоритм, который сможет сделать из этих входных данных вот эти результаты». Нам неважно, как он будет это делать. Для нас важнее, чтобы результаты были точными.
Ещё мы должны говорить компьютеру, когда он ответил правильно, а когда -- неправильно. Это сделает обучение эффективным и позволит нейросети постепенно двигаться в сторону более точных результатов.
Рисунок 2 Машинное обучение
В машинном обучении всё работает по-другому: мы отдаём нейросети результат, а она выдаёт нам алгоритм. В целом машинное обучение похоже на обучение обычного человека. Например, чтобы различать обувь и одежду, нам нужно посмотреть на какое-то количество экземпляров обуви и одежды, высказать свои предположения относительно того, что именно сейчас находится перед нами, получить обратную связь от кого-то, кто уже умеет их различать, -- и тогда у нас появится алгоритм, как отличать одно от другого. Увидев туфли после успешного обучения, мы сразу сможем ска-зать, что это обувь, потому что по всем признакам они соответствуют этой категории.
Машинное обучение имеет широкий спектр применений в различных областях. Вот некоторые примеры:
· Компьютерное зрение: алгоритмы машинного обучения можно использовать для распознавания изображений, обнаружения объектов и отслеживания. Это находит применение в таких областях, как наблюдение, робототехника, беспилотные автомобили и медицинская визуализация.
· Обработка естественного языка. Алгоритмы машинного обучения можно использовать для обработки и анализа человеческого языка, что позволяет использовать такие приложения, как чат-боты, виртуальные помощники и анализ настроений.
· Системы рекомендаций. Машинное обучение можно использовать для анализа пользовательских данных и предоставления рекомендаций по продуктам, услугам или контенту. Это имеет приложения в электронной коммерции, развлечениях и социальных сетях.
· Обнаружение мошенничества: алгоритмы машинного обучения могут использоваться для обнаружения мошеннического поведения в финансовых транзакциях, страховых претензиях и других областях.
· Здравоохранение. Машинное обучение можно использовать для диагностики и прогнозирования заболеваний, разработки лекарств и персонализированной медицины.
· Маркетинг: машинное обучение можно использовать для анализа данных и поведения клиентов, чтобы улучшить маркетинговые стратегии и взаимодействие с клиентами.
· Профилактическое обслуживание. Машинное обучение можно использовать для анализа данных об оборудовании и прогнозирования необходимости обслуживания, что сокращает время простоя и повышает эффективность.
· Управление энергопотреблением. Машинное обучение можно использовать для оптимизации энергопотребления и сокращения отходов в таких отраслях, как производство, транспорт и строительство.
Это всего лишь несколько примеров из многих приложений машинного обучения. Поскольку технология продолжает развиваться, мы можем ожидать появления еще более инновационных и эффективных приложений в будущем.
1.2.3 MobileNetV2
MobileNetV2 -- это архитектура нейронной сети с глубоким обучением, разработанная для мобильных и встроенных устройств. Он был разработан исследователями Google как усовершенствование оригинальной архитектуры MobileNet.
MobileNetV2 использует комбинацию разделимых по глубине сверток и линейных узких мест, чтобы снизить вычислительную стоимость сети при сохранении высокой точности. Разделяемые по глубине свертки разбивают стандартную операцию свертки на две отдельные операции: свертка по глубине, которая применяет один фильтр к каждому входному каналу, за которой следует точечная свертка, которая применяет фильтры 1x1 для смешивания выходных каналов.
Линейные узкие места в MobileNetV2 используются для уменьшения количества входных и выходных каналов на каждом уровне узких мест, снижения вычислительных затрат при сохранении репрезентативной емкости. Сеть также включает пропускные соединения для улучшения градиентного потока и облегчения обучения. Базовая структура показана ниже (Рис.3).
Рисунок 3 Обзор архитектуры MobileNetV2. Синие блоки представляют составные сверточные строительные блоки, как показано выше
MobileNetV2 обеспечивает высочайшую точность при выполнении различных задач компьютерного зрения, таких как классификация изображений, обнаружение объектов и семантическая сегментация, при этом обеспечивая эффективность вычислений. Он получил широкое распространение в мобильных приложениях и встроенных системах, где вычислительные ресурсы ограничены.
1.2.4 Telegram Bot API
Telegram Bot API -- это интерфейс программирования приложений (API), предоставляемый Telegram, который позволяет разработчикам создавать ботов для Telegram. Он позволяет ботам отправлять и получать сообщения, изображения, аудио- и видеофайлы, а также выполнять другие функции, такие как создание кнопок и клавиатур, управление подписками и т.д.
Для упрощения разработки ботов для Telegram существуют различные фреймворки и библиотеки. Один из таких фреймворков -- это фреймворк Telegram Bot API для Python, который позволяет создавать ботов для Telegram на языке программирования Python.
Этот фреймворк предоставляет удобный интерфейс для работы с Telegram Bot API, который позволяет обрабатывать различные типы сообщений, такие как текстовые сообщения, фотографии, аудио- и видеофайлы, а также создавать и отправлять пользователю сообщения с кнопками и клавиатурами.
1.2.5 Pillow
Pillow (Python Imaging Library) -- это библиотека для обработки изображений на языке Python. Она предоставляет обширный набор функций для работы с изображениями, таких как открытие, сохранение, изменение размера, изменение формата, фильтрацию и преобразование изображений.
Pillow является форком библиотеки Python Imaging Library (PIL), который был создан для более активной разработки и обслуживания. Она обладает высокой скоростью работы и широким спектром функций, делая ее одной из самых популярных библиотек для обработки изображений на языке Python.
Pillow является мощной библиотекой для работы с изображениями на языке Python и предоставляет множество функций для редактирования и обработки изображений. Она может использоваться для масштабирования, обрезки, изменения цветовых пространств и многих других операций с изображениями.
1.3 Постановка задачи
распознавание изображение нейронный сеть
Создание приложения при помощи нейросети на Python для распознавания изображений. Изучение фреймворка TensorFlow, библиотеки Pillow, архитектуры MobileNetV2 и интерфейса Telegram Bot API.
2. Разработка проекта
Перед тем как писать основную часть программы проекта необходимо установить токен бота. Для этого нужно зайти в мессенджер и найти бота BotFather /start, после чего высветиться сообщение, что бот заработал. Пишем следующую команду /newbot и выбираем имя для своего бота. После этого нужно указать username и тогда придет сообщение, что бот создан и будет указан токен (Рис 4).
Рисунок 4 Создание бота в мессенджере
Теперь следует установить токен бота и создать объект используя фреймворк Telegram Bot API, который обрабатывает отправленные пользователем фотографии и отправляет обратно список объектов, обнаруженных на фотографии (Рис 5).
Рисунок 5 Создание объекта бота
После этого необходимо написать основную часть программы. В эту часть будет входить модель MobileNetV2, фреймворк TensorFlow, библиотека Pillow.
Библиотека Pillow использовалась для открытия фотографии и изменения ее размера. Когда бот получает фотографию от пользователя, библиотека Pillow используется для открытия файла фотографии и создания объекта изображения. Затем размер изображения изменяется на размер, который может быть обработан моделью MobileNetV2.
В коде модель MobileNetV2 загружается из TensorFlow и используется для распознавания объектов на фотографиях. Когда модель получает фотографию, она делает предсказания о том, какие объекты находятся на фотографии, и возвращает список объектов и их вероятности. Затем бот отправляет сообщение пользователю, перечисляя объекты на фотографии и вероятность их присутствия.
Рисунок 6 Обработка изображения
В результате исследования предметной области, тщательного анализа библиотек и фрейморков была написанна программа по распознованию изображений.
Рисунок 7 Результат выполнения программы
Рисунок 8 Код программы
Заключение
В ходе практики был разработана и реализована нейронная сеть для распознавания изображений. Данная модель не может похвастаться постоянной высокой точности распознавания. Её точность варьируется от качества изображения, а так же откуда оно было взято ( из интернета или снято на камеру). Поскольку сейчас нейросети активно развиваются, в последсвии модель MobileNetV2 может получить новую версию обновления, что значительно улучшит показатели распознования. Однако модель показала хорошую производительность. Время ответа составляло в среднем 3 секунды. Результаты данной работы могут быть использованы для создания системы распознавания людей, машин или каких-то других вещей. В дальнейшем, для улучшения модели, можно провести дополнительные эксперименты с другими архитектурами нейронных сетей и оптимизировать параметры модели.
В конце практики я приобрел ценный опыт в разработке нейронных сетей и их использовании для задачи распознавания изображений. Это позволило мне углубить свои знания в программировании и машинном обучении. Я изучил архитектуру MobileNetV2, которая представляет собой глубокую нейронную сеть, специально разработанную для мобильных и встроенных устройств. В результате практики я стал более опытным в разработке и применении нейронных сетей, и я готов применить свои знания в будущих проектах
Список использованных источников
1. Анатолий Постолит - Основы искусственного интеллекта в примерах на Python, 2021 г.
2. Библиотека TensorFlow: пишем нейросеть и изучаем принципы машинного обучения - https://skillbox.ru/media/code/biblioteka-tensorflow-pishem-neyroset-i-izuchaem-printsipy-mashinnogo-obucheniya/
3. MobileNetV2: The Next Generation of On-Device Computer Vision Networks - https://ai.googleblog.com/2018/04/mobilenetv2-next-generation-of-on.html
4. 4 Создаем чат-бот для распознавания изображений на основе нейронной сети MobileNetV2 - https://habr.com/ru/companies/otus/articles/726652/
Размещено на Allbest.ru
...Подобные документы
Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.
дипломная работа [1,8 M], добавлен 08.02.2017Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.
дипломная работа [2,9 M], добавлен 07.04.2019Принцип работы нейросетей и модели синтеза. Ключевые моменты проблемы распознавания речи. Система распознавания речи как самообучающаяся система. Описание системы: ввод звука, наложение первичных признаков на вход нейросети, модель и обучение нейросети.
курсовая работа [215,2 K], добавлен 19.10.2010Анализ создания виртуального окружения для разработки. Установка фреймворка Flask. Особенность настройки аутентификации и привилегий. Создание Python-файла и написание в нем простого веб-приложения. Запуск и проверка работоспособности приложения.
лабораторная работа [2,1 M], добавлен 28.11.2021Разработка программ средствами библиотеки tkinter на языке Python. Изучение основы работы в текстовом редакторе Word. Описание авторской идеи анимации. Использование базовых команд и конструкций. Процесс проектирования и алгоритм разработанной программы.
контрольная работа [125,3 K], добавлен 11.11.2014Use case-диаграмма. Оценка трудоёмкости и сроков разработки проекта с использованием языка Python по методикам CETIN И COCOMO-II. Проектирование информационной системы. Разработка приложения с использованием Django: создание шаблонов, моделей и пр.
дипломная работа [1,3 M], добавлен 10.07.2017Разработка алгоритма и программы для распознавания пола по фотографии с использованием искусственной нейронной сети. Создание алгоритмов: математического, работы с приложением, установки весов, реализации функции активации и обучения нейронной сети.
курсовая работа [1,0 M], добавлен 05.01.2013Понятие и характеристики облачных технологий, модели их развертывания, технологические процессы, аспекты экономики и критика. Язык программирования Python, оценка функциональности, сравнение с аналогами. Управление облаком в Python на примере libcloud.
курсовая работа [43,0 K], добавлен 08.06.2014Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.
курсовая работа [3,1 M], добавлен 27.02.2015Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.
реферат [51,9 K], добавлен 18.01.2015Об'єктно-орієнтована мова Python - сучасна мова програмування, проста у вивченні та використанні. Наявність повної стандартної бібліотеки. Середовища програмування на Python. Механізм функціонування інтерпретатора. Колекції даних, комбіновані оператори.
презентация [753,2 K], добавлен 06.02.2014Описание структурной схемы искусственного нейрона. Характеристика искусственной нейронной сети как математической модели и устройств параллельных вычислений на основе микропроцессоров. Применение нейронной сети для распознавания образов и сжатия данных.
презентация [387,5 K], добавлен 11.12.2015Разработка алгоритма и программы на персональном компьютере двухслойной нейросети, аналогичной программы на микроконтроллере STM32F407VG. Этапы реализации обучения нейросети и передачи весовых коэффициентов на микроконтроллер по интерфейсу связи UART.
курсовая работа [1,4 M], добавлен 21.02.2016Обработка изображений на современных вычислительных устройствах. Устройство и представление различных форматов изображений. Исследование алгоритмов обработки изображений на базе различных архитектур. Сжатие изображений на основе сверточных нейросетей.
дипломная работа [6,1 M], добавлен 03.06.2022Анализ нейронных сетей и выбор их разновидностей. Модель многослойного персептрона с обучением по методу обратного распространения ошибки. Проектирование библиотеки классов для реализации нейросети и тестовой программы, описание тестирующей программы.
курсовая работа [515,4 K], добавлен 19.06.2010Выбор типа и структуры нейронной сети. Подбор метода распознавания, структурная схема сети Хопфилда. Обучение системы распознавания образов. Особенности работы с программой, ее достоинства и недостатки. Описание интерфейса пользователя и экранных форм.
курсовая работа [3,0 M], добавлен 14.11.2013Этапы разработки системы реального времени для распознавания лиц на статическом изображении в условиях сложных сцен. Основные понятия алгоритма AdaBoost. Использование примитивов Хаара для описания свойств изображений. Среда разработки "Borland Delphi".
курсовая работа [6,8 M], добавлен 06.01.2011Рассмотрение способов применения и основных понятий нейронных сетей. Проектирование функциональной структуры автоматизированной системы построения нейросети обратного распространения ошибки, ее классов и интерфейсов. Описание периода "бета тестирования".
дипломная работа [3,0 M], добавлен 02.03.2010Оптическое распознавание символов как механический или электронный перевод изображений рукописного, машинописного или печатного текста в последовательность кодов. Компьютерные программы для оптического распознавания символов и их характеристика.
презентация [855,2 K], добавлен 20.12.2011Оптико-электронная система идентификации объектов подвижного состава железнодорожного транспорта. Автоматический комплекс распознавания автомобильных номеров. Принципы и этапы работы систем оптического распознавания. Особенности реализации алгоритмов.
дипломная работа [887,3 K], добавлен 26.11.2013