- weaviate База данных для хранения векторов
- imagedeup Библиотека поиска похожих изображений
- flask+gunicorn Веб-сервер
-
server/ Сервер API
-
samples/ Образцы фото
-
create-collection.sh Первоначальное создание пустой коллекции в базе
-
docker-compose.yml Описание запуска сервисов
-
search-test.sh Проверка поиска
-
spider Индексатор фотографий
-
start.sh Запуск контейнеров Докера
- Создать контейнер для сервера
cd server
bash make-docker.sh
- Запустить базу и сервер
cd ..
bash start.sh
База доступна по адресу http://localhost:8080, API - http://localhost:8000
- Создать пустую коллекцию для хранения данных
bash create-collection.sh
- Индексировать фотографии-образцы
./spider samples
- Запустить тестовый поиск
bash search-test.sh
-
name Произвольной длины, символы ASCII за исключением запрещенных в URL. Поле должно быть уникальным в пределах базы. Для проекта PastVu предполагается, что тут будут храниться числовые номера фотографий.
-
region Регион фото, произвольная строка. Для ограничения поиска дубликатов конкретными регионами.
Создание отпечатка фото (вектор чисел, отражающих его содержимое и использующийся для сравнения)
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
- Пакетное индексирование