Служба поиска сходства векторов изображений (1) — Решение

поисковый движок

Обзор

  • Когда вы слышите «поиск изображений по изображению», вы в первую очередь думаете о функции поиска изображений по изображению поисковых систем, таких как Baidu, Google и Ali? На самом деле, вы можете сами построить свою систему поиска изображений: самостоятельно создать библиотеку фотографий, самостоятельно выбрать картинку для поиска в библиотеке и получить несколько похожих на нее картинок.
  • Чтобы попробовать аналогичную сцену поиска изображений, основанную на расчете расстояния внутреннего произведения и модели извлечения признаков изображения VGG16, разработана система поиска изображений. Текст разделен на пять частей: обзор системы, модель VGG, подготовка данных, развертывание системы и сводка.

сборка системы

git clone https://github.com/thirtyonelee/image-retrieval.git && cd image-retrieval
pip install -r requirements.txt
  • Создайте базовый индекс, сохраните индекс в: "/index/train.h5" по умолчанию.
python index.py
  • Испытайте поиск подобия, по умолчанию используйте механизм расчета внутреннего продукта Numpy, тестовое изображение по умолчанию: "/data/test/001_accordion_image_0001.jpg"
python retrieval.py 或 python retrieval.py --engine=numpy --test_data=<ROOT_DIR>/data/test/001_accordion_image_0001.jpg

[{'name': b'001_accordion_image_0002.jpg', 'score': 0.902732}, {'name': b'001_accordion_image_0003.jpg', 'score': 0.872308}, {'name': b'002_anchor_image_0004.jpg', 'score': 0.865453}]
'name' 对应索引库 <ROOT_DIR>/data/train 图片名字

структура системы

  • Система в основном состоит из двух частей: модели извлечения признаков изображения VGG и механизма векторного поиска. Модель VGG отвечает за преобразование изображения в вектор, а механизм векторного поиска отвечает за сохранение вектора и выполнение аналогичного векторного поиска. Конкретная структура показана на следующем рисунке:
system_arch

модель ВГГ

  • VGGNet был предложен совместно Visual Geometry Group (Группа визуальной геометрии) Оксфордского университета и исследователями из компании Google DeepMind и занял первое место в задаче локализации и второе место в задаче классификации в ILSVRC-2014. Его выдающийся вклад заключается в доказательстве того, что использование небольшой свертки (3 * 3) и увеличение глубины сети может эффективно улучшить эффект модели, а VGGNet обладает хорошей способностью к обобщению других наборов данных. Модель VGG превосходит GoogleNet в нескольких задачах обучения передаче, извлечении функций CNN из изображений, и модель VGG является предпочтительным алгоритмом. Поэтому VGG выбран в качестве модели глубокого обучения в этой схеме.
  • VGGNet исследует взаимосвязь между глубиной CNN и их производительностью, многократно складывая 33 маленьких ядра свертки и 22 максимальных слоя объединения, VGGNet успешно строит 16-19-уровневую CNN. В этом решении используется модель VGG16, предоставляемая модулем приложений Keras ( keras.applications ).
  • Официальный сайт ВГГ:Woohoo.robots.O type.AC.UK/~v GG/Горячий цвет, ах, горячий…
  • ВГГ Гитхаб:GitHub.com/MA Крис АА/Он…

подготовка данных

  • В этой демонстрации используетсяPASCAL VOCНабор изображений из 11530 изображений в 20 категориях.
  • Размер набора данных 2G, адрес загрузки:host.robots.O.AC.UK/Pascal/VOC/…

Примечание. Вы можете использовать другие изображения для тестирования, эта система поддерживает форматы изображений .jpg и .png.

Суммировать

  • Проект поддерживает различные движки расчета расстояний, такие как: Numpy, Faiss, ES, Milvus.
  • Можно настроить другие функции расчета расстояния, такие как: евклидово расстояние (L2), расстояние Хэмминга, расстояние Жаккара, расстояние Танимото и т. д.

приложение

Ссылка 1:GitHub.com/Willard — с ах...
Ссылка 2:GitHub.com/Информация найти-загрузить…