Sdílet prostřednictvím


Kurz: Vyhledání podobných obrázků z předchozích hledání pomocí tokenu přehledů obrázků

Upozornění

30. října 2020 se rozhraní API Vyhledávání Bingu přesunula ze služeb Azure AI na Vyhledávání Bingu Services. Tato dokumentace je k dispozici pouze pro referenci. Aktualizovanou dokumentaci najdete v dokumentaci k rozhraní API Bingu pro vyhledávání. Pokyny k vytváření nových prostředků Azure pro vyhledávání Bingu najdete v tématu Vytvoření prostředku Vyhledávání Bingu prostřednictvím Azure Marketplace.

Klientská knihovna vizuálního vyhledávání umožňuje najít online obrázky z předchozích hledání, která vrací ImageInsightsToken. Tato aplikace získá ImageInsightsToken token a použije ho v následném hledání. Pak odešle do Bingu ImageInsightsToken a vrátí výsledky, které zahrnují Vyhledávání Bingu adresy URL a adresy URL podobných obrázků nalezených online.

Úplný zdrojový kód pro tento kurz najdete s dalšími chybami a poznámkami na GitHubu.

Požadavky

  • Libovolná edice sady Visual Studio 2019.
  • Pokud používáte Linux nebo MacOS, můžete tuto aplikaci spustit pomocí mono.
  • Balíčky NuGet Pro vizuální vyhledávání a Vyhledávání obrázků.
    • V Průzkumník řešení v sadě Visual Studio klikněte pravým tlačítkem na projekt a v nabídce vyberte Spravovat balíčky NuGet. Microsoft.Azure.CognitiveServices.Search.CustomSearch Nainstalujte balíček a balíček Microsoft.Azure.CognitiveServices.Search.ImageSearch . Při instalaci balíčků NuGet se také nainstalují následující položky:
      • Microsoft.Rest.ClientRuntime
      • Microsoft.Rest.ClientRuntime.Azure
      • Newtonsoft.Json

Vytvoření prostředku Azure

Začněte používat rozhraní API pro vizuální vyhledávání Bingu vytvořením jednoho z následujících prostředků Azure:

prostředek Vyhledávání Bingu v7

  • K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
  • Vyberte cenovou S9 úroveň.

Prostředek s více službami

  • K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
  • Pro své aplikace použijte stejný klíč a koncový bod napříč několika službami Azure AI.

Získejte ImageInsightsToken z klientské knihovny Bingu pro vyhledávání obrázků.

Tato aplikace používá objekt získaný ImageInsightsToken prostřednictvím klientské knihovny Vyhledávání obrázků Bingu. V nové konzolové aplikaci jazyka C# vytvořte klienta pro volání rozhraní API pomocí ImageSearchClient(). Pak s dotazem použijte SearchAsync() :

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\"");

Uložte první výsledek hledání pomocí imageResults.Value.First()a pak uložte přehled obrázku 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!");
}

Ten ImageInsightsToken se odešle do vizuálního vyhledávání Bingu v požadavku.

Přidání imageInsightsToken do požadavku vizuálního vyhledávání

ImageInsightsToken Zadejte pro požadavek vizuálního vyhledávání objekt takImageInfo, že vytvoříte objekt z ImageInsightsToken odpovědí obsažených v odpovědích z vizuálního vyhledávání Bingu.

ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);

Vyhledání obrázků z imageInsightsToken pomocí vizuálního vyhledávání Bingu

Objekt VisualSearchRequest obsahuje informace o obrázku, který ImageInfo se má prohledávat. Metoda VisualSearchMethodAsync() získá výsledky. Nemusíte zadávat binární soubor obrázku, protože obrázek je reprezentovaný tokenem.

VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);

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

Iterace ve výsledcích vizuálního hledání

Výsledky Vizuálního vyhledávání jsou objekty ImageTag. Každá značka obsahuje seznam objektů ImageAction. Každý ImageAction obsahuje Data pole, což je seznam hodnot, které závisí na typu akce. Můžete například iterovat objekty ImageTag v visualSearchResults.Tagsa získat značku v objektu ImageAction . V následující ukázce jsou uvedené podrobnosti o akcích PagesIncluding :

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

K získání skutečných adres URL obrázků z typů akcí se vyžaduje přetypování , které bude číst ActionType jako ImageModuleAction, což obsahuje Data prvek se seznamem hodnot. Každá hodnota je adresa URL obrázku. Následující příkaz přetypuje PagesIncluding typ akce na ImageModuleAction a přečte hodnoty:

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

Další informace o těchto typech dat najdete v článku Obrázky – Vizuální vyhledávání.

Vrácené adresy URL

Úplná aplikace vrátí následující adresy URL:

ActionType 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=BcQifmzdKFyyBusjLxxgO42kzq1Geh7RucVVqvH-900&v=1&r=https%3a%2f%2fwww.bing.com%2fdiscover%2fcanadian%2brocky&p=DevEx,5823.1
ImageResults –> WebSearchUrl https://www.bing.com/cr?IG=3E32CC6CA5934FBBA14ABC3B2E4651F9& CID=1BA795A21EAF6A63175699B71FC36B7C&rd=1&h=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJS&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1

Jak je znázorněno výše, TopicResults typy a ImageResults obsahují dotazy na související obrázky. Adresy URL odkazují na výsledky hledání Bingu.

Další kroky