Metadata-Version: 2.1
Name: DTLSiameseNetwork
Version: 0.0.8
Summary: The package contains functions for calculating ranking metrics
Home-page: https://github.com/betepok506/DTL-neural-network
Author: Andrey Rotanov
Author-email: rotanov07@mail.ru
Keywords: test
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7, <4
Description-Content-Type: text/markdown
Provides-Extra: all
Provides-Extra: test
License-File: LICENSE

# Описание
Данный проект содержит реализачию сиамской нейронной сети для задачи сравнения изображений и поиска снимков ДЗЗ по подложке.

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

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

![](images/contrastive_loss.png)

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

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

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

![](images/Train_loss.PNG)

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

![](images/Val_loss.PNG)

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

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

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

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

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