Skip to content

yuriy-zhilovets2/imagesim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Использованные внешние проекты

  • weaviate База данных для хранения векторов
  • imagedeup Библиотека поиска похожих изображений
  • flask+gunicorn Веб-сервер

Список файлов

  • server/ Сервер API

  • samples/ Образцы фото

  • create-collection.sh Первоначальное создание пустой коллекции в базе

  • docker-compose.yml Описание запуска сервисов

  • search-test.sh Проверка поиска

  • spider Индексатор фотографий

  • start.sh Запуск контейнеров Докера

Последовательность тестирования

  1. Создать контейнер для сервера
cd server
bash make-docker.sh
  1. Запустить базу и сервер
cd ..
bash start.sh

База доступна по адресу http://localhost:8080, API - http://localhost:8000

  1. Создать пустую коллекцию для хранения данных
bash create-collection.sh
  1. Индексировать фотографии-образцы
./spider samples
  1. Запустить тестовый поиск
bash search-test.sh

Поля, хранящиеся в таблице

  • name Произвольной длины, символы ASCII за исключением запрещенных в URL. Поле должно быть уникальным в пределах базы. Для проекта PastVu предполагается, что тут будут храниться числовые номера фотографий.

  • region Регион фото, произвольная строка. Для ограничения поиска дубликатов конкретными регионами.

API

Индексирование

Создание отпечатка фото (вектор чисел, отражающих его содержимое и использующийся для сравнения)

PUT /fingerprint/name

  • name - Название изображения
  • image - файл изображения, загружается как file upload с типом запроса multipart/form-data
  • region - регион поиска

Изменение фото или региона

PATCH /fingerprint/name

  • name - уникальное название изображения
  • image - Новое изображение, загружается как file upload с типом запроса multipart/form-data
  • region - Новый регион

Оба поля image и region необязательны Поскольку имя фото в базе уникально и является его ключом, для смены имени нужно удалить старый отпечаток и загрузить новый.

Удаление отпечатка

DELETE /fingerprint/name

  • name - уникальное название изображения

Поиск

Поиск дубликатов файла изображения

POST /match Найти снимки, похожие на указанный

  • image - файл изображения, загружается как file upload с типом запроса multipart/form-data
  • region - регион поиска, необязателен, по умолчанию поиск по всей базе
  • distance - максимальная разница между снимками, 0..1 (0 - полное сходство, 1- полное несходство). Необязателен. Значение по умолчаню 0.1 подобрано для типичного поиска - дубликатов фото
  • limit - максимальное количество найденных изображений. Необязателен. Значение по умолчанию - 10

Поиск дубликатов изображения, уже хранящегося в базе

GET /match/name region, distance, limit

  • name - уникальное название фото Остальные параметры - как в предыдущем поиске

Недостатки

Библиотека imagededup при каждом запуске скачивает модель с внешнего URL

Возможные пути усовершенствования

  • Пакетное индексирование

About

Search of duplicate images for PastVu project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published