Рубрики
Без рубрики

Сходство поиска с изображениями

В этой статье является частью серии учебников на TXTAI, семантической поисковой платформе AI. TXTAI … Теги с ShowDev, MachineLearning, NLP, Python.

Учебник серии на TXTAI (21 часть серии)

Эта статья является частью серии учебников на TXTAI платформа семантической поисковой платформы AI.

TXTAI как имя подразумевает работы с текстом и AI, довольно простым. Но это не значит, что он не может работать с разными типами контента. Например, изображение может быть описано со словами. Мы можем использовать это описание для сравнения изображения в запрос или другие документы. В этой статье показано, как изображения и текст могут быть встроены в одно и то же пространство для поддержки поиска сходства.

Будущая версия TXTAI добавит поддержку подписью изображения, которое позволит изображениям, аудио, документам и тексту для всех жить в том же индексе вложения. Модель в этой статье разработана, чтобы иметь изображения в отдельном индексе вложения. Оставайтесь настроиться на большее на изображении подписью!

Установить TXTAI и все зависимости. Поскольку эта статья напрямую использует преобразователи предложений, нам нужно установить пакет с подобия.

pip install txtai[similarity] torchvision ipyplot

# Get test data
wget -N https://github.com/neuml/txtai/releases/download/v2.0.0/tests.tar.gz
tar -xvzf tests.tar.gz

Предложение-трансформаторы Недавно добавленная поддержка для Модель Openai Clip . Эта модель встраивает текст и изображения в одно и то же пространство, позволяющее поиск сходства изображения. TXTAI может напрямую использовать эти модели через преобразователи предложения. Проверьте ссылку на приведенные выше приведенные выше примеры трансформаторов при использовании этой модели.

В этом разделе строит индекс вложений по серии изображений.

import glob

from PIL import Image

from txtai.embeddings import Embeddings

def images():
  for path in glob.glob('txtai/*jpg'):
    yield (path, Image.open(path), None)

embeddings = Embeddings({"method": "sentence-transformers", "path": "clip-ViT-B-32"})
embeddings.index(images())

Теперь, когда у нас есть индекс, давайте искать это! Этот раздел запускает список запросов против индекса и показывает верхний результат для каждого запроса. Должны сказать, что это довольно 🔥🔥🔥

import ipyplot
from PIL import Image

images, labels = [], []
for query in ["Walking into the office", "Saturday cleaning the yard", "Working on the latest report", "Working on my homework", "Watching an exciting race",
              "The universe is massive", "Time lapse video of traffic", "Relaxing Thanksgiving day"]:
  index, _ = embeddings.search(query, 1)[0]

  images.append(Image.open(index))
  labels.append(query)

ipyplot.plot_images(images, labels, img_width=425, force_b64=True)

Предложение-трансформаторы также имеют модель Это поддерживает более 50+ языков. Это позволяет запускать запросы, используя эти языки с индексом изображения.

Примечание. Эта модель поддерживает только текст, поэтому изображения должны сначала проиндексироваться с помощью модели, используемой выше.

import ipyplot
from PIL import Image

from txtai.pipeline import Translation

# Update model at query time to support multilingual queries
embeddings.config["path"] = "sentence-transformers/clip-ViT-B-32-multilingual-v1"
embeddings.model = embeddings.loadVectors()

# Translate queries to German
queries = ["Walking into the office", "Saturday cleaning the yard", "Working on the latest analysis", "Working on my homework", "Watching an exciting race",
           "The universe is massive", "Time lapse video of traffic", "Relaxing Thanksgiving day"]
translate = Translation()
translated = translate(queries, "de")

images, labels = [], []
for x, query in enumerate(translated):

  index, _ = embeddings.search(query, 1)[0]

  images.append(Image.open(index))
  labels.append("%s
(%s)" % (query, queries[x])) ipyplot.plot_images(images, labels, img_width=425, force_b64=True)

Учебник серии на TXTAI (21 часть серии)

Оригинал: “https://dev.to/neuml/similarity-search-with-images-g7b”