Fazer a recuperação de imagem usando inserções multimodais (versão 4.0)
As APIs de inserções multimodais permitem a vetorização de imagens e consultas de texto. Elas convertem imagens em coordenadas em um espaço de vetor multidimensional. Depois, as consultas de texto de entrada também podem ser convertidas em vetores e as imagens podem ser correspondidas ao texto com base na proximidade semântica. Isso permite que o usuário pesquise um conjunto de imagens usando texto, sem precisar usar marcas de imagem ou outros metadados. A proximidade semântica geralmente produz melhores resultados na pesquisa.
A API 2024-02-01
inclui um modelo multilíngue que dá suporte à pesquisa de texto em 102 idiomas. O modelo original somente em inglês ainda está disponível, mas não pode ser combinado com o novo modelo no mesmo índice de pesquisa. Se você vetorizou texto e imagens usando o modelo somente inglês, esses vetores não serão compatíveis com vetores de texto e imagem multilíngues.
Importante
Essas APIs só estão disponíveis em determinadas regiões geográficas. Confira a Disponibilidade de região.
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- Depois de obter sua assinatura do Azure, crie um recurso da Pesquisa Visual Computacional no portal do Azure para obter a chave e o ponto de extremidade. Certifique-se de criá-lo em uma das regiões geográficas com suporte: consulte a Disponibilidade da região.
- Após a implantação, selecione Ir para recurso. Copie a chave e ponto de extremidade para um local temporário para usar mais tarde.
Experimentar inserções multimodais
Você pode experimentar o recurso de inserções multimodais de forma rápida e fácil no navegador usando o Vision Studio.
Importante
A experiência do Vision Studio é limitada a 500 imagens. Para usar um conjunto de imagens maior, crie seu próprio aplicativo de pesquisa usando as APIs neste guia.
Chame a API Vetorizar Imagem
A API retrieval:vectorizeImage
permite converter os dados de uma imagem em um vetor. Para chamá-la, faça as seguintes alterações no comando cURL abaixo:
- Substitua
<endpoint>
pelo seu ponto de extremidade do Visão de IA do Azure. - Substitua
<subscription-key>
pela chave do Visão de IA do Azure. - No corpo da solicitação, defina
"url"
como a URL de uma imagem remota que você deseja usar. - Opcionalmente, altere o parâmetro
model-version
para uma versão mais antiga.2022-04-11
é o modelo herdado que dá suporte apenas ao texto em inglês. As imagens e o texto que são vetorizados com um determinado modelo não são compatíveis com outros modelos, portanto, use o mesmo modelo para ambos.
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://zcusa.951200.xyz/azure/ai-services/computer-vision/media/quickstarts/presentation.png'
}"
Para vetorizar uma imagem local, coloque os dados binários no corpo da solicitação HTTP.
A chamada à API retorna um objeto JSON vetor, que define as coordenadas da imagem no espaço vetor de alta dimensão.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Chame a API Vetorizar Texto
A API retrieval:vectorizeText
permite converter uma cadeia de caracteres de texto em um vetor. Para chamá-la, faça as seguintes alterações no comando cURL abaixo:
- Substitua
<endpoint>
pelo seu ponto de extremidade do Visão de IA do Azure. - Substitua
<subscription-key>
pela chave do Visão de IA do Azure. - No corpo da solicitação, defina
"text"
como o termo de pesquisa de exemplo que você deseja usar. - Opcionalmente, altere o parâmetro
model-version
para uma versão mais antiga.2022-04-11
é o modelo herdado que dá suporte apenas ao texto em inglês. As imagens e o texto que são vetorizados com um determinado modelo não são compatíveis com outros modelos, portanto, use o mesmo modelo para ambos.
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'
}"
A chamada à API retorna um objeto JSON vetor, que define as coordenadas da cadeia de caracteres de texto no espaço vetor de alta dimensão.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Calcular a similaridade do vetor
A similaridade cosseno é um método para medir a similaridade de dois vetores. Em um cenário de Recuperação de Imagem, você comparará o vetor de consulta de pesquisa com o vetor de cada imagem. As imagens que estão acima de um determinado limite de similaridade podem ser retornadas como resultados da pesquisa.
O código de exemplo a seguir calcula a similaridade de cosseno entre dois vetores. Cabe a você decidir qual limite de similaridade usar para retornar imagens como resultados da pesquisa.
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);
}