Udostępnij za pośrednictwem


Samouczek: znajdowanie podobnych obrazów z poprzednich wyszukiwań przy użyciu tokenu szczegółowych informacji o obrazie

Ostrzeżenie

30 października 2020 r. interfejsy API Wyszukiwanie Bing zostały przeniesione z usług Azure AI do usług Wyszukiwanie Bing Services. Ta dokumentacja jest udostępniana tylko do celów referencyjnych. Aby uzyskać zaktualizowaną dokumentację, zobacz dokumentację interfejsu API wyszukiwania Bing. Aby uzyskać instrukcje dotyczące tworzenia nowych zasobów platformy Azure na potrzeby wyszukiwania Bing, zobacz Tworzenie zasobu Wyszukiwanie Bing za pośrednictwem Azure Marketplace.

Biblioteka klienta wyszukiwania wizualnego umożliwia wyszukiwanie obrazów w trybie online z poprzednich wyszukiwań, które zwracają element ImageInsightsToken. Ta aplikacja pobiera ImageInsightsToken token i używa go w kolejnym wyszukiwaniu. Następnie wysyła ImageInsightsToken element do usługi Bing i zwraca wyniki, które zawierają Wyszukiwanie Bing adresy URL i adresy URL podobnych obrazów znalezionych w trybie online.

Pełny kod źródłowy tego samouczka można znaleźć z dodatkową obsługą błędów i adnotacjami w usłudze GitHub.

Wymagania wstępne

  • Dowolna wersja programu Visual Studio 2019.
  • Jeśli używasz systemu Linux/MacOS, możesz uruchomić tę aplikację przy użyciu platformy Mono.
  • Pakiety NuGet Visual Search i Image Search.
    • W Eksplorator rozwiązań w programie Visual Studio kliknij prawym przyciskiem myszy projekt i wybierz polecenie Zarządzaj pakietami NuGet z menu. Microsoft.Azure.CognitiveServices.Search.CustomSearch Zainstaluj pakiet i Microsoft.Azure.CognitiveServices.Search.ImageSearch pakiet. Zainstalowanie pakietu NuGet powoduje także zainstalowanie następujących elementów:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Tworzenie zasobu platformy Azure

Zacznij korzystać z interfejsu API wyszukiwania wizualnego Bing, tworząc jeden z następujących zasobów platformy Azure:

zasób Wyszukiwanie Bing w wersji 7

  • Dostępne za pośrednictwem Azure Portal do momentu usunięcia zasobu.
  • Wybierz warstwę cenową S9 .

Zasób z wieloma usługami

  • Dostępne za pośrednictwem Azure Portal do momentu usunięcia zasobu.
  • Użyj tego samego klucza i punktu końcowego dla aplikacji w wielu usługach azure AI.

Pobieranie tokenu ImageInsightsToken z biblioteki klienta wyszukiwania obrazów Bing

Ta aplikacja używa elementu uzyskanego ImageInsightsToken za pośrednictwem biblioteki klienta wyszukiwania obrazów Bing. W nowej aplikacji konsolowej języka C# utwórz klienta w celu wywołania interfejsu API przy użyciu polecenia ImageSearchClient(). Następnie użyj polecenia SearchAsync() z zapytaniem:

var client = new ImageSearchClient(new Microsoft.Azure.CognitiveServices.Search.ImageSearch.ApiKeyServiceClientCredentials(subKey));
var imageResults = client.Images.SearchAsync(query: "canadian rockies").Result;
Console.WriteLine("Search images for query \"canadian rockies\"");

Zapisz pierwszy wynik wyszukiwania przy użyciu polecenia imageResults.Value.First(), a następnie zapisz szczegółowe informacje o obrazie ImageInsightsToken.

String insightTok = "None";
if (imageResults.Value.Count > 0)
{
    var firstImageResult = imageResults.Value.First();
    insightTok = firstImageResult.ImageInsightsToken;
}
else
{
    insightTok = "None found";
    Console.WriteLine("Couldn't find image results!");
}

Jest to ImageInsightsToken wysyłane do wyszukiwania wizualnego Bing w żądaniu.

Dodawanie tokenu ImageInsightsToken do żądania wyszukiwania wizualnego

ImageInsightsToken Określ wartość dla żądania wyszukiwania wizualnego, tworząc ImageInfo obiekt na podstawie ImageInsightsToken zawartych w odpowiedziach z wyszukiwania wizualnego Bing.

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Znajdowanie obrazów z tokenu ImageInsightsToken za pomocą wyszukiwania wizualnego Bing

Obiekt VisualSearchRequest zawiera informacje o obrazie do ImageInfo przeszukania. Metoda VisualSearchMethodAsync() pobiera wyniki. Nie musisz podawać pliku binarnego obrazu, ponieważ obraz jest reprezentowany przez token.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;

Iterowanie wyników wyszukiwania wizualnego

Wyniki wyszukiwania wizualnego to obiekty ImageTag. Każdy tag zawiera listę obiektów ImageAction. Każdy ImageAction zawiera Data pole, które jest listą wartości, które zależą od typu akcji. Można iterować po ImageTag obiektach w visualSearchResults.Tagsprogramie , na przykład i pobrać ImageAction tag w nim. Poniższy przykład wyświetla szczegóły PagesIncluding akcji:

if (visualSearchResults.Tags.Count > 0)
{
    // List of tags
    foreach (ImageTag t in visualSearchResults.Tags)
    {
        foreach (ImageAction i in t.Actions)
        {
            Console.WriteLine("\r\n" + "ActionType: " + i.ActionType + " WebSearchURL: " + i.WebSearchUrl);

            if (i.ActionType == "PagesIncluding")
            {
                foreach (ImageObject o in (i as ImageModuleAction).Data.Value)
                {
                    Console.WriteLine("ContentURL: " + o.ContentUrl);
                }
            }
        }
    }
}

PagesIncluding ActionTypes

Pobieranie rzeczywistych adresów URL obrazów z typów akcji wymaga rzutowania, które odczytuje element ActionType jako ImageModuleAction, który zawiera Data element z listą wartości. Każda wartość to adres URL obrazu. Następujące rzutowanie PagesIncluding typu akcji na ImageModuleAction i odczytuje wartości:

    if (i.ActionType == "PagesIncluding")
    {
        foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
        {
            Console.WriteLine("ContentURL: " + o.ContentUrl);
        }
    }

Aby uzyskać więcej informacji o tych typach danych, zobacz Images - Visual Search (Obrazy — wyszukiwanie wizualne).

Zwrócone adresy URL

Kompletna aplikacja zwraca następujące adresy URL:

ActionType Adres URL
MoreSizes —> WebSearchUrl
VisualSearch —> WebSearchUrl
ImageById —> WebSearchUrl
RelatedSearches —> WebSearchUrl:
DocumentLevelSuggestions —> WebSearchUrl:
TopicResults —> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVqvH-900&v=1&r=https%3a%2f%2fww.bing.com%2fdiscover%2fcanadian%2brocky&p=DevEx,5823.1
ImageResults —> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=PV9GZMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJSU8&v=1&r=https%3a%2f%2fww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1

Jak pokazano powyżej, TopicResults typy i ImageResults zawierają zapytania dotyczące powiązanych obrazów. Adresy URL łączą się z wynikami wyszukiwania Bing.

Następne kroki