Skip to content

HerrPhoton/Water_drop_detection

Repository files navigation

Water Drops Detection




Выполнили:

Дата: 25.06.2023г.


Введение

Проект создан для детектирования на изображении капель воды на любой поверхности. Эта задача стала интересна, так как мы хотели попрактиковать свои навыки в обучении нейронных сетей, собрать своими руками датасет и сделать модель доступной для любого пользователя, который захочет проверить работу детекции на своем собственном изображении.


Neural Net

Для детекции капель была выбрана нейросеть с архитектурой Unet, имеющая энкодер ResNet50. Она представляет из себя сверточную нейронную сеть из двух блоков: энкодера и декодера. Первый из них уменьшает разрешение изображения и увеличивает информационный объем каждого пикселя. Декодер, наоборот, разворачивает выход из энкодера до первоначального размера и выдает маску искомого объекта.



Данная нейронная сеть проста в реализации и удобна в использовании для решения поставленных целей проекта. Для Unet характерна высокая точность работы при малом объеме данных. В результате её работы есть возможность не только получить маску изображения, но и найти площадь сегментированного объекта.


Датасет

Сборка датасета состояла из нескольких частей:

  • поиск изображений в интернете/съемка фотографии с каплями воды
  • создание маски в фоторедакторе, на которой белым цветом отображен участок капли, черным - фон
  • перевод маски с помощью скрипта на языке Python в бинарную матрицу True-False и сохранение ее с расширением .npz
  • создание датасета путем объединения исходной фотографии и соответствующей ей npz-маски


UI

UI сделан с помощью языка Python, библиотеки PyQT5 и программы QtDesigner. Интерфейс принимает изображение или папку с изображениями и отправляет их в нейронную сеть для детектирования. Результат сохраняется в новую папку в двух форматах: на одном капли закрашиваются, на другом добавляется bounding box. Пользователь может выбрать любую из версий для просмотра. Также при передаче изображения есть возможность отредактировать его: повернуть в любую сторону или обрезать. Каждая страница UI изначально создана в QtDesigner, в коде представлена в виде класса со своими методами. Взаимодействие между страницами происходит с помощью функций библиотеки PyQT5



Управление проектом

Установка и запуск программы

git clone https://github.com/HerrPhoton/Water_drop_detection
  • Откройте папку Water_drop_detection и установите необходимые библиотеки командой ниже:
pip -r install requirements.txt
  • Запустите приложение с помощью команды:
python water_drop_detection/main.py
  • Страница документации может быть запущена через:
start docs\build\html\index.html

Работа с Docker:

  • Команды для сборки и запуска проекта в терминале:
docker build . -t drop_detection
docker run drop_detection

Информация о покрытии тестами: https://app.codecov.io/gh/HerrPhoton/Water_drop_detection


Результаты работы программы


Тестовое изображение Маска изображения Маска + bounding box + окружность
1 1 1
1 1 1
1 1 1

Источники


U-Net: Convolutional Networks for Biomedical Image Segmentation
GitHub Actions
Docker Documentation