Package: water-drop-detection
Water Drops DetectionВыполнили:Володина СофьяЛейсле АлександрШитенко АлинаДата: 25.06.2023г.ВведениеПроект создан для детектирования на изображении капель воды на любой поверхности. Эта задача стала интересна, так как мы хотели
попрактиковать свои навыки в обучении нейронных сетей, собрать своими руками датасет и сделать модель доступной для любого пользователя, который захочет проверить работу детекции на своем собственном изображении.Neural NetДля детекции капель была выбрана нейросеть с архитектурой Unet, имеющая энкодер ResNet50. Она представляет из себя сверточную нейронную сеть из  двух блоков: энкодера и декодера. Первый из них уменьшает разрешение изображения и увеличивает информационный объем каждого пикселя. Декодер, наоборот, разворачивает выход из энкодера до первоначального размера и выдает маску искомого объекта.)Данная нейронная сеть проста в реализации и удобна в использовании для решения поставленных целей проекта. Для Unet характерна высокая точность работы при малом объеме данных. В результате её работы есть возможность не только получить маску изображения,
но и найти площадь сегментированного объекта.ДатасетСборка датасета состояла из нескольких частей:поиск изображений в интернете/съемка фотографии с каплями водысоздание маски в фоторедакторе, на которой белым цветом отображен участок капли, черным - фонперевод маски с помощью скрипта на языке Python в бинарную матрицу True-False и сохранение ее с расширением .npzсоздание датасета путем объединения исходной фотографии и соответствующей ей npz-маскиUIUI сделан с помощью языка Python, библиотеки PyQT5 и программы QtDesigner.
Интерфейс принимает изображение или папку с изображениями и отправляет их в нейронную сеть для детектирования. Результат сохраняется в новую папку в двух форматах: на одном капли закрашиваются, на другом добавляется bounding box. Пользователь может выбрать любую из версий для просмотра. Также при передаче изображения есть возможность отредактировать его: повернуть в любую сторону или обрезать. Каждая страница UI изначально создана в QtDesigner, в коде представлена в виде класса со своими методами. Взаимодействие между страницами происходит с помощью функций библиотеки PyQT5Управление проектомУстановка и запуск программыДля пользователя:pip install water-drop-detectionДля запуска проекта через py файл:from water_drop_detection import main
main.main()Или при клонировании репозитория можно вызвать:python water_drop_detection/main.pyДля разработчика:Вы можете скачать проект по этой ссылке:https://github.com/HerrPhoton/Water_drop_detectionИли клонировать репозиторий нижеприведенной командой:git clone https://github.com/HerrPhoton/Water_drop_detectionОткройте проект в IDEУстановите необходимые библиотеки командой ниже:pip -r install requirements.txtЗапуск приложения осуществяется через запуск файла main.py:python main.pyСтраница документации может быть запущена через:start docs\build\html\index.htmlРабота с Docker:Команды для сборки и запуска проекта в терминале:docker build . -t drop_detection
docker run drop_detectionОбраз можно скачать с Docker Hub по ссылке:https://hub.docker.com/repository/docker/alincnl/drop_detectionИнформация о покрытии тестами:https://app.codecov.io/gh/HerrPhoton/Water_drop_detectionРезультаты работы программыТестовое изображениеМаска изображенияМаска + bounding box + окружностьИсточникиU-Net: Convolutional Networks for Biomedical Image Segmentation