Skip to main content

A neural network that detects water drops on the surface from an image.

Project description

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



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

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

Для пользователя:

pip install water-drop-detection
  • Для запуска проекта через py файл:
from water_drop_detection import main
main.main()
  • Или при клонировании репозитория можно вызвать:
python water_drop_detection/main.py

Для разработчика:

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

Информация о покрытии тестами: 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

water_drop_detection-0.9.tar.gz (16.4 kB view hashes)

Uploaded Source

Built Distribution

water_drop_detection-0.9-py3-none-any.whl (16.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page