DTLSiameseNetwork


NameDTLSiameseNetwork JSON
Version 0.0.8 PyPI version JSON
download
home_pagehttps://github.com/betepok506/DTL-neural-network
SummaryThe package contains functions for calculating ranking metrics
upload_time2024-06-22 18:54:04
maintainerNone
docs_urlNone
authorAndrey Rotanov
requires_python<4,>=3.7
licenseNone
keywords test
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Описание
Данный проект содержит реализачию сиамской нейронной сети для задачи сравнения изображений и поиска снимков ДЗЗ по подложке.

Сиамские и триплетные сети являются эффективными инструментами для создания отображений изображений в компактные евклидовы 
пространства, где расстояния отражают степень их сходства. Такие встраивания, обученные с использованием этих сетей, 
могут быть использованы в качестве векторов признаков для задач сравнения изображений, например, для поиска и 
сопоставления спутниковых снимков ДЗЗ.

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

![](images/contrastive_loss.png)

В качестве нейронной сети для извлечения изображений будем использовать предобученную **ResNet50**

В качестве одинаковых картинок будем брать кропы вырезанные с одних и тех же координат, но с разных подложек, а в качестве
разных будем брать кропы с разных координат и с разным пространственным разрешением.

График обучения

![](images/Train_loss.PNG)

График валидации

![](images/Val_loss.PNG)

Для оценки меры схожести между векторами использовалось косинусное расстояние.
Оценка производилась в два этапа, в первом этапе изображение сравнивалось с самим собой же (по координатам), 
но с других подложек, во время второго этапа каждое изображение сравнивалось с рандомным НЕпохожим изображением

Результаты сравнения представлены ниже:
- **Среднее косинусное расстояние для похожих изображений:** `0.922`
- **Среднее косинусное расстояние для НЕпохожих изображений:** `0.337`
- **Среднее время предсказания модели:** `0.007` секунд

Из чего можно сделать вывод что модель научилось отличать изображения.

# Предложения по улучшению

- Разработка новых архитектур нейронных сетей 
- Интеграция дополнительных данных
- Проведение экспериментов по улучшению качества сравнения изображений

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/betepok506/DTL-neural-network",
    "name": "DTLSiameseNetwork",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4,>=3.7",
    "maintainer_email": null,
    "keywords": "test",
    "author": "Andrey Rotanov",
    "author_email": "rotanov07@mail.ru",
    "download_url": "https://files.pythonhosted.org/packages/9a/a8/a88c170280bc5bd94f9829186d5bee1d701132e41488c480a946f0ed2fc9/DTLSiameseNetwork-0.0.8.tar.gz",
    "platform": null,
    "description": "# \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\r\n\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0447\u0438\u044e \u0441\u0438\u0430\u043c\u0441\u043a\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u0414\u0417\u0417 \u043f\u043e \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0435.\r\n\r\n\u0421\u0438\u0430\u043c\u0441\u043a\u0438\u0435 \u0438 \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0435 \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u044b \r\n\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0433\u0434\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0442 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0438\u0445 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430. \u0422\u0430\u043a\u0438\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f, \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u0438\u0445 \u0441\u0435\u0442\u0435\u0439, \r\n\u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \r\n\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u043e\u0432\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u0414\u0417\u0417.\r\n\r\n\u041c\u044b \u043e\u0431\u0443\u0447\u0438\u043c \u0441\u0438\u0430\u043c\u0441\u043a\u0443\u044e \u0441\u0435\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0430\u0440\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \r\n\u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0431\u044b\u043b\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443, \u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \r\n\u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e\u0442\u0435\u0440\u044c, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u0438\u0432\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435.\r\n\r\n![](images/contrastive_loss.png)\r\n\r\n\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0443\u044e **ResNet50**\r\n\r\n\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0431\u0443\u0434\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u043a\u0440\u043e\u043f\u044b \u0432\u044b\u0440\u0435\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u043d\u043e \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0434\u043b\u043e\u0436\u0435\u043a, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\r\n\u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u043a\u0440\u043e\u043f\u044b \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c.\r\n\r\n\u0413\u0440\u0430\u0444\u0438\u043a \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f\r\n\r\n![](images/Train_loss.PNG)\r\n\r\n\u0413\u0440\u0430\u0444\u0438\u043a \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438\r\n\r\n![](images/Val_loss.PNG)\r\n\r\n\u0414\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043c\u0435\u0440\u044b \u0441\u0445\u043e\u0436\u0435\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435.\r\n\u041e\u0446\u0435\u043d\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0432 \u0434\u0432\u0430 \u044d\u0442\u0430\u043f\u0430, \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0441 \u0441\u0430\u043c\u0438\u043c \u0441\u043e\u0431\u043e\u0439 \u0436\u0435 (\u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c), \r\n\u043d\u043e \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043b\u043e\u0436\u0435\u043a, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0441 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u043c \u041d\u0415\u043f\u043e\u0445\u043e\u0436\u0438\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c\r\n\r\n\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0438\u0436\u0435:\r\n- **\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439:** `0.922`\r\n- **\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043b\u044f \u041d\u0415\u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439:** `0.337`\r\n- **\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438:** `0.007` \u0441\u0435\u043a\u0443\u043d\u0434\r\n\r\n\u0418\u0437 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.\r\n\r\n# \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e\r\n\r\n- \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u043e\u0432\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \r\n- \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\r\n- \u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "The package contains functions for calculating ranking metrics",
    "version": "0.0.8",
    "project_urls": {
        "Homepage": "https://github.com/betepok506/DTL-neural-network"
    },
    "split_keywords": [
        "test"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bd8649be77f9d7c6277170d6cb755e5a2431eff7fbff99dc5e2c7d9213be8e22",
                "md5": "f484291869ec11b260a2824e4d741ed7",
                "sha256": "5feceeae2a440642805f2e8ae3ba983dbbe1956e68182b41f7805aa7431038f4"
            },
            "downloads": -1,
            "filename": "DTLSiameseNetwork-0.0.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f484291869ec11b260a2824e4d741ed7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4,>=3.7",
            "size": 9879,
            "upload_time": "2024-06-22T18:54:02",
            "upload_time_iso_8601": "2024-06-22T18:54:02.497429Z",
            "url": "https://files.pythonhosted.org/packages/bd/86/49be77f9d7c6277170d6cb755e5a2431eff7fbff99dc5e2c7d9213be8e22/DTLSiameseNetwork-0.0.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9aa8a88c170280bc5bd94f9829186d5bee1d701132e41488c480a946f0ed2fc9",
                "md5": "bd055cdcaa211d6fcaddd91b8ce3299a",
                "sha256": "1bfd03bf00ab86ed797e76f38fac9c5c2695ac2f17143497ad9ff75b96a8720f"
            },
            "downloads": -1,
            "filename": "DTLSiameseNetwork-0.0.8.tar.gz",
            "has_sig": false,
            "md5_digest": "bd055cdcaa211d6fcaddd91b8ce3299a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4,>=3.7",
            "size": 17131,
            "upload_time": "2024-06-22T18:54:04",
            "upload_time_iso_8601": "2024-06-22T18:54:04.393936Z",
            "url": "https://files.pythonhosted.org/packages/9a/a8/a88c170280bc5bd94f9829186d5bee1d701132e41488c480a946f0ed2fc9/DTLSiameseNetwork-0.0.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-22 18:54:04",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "betepok506",
    "github_project": "DTL-neural-network",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "dtlsiamesenetwork"
}
        
Elapsed time: 1.14020s