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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file water_drop_detection-0.9.tar.gz.

File metadata

  • Download URL: water_drop_detection-0.9.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for water_drop_detection-0.9.tar.gz
Algorithm Hash digest
SHA256 30ed3e9b3c2c9509fd413b3b0e5372c73199ef5d03a6e9bb341eef43c2a38b38
MD5 dcfb7f54e398b88557207d9f35d3f0d7
BLAKE2b-256 49e09e26e5c34f5505fbfb5a7c70046ef473e8555853ef14a4f02a2735ffddcb

See more details on using hashes here.

File details

Details for the file water_drop_detection-0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for water_drop_detection-0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 8854bfd14036ef7a5aa947b3043bc0886f3067b85665745a2da5044ec165e58c
MD5 d6206e3864686b309c2434c74cbad92c
BLAKE2b-256 5031f9c7f57167e76d4ce15e675158df191029eb1e97a962ec51a7f16769c988

See more details on using hashes here.

Supported by

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