Bildklassificering i Azure

Blob Storage
Visuellt innehåll
Cosmos DB
Event Grid
Functions

Det här scenariot är relevant för företag som behöver bearbeta bilder.

Potentiella program omfattar klassificering av bilder för en modewebbplats, analys av text och bilder för försäkringsanspråk eller förståelse av telemetridata från spelskärmbilder. Traditionellt skulle företag behöva utveckla expertis inom maskininlärningsmodeller, träna modellerna och slutligen köra avbildningarna genom sin anpassade process för att få ut data från bilderna.

Genom att använda Azure-tjänster som Visuellt innehåll API och Azure Functions kan företag eliminera behovet av att hantera enskilda servrar, samtidigt som de minskar kostnaderna och utnyttjar den expertis som Microsoft redan har utvecklat kring bearbetning av bilder med Cognitive Services. Det här exempelscenariot hanterar specifikt ett användningsfall för bildbearbetning. Om du har olika AI-behov kan du överväga hela sviten med Cognitive Services.

Relevanta användningsfall

Andra relevanta användningsfall är:

  • Klassificera bilder på en modewebbplats.
  • Klassificera telemetridata från skärmbilder av spel.
  • Klassificera bilder för försäkringsanspråk.

Arkitektur

Arkitektur för bildklassificering

Det här scenariot omfattar backend-komponenterna i ett webb- eller mobilprogram. Data flödar genom scenariot på följande sätt:

  1. API-lagret byggs med hjälp av Azure Functions. Dessa API:er gör det möjligt för programmet att ladda upp bilder och hämta data från Cosmos DB.
  2. När en bild laddas upp via ett API-anrop lagras den i Blob Storage.
  3. När nya filer läggs till i Blob Storage utlöses ett Event Grid-meddelande som ska skickas till en Azure-funktion.
  4. Azure Functions skickar en länk till den nyligen uppladdade filen till Visuellt innehåll API:et som ska analyseras.
  5. När data har returnerats från Visuellt innehåll-API:et Azure Functions en post i Cosmos DB för att spara resultatet av analysen tillsammans med bildmetadata.

Komponenter

  • Visuellt innehåll API är en del av Cognitive Services paket och används för att hämta information om varje bild.
  • Azure Functions tillhandahåller backend-API:et för webbappen, samt händelsebearbetning för uppladdade bilder.
  • Event Grid utlöser en händelse när en ny avbildning laddas upp till Blob Storage. Avbildningen bearbetas sedan med Azure Functions.
  • Blob Storage lagrar alla bildfiler som laddas upp till webbappen, samt alla statiska filer som webbprogrammet använder.
  • Cosmos DB metadata om varje bild som laddas upp, inklusive resultatet av bearbetningen från Visuellt innehåll API.

Alternativ

  • Custom Vision Service. Den Visuellt innehåll API:et returnerar en uppsättning taxonomibaserade kategorier. Om du behöver bearbeta information som inte returneras av VISUELLT INNEHÅLL-API:et kan du använda Custom Vision Service, som gör att du kan skapa anpassade bild klassificerare.
  • Cognitive Search (tidigare Azure Search). Om ditt användningsfall omfattar att fråga metadata för att hitta bilder som uppfyller specifika villkor kan du överväga att använda Cognitive Search. För närvarande integrerar Cognitive Search det här arbetsflödet sömlöst i förhandsversionen.
  • Logic Apps. Om du inte behöver reagera i realtid på tillagda filer till en blob kan du överväga att använda Logic Apps. En logikapp som kan kontrollera om en fil har lagts till kan startas av upprepningsutlösaren eller skjutfönsterutlösaren.

Överväganden

Skalbarhet

De flesta komponenter som används i det här exempelscenariot är hanterade tjänster som skalas automatiskt. Ett par anmärkningsvärda undantag: Azure Functions har en gräns på högst 200 instanser. Om du behöver skala utanför den här gränsen kan du överväga flera regioner eller appplaner.

Du kan endast Cosmos DB för automatisk skalning SQL API. Om du planerar att använda andra API:er kan du läsa mer om att uppskatta dina krav i enheter för programbegäran i vår dokumentation. Om du vill dra full nytta av skalningen i Cosmos DB du förstå hur partitionsnycklar fungerar i Cosmos DB.

NoSQL-databaser byter ofta konsekvens (i cap-sats) för tillgänglighet, skalbarhet och partitionering. I det här exempelscenariot används en nyckel/värde-datamodell och transaktionskonsekvens behövs sällan eftersom de flesta åtgärder per definition är atomiska. Ytterligare vägledning för Att välja rätt datalager finns i Azure Architecture Center. Om implementeringen kräver hög konsekvens kan du välja konsekvensnivå i Cosmos DB.

Allmän vägledning om hur du utformar skalbara lösningar finns i checklistan för prestandaeffektivitet i Azure Architecture Center.

Säkerhet

Hanterade identiteter för Azure-resurser används för att ge åtkomst till andra resurser som är interna för ditt konto och sedan tilldelas till Azure Functions. Tillåt endast åtkomst till de nödvändiga resurserna i dessa identiteter för att säkerställa att inget extra exponeras för dina funktioner (och eventuellt för dina kunder).

Allmän vägledning om hur du utformar säkra lösningar finns i Dokumentationen om Azure-säkerhet.

Återhämtning

Alla komponenter i det här scenariot hanteras, så på regional nivå är alla motståndskraftiga automatiskt.

Allmän vägledning om hur du utformar elastiska lösningar finns i Utforma elastiska program för Azure.

Prissättning

För att utforska kostnaden för att köra det här scenariot är alla tjänster förkonfigurerade i kostnadskalkylatorn. Om du vill se hur priserna skulle ändras för ditt specifika användningsfall ändrar du lämpliga variabler så att de matchar din förväntade trafik.

Vi har angett tre exempel på kostnadsprofiler baserat på mängden trafik (vi antar att alla bilder är 100 kB stora):

  • Liten:det här prisexempel korrelerar med bearbetning av 5 000 bilder per månad.
  • Medel:det här prisexempel korrelerar med bearbetning av 500 000 bilder per månad.
  • Stor:det här prisexempel korrelerar med bearbetning av 50 miljoner bilder per månad.

En guidad utbildningsväg finns i:

Innan du distribuerar det här exempelscenariot i en produktionsmiljö bör du läsa rekommenderade metoder för att optimera prestanda och tillförlitlighet för Azure Functions.