Поделиться через


Извлечение изображений с помощью многомодальных внедрения (версия 4.0)

API-интерфейсы многомодальных внедрения обеспечивают векторизацию изображений и текстовых запросов. Они преобразуют изображения в координаты в многомерном векторном пространстве. Затем входящие текстовые запросы также можно преобразовать в векторы, а изображения можно сопоставить с текстом на основе семантической близости. Это позволяет пользователю искать набор изображений с помощью текста без необходимости использовать теги изображений или другие метаданные. Семантическая близость часто дает лучшие результаты в поиске.

2024-02-01 API включает многоязычную модель, которая поддерживает поиск текста на 102 языках. Исходная модель только на английском языке по-прежнему доступна, но ее нельзя объединить с новой моделью в том же индексе поиска. Если векторизованный текст и изображения с помощью модели только на английском языке, эти векторы не будут совместимы с многоязычным текстом и векторами изображений.

Внимание

Эти API доступны только в определенных географических регионах. См . сведения о доступности региона.

Необходимые компоненты

  • Подписка Azure — создайте бесплатную учетную запись.
  • После получения подписки Azure создайте ресурс Компьютерное зрение в портал Azure, чтобы получить ключ и конечную точку. Не забудьте создать его в одном из поддерживаемых географических регионов: см. статью "Доступность регионов".
    • После развертывания ресурса выберите элемент Перейти к ресурсу. Скопируйте ключ и конечную точку во временное расположение, чтобы использовать его позже.

Попробуйте использовать многомодальные внедрения

Вы можете попробовать функцию многомодальных внедрения быстро и легко в браузере с помощью Vision Studio.

Внимание

Интерфейс Vision Studio ограничен 500 изображениями. Чтобы использовать более крупный набор изображений, создайте собственное приложение поиска с помощью API в этом руководстве.

Вызов API векторизации изображений

retrieval:vectorizeImage API позволяет преобразовать данные изображения в вектор. Чтобы вызвать его, внесите следующие изменения в следующую команду cURL:

  1. Замените <endpoint> конечной точкой Azure AI Vision.
  2. Замените <subscription-key> ключ распознавания искусственного интеллекта Azure.
  3. В тексте запроса задайте "url" URL-адрес удаленного образа, который вы хотите использовать.
  4. При необходимости измените model-version параметр на более раннюю версию. 2022-04-11 — это устаревшая модель, которая поддерживает только английский текст. Изображения и текст, векторизованные с определенной моделью, несовместимы с другими моделями, поэтому обязательно используйте одну и ту же модель для обоих.
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeImage?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'url':'https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'
}"

Чтобы векторизировать локальное изображение, необходимо поместить двоичные данные в текст HTTP-запроса.

Вызов API возвращает векторный объект JSON, который определяет координаты изображения в пространстве высокомерных векторов.

{ 
  "modelVersion": "2022-04-11", 
  "vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ] 
}

Вызов API векторизации текста

retrieval:vectorizeText API позволяет преобразовать текстовую строку в вектор. Чтобы вызвать его, внесите следующие изменения в следующую команду cURL:

  1. Замените <endpoint> конечной точкой Azure AI Vision.
  2. Замените <subscription-key> ключ распознавания искусственного интеллекта Azure.
  3. В тексте запроса задайте "text" пример термина поиска, который вы хотите использовать.
  4. При необходимости измените model-version параметр на более раннюю версию. 2022-04-11 — это устаревшая модель, которая поддерживает только английский текст. Изображения и текст, векторизованные с определенной моделью, несовместимы с другими моделями, поэтому обязательно используйте одну и ту же модель для обоих.
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeText?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'text':'cat jumping'
}"

Вызов API возвращает векторный объект JSON, который определяет координаты текстовой строки в пространстве высокомерных векторов.

{ 
  "modelVersion": "2022-04-11", 
  "vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ] 
}

Вычисление сходства векторов

Косинус сходства — это метод измерения сходства двух векторов. В сценарии извлечения изображений вы сравниваете вектор поискового запроса с вектором каждого изображения. Затем изображения, превышающие определенное пороговое значение сходства, можно вернуть в качестве результатов поиска.

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

public static float GetCosineSimilarity(float[] vector1, float[] vector2)
{ 
    float dotProduct = 0; 
    int length = Math.Min(vector1.Length, vector2.Length); 
    for (int i = 0; i < length; i++) 
    { 
        dotProduct += vector1[i] * vector2[i]; 
    } 
    float magnitude1 = Math.Sqrt(vector1.Select(x => x * x).Sum());
    float magnitude2 = Math.Sqrt(vector2.Select(x => x * x).Sum());
    
    return dotProduct / (magnitude1 * magnitude2);
}

Следующий шаг