semvec/pypi-packages huggingface dataset:
DTLSiameseNetwork 0.0.8
The package contains functions for calculating ranking metrics
Requires Python: <4,>=3.7
Keywords: test

# Описание
Данный проект содержит реализачию сиамской нейронной сети для задачи сравнения изображений и поиска снимков ДЗЗ по подложке.

Сиамские и триплетные сети являются эффективными инструментами для создания отображений изображений в компактные евклидовы 
пространства, где расстояния отражают степень их сходства. Такие встраивания, обученные с использованием этих сетей, 
могут быть использованы в качестве векторов признаков для задач сравнения изображений, например, для поиска и 
сопоставления спутниковых снимков ДЗЗ.

Мы обучим сиамскую сеть, которая принимает пару изображений и настраивает их вложения таким образом, чтобы расстояние 
между ними было минимальным, если они относятся к одному классу, и превышало определенное значение, если они относятся к 
разным классам. Мы будем минимизировать функцию потерь, основанную на контрастивном подходе.

![](images/contrastive_loss.png)

В качестве нейронной сети для извлечения изображений будем использовать предобученную **ResNet50**

В качестве одинаковых картинок будем брать кропы вырезанные с одних и тех же координат, но с разных подложек, а в качестве
разных будем брать кропы с разных координат и с разным пространственным разрешением.

График обучения

![](images/Train_loss.PNG)

График валидации

![](images/Val_loss.PNG)

Для оценки меры схожести между векторами использовалось косинусное расстояние.
Оценка производилась в два этапа, в первом этапе изображение сравнивалось с самим собой же (по координатам), 
но с других подложек, во время второго этапа каждое изображение сравнивалось с рандомным НЕпохожим изображением

Результаты сравнения представлены ниже:
- **Среднее косинусное расстояние для похожих изображений:** `0.922`
- **Среднее косинусное расстояние для НЕпохожих изображений:** `0.337`
- **Среднее время предсказания модели:** `0.007` секунд

Из чего можно сделать вывод что модель научилось отличать изображения.

# Предложения по улучшению

- Разработка новых архитектур нейронных сетей 
- Интеграция дополнительных данных
- Проведение экспериментов по улучшению качества сравнения изображений