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
Для разработчика:
- Вы можете скачать проект по этой ссылке: 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
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
Built Distribution
Hashes for water_drop_detection-0.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8854bfd14036ef7a5aa947b3043bc0886f3067b85665745a2da5044ec165e58c |
|
MD5 | d6206e3864686b309c2434c74cbad92c |
|
BLAKE2b-256 | 5031f9c7f57167e76d4ce15e675158df191029eb1e97a962ec51a7f16769c988 |