Oktatóanyag: Hasonló képek keresése korábbi keresésekből képelemzési jogkivonat használatával
Figyelmeztetés
2020. október 30-án a Bing Search API-k átkerültek az Azure AI-szolgáltatásokból a Bing Search Servicesbe. Ez a dokumentáció csak referenciaként szolgál. A frissített dokumentációt a Bing search API dokumentációjában találja. Az új Azure-erőforrások Bing-kereséshez való létrehozásával kapcsolatos útmutatásért lásd: Bing Search-erőforrás létrehozása a Azure Marketplace keresztül.
A Visual Search ügyféloldali kódtára lehetővé teszi, hogy a korábbi keresésekből származó képeket online keresse meg, amelyek egy ImageInsightsToken
értéket adnak vissza. Ez az alkalmazás lekéri az egyiket ImageInsightsToken
, és a jogkivonatot egy későbbi keresés során használja. Ezután elküldi a Bingnek, ImageInsightsToken
és olyan eredményeket ad vissza, amelyek Bing Search online talált hasonló képek URL-címeit és URL-címét tartalmazzák.
Az oktatóanyag teljes forráskódja további hibakezeléssel és széljegyzetekkel érhető el a GitHubon.
Előfeltételek
- A Visual Studio 2019 bármely kiadása.
- Ha Linux/MacOS rendszert használ, ezt az alkalmazást a Mono használatával futtathatja.
- A NuGet Visual Search- és képkeresési csomagok.
- A Visual Studio Megoldáskezelő kattintson a jobb gombbal a projektre, és válassza a Menü NuGet-csomagok kezelése parancsát. Telepítse a
Microsoft.Azure.CognitiveServices.Search.CustomSearch
csomagot és aMicrosoft.Azure.CognitiveServices.Search.ImageSearch
csomagot. A NuGet-csomagok telepítése a következőket is telepíti:- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
- A Visual Studio Megoldáskezelő kattintson a jobb gombbal a projektre, és válassza a Menü NuGet-csomagok kezelése parancsát. Telepítse a
Azure-erőforrás létrehozása
Kezdje el használni a Bing Visual Search API-t az alábbi Azure-erőforrások egyikének létrehozásával:
- Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
- Válassza ki a tarifacsomagot
S9
.
- Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
- Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.
Az ImageInsightsToken lekérése a Bing Image Search ügyfélkódtárából
Ez az alkalmazás a ImageInsightsToken
Bing Image Search ügyfélkódtárán keresztül beszerzett fájlt használ. Egy új C#-konzolalkalmazásban hozzon létre egy ügyfelet, amely meghívja az API-t a használatával ImageSearchClient()
. Ezután használja SearchAsync()
a következőt a lekérdezéssel:
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\"");
Tárolja az első keresési eredményt a használatával imageResults.Value.First()
, majd tárolja a képelemzést 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!");
}
Ezt ImageInsightsToken
a rendszer egy kérésben küldi el a Bing Visual Searchnek.
Az ImageInsightsToken hozzáadása Visual Search-kérelemhez
Adja meg a ImageInsightsToken
Visual Search-kérelmeket úgy, hogy létrehoz egy ImageInfo
objektumot a ImageInsightsToken
Bing Visual Search válaszaiban szereplő elemből.
ImageInfo ImageInfo = new ImageInfo(imageInsightsToken: insightsTok);
ImageInsightsTokenből származó képek keresése a Bing Visual Search használatával
Az VisualSearchRequest
objektum információkat tartalmaz a keresendő képről ImageInfo
. A VisualSearchMethodAsync()
metódus az eredményeket kéri le. Nem kell bináris képet megadnia, mivel a képet a jogkivonat jelöli.
VisualSearchRequest VisualSearchRequest = new VisualSearchRequest(ImageInfo);
var visualSearchResults = client.Images.VisualSearchMethodAsync(knowledgeRequest: VisualSearchRequest).Result;
Iterálás a Visual Search eredményei között
A Visual Search eredményei ImageTag
objektumok. Mindegy egyes címke ImageAction
objektumok listáját tartalmazza. Mindegyik ImageAction
tartalmaz egy Data
mezőt, amely a művelet típusától függő értékek listája. Átvezetheti például a objektumokat a ImageTag
fájlban visualSearchResults.Tags
, és lekérheti benne a ImageAction
címkét. Az alábbi minta a műveletek részleteit nyomtatja PagesIncluding
ki:
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
A tényleges kép URL-címeinek a művelettípusokból való lekéréséhez olyan szereplőre van szükség, amely a következőt olvassa fel ActionType
: ImageModuleAction
, amely egy Data
értéklistát tartalmazó elemet tartalmaz. Minden egyes érték egy kép URL-je. A következő a művelettípust a PagesIncluding
következőre öntötte, ImageModuleAction
és beolvassa az értékeket:
if (i.ActionType == "PagesIncluding")
{
foreach(ImageObject o in (i as ImageModuleAction).Data.Value)
{
Console.WriteLine("ContentURL: " + o.ContentUrl);
}
}
További információk ezekről az adattípusokról: Képek – Visual Search.
Visszaadott URL-címek
A teljes alkalmazás a következő URL-címeket adja vissza:
ActionType | URL-cím |
---|---|
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=PV9GzMFOI0AHZp2gKeWJ8DcveSDRE3fP2jHDKMpJSU8&v=1&r=https%3a%2f%2fwww.bing.com%2fimages%2fsearch%3fq%3doutdoor&p=DevEx,5831.1 |
Ahogy fent látható, a és ImageResults
a TopicResults
típusok a kapcsolódó képek lekérdezését tartalmazzák. Az URL-címek hivatkozása a Bing keresési eredményeire.