Klasyfikacja obrazów na platformie Azure

Azure Blob Storage
Azure Computer Vision
Azure Cosmos DB
Azure Event Grid
Azure Functions

Korzystając z usług platformy Azure, takich jak interfejs API przetwarzanie obrazów i usługa Azure Functions, firmy mogą wyeliminować konieczność zarządzania poszczególnymi serwerami, jednocześnie zmniejszając koszty i wykorzystując wiedzę, którą firma Microsoft opracowała już przy użyciu obrazów przetwarzania za pomocą usług Cognitive Services. Ten przykładowy scenariusz dotyczy w szczególności przypadku użycia przetwarzania obrazów. Jeśli masz różne potrzeby w zakresie sztucznej inteligencji, rozważ pełny pakiet usług Cognitive Services.

Architektura

Architecture for image classification

Pobierz plik programu Visio z tą architekturą.

Workflow

Ten scenariusz obejmuje składniki zaplecza aplikacji internetowej lub mobilnej. Dane przepływa przez scenariusz w następujący sposób:

  1. Dodawanie nowych plików (przekazywania obrazów) w usłudze Blob Storage wyzwala zdarzenie w usłudze Azure Event Grid. Proces przekazywania można organizować za pośrednictwem sieci Web lub aplikacji mobilnej. Alternatywnie obrazy można przekazywać oddzielnie do usługi Azure Blob Storage.
  2. Usługa Event Grid wysyła powiadomienie wyzwalające usługę Azure Functions.
  3. Usługa Azure Functions wywołuje interfejs API usługi Azure przetwarzanie obrazów w celu przeanalizowania nowo przekazanego obrazu. przetwarzanie obrazów uzyskuje dostęp do obrazu za pośrednictwem adresu URL obiektu blob analizowanego przez usługę Azure Functions.
  4. Usługa Azure Functions utrwala odpowiedź interfejsu API przetwarzanie obrazów w usłudze Azure Cosmos DB. Ta odpowiedź zawiera wyniki analizy wraz z metadanymi obrazu.
  5. Wyniki można wykorzystywać i odzwierciedlać na frontonie internetowym lub mobilnym. Należy pamiętać, że to podejście pobiera wyniki klasyfikacji, ale nie przekazanego obrazu.

Elementy

  • interfejs API przetwarzanie obrazów jest częścią pakietu usług Cognitive Services i służy do pobierania informacji o każdym obrazie.
  • Usługa Azure Functions udostępnia interfejs API zaplecza dla aplikacji internetowej. Ta platforma udostępnia również przetwarzanie zdarzeń dla przekazanych obrazów.
  • Usługa Azure Event Grid wyzwala zdarzenie po przekazaniu nowego obrazu do magazynu obiektów blob. Obraz jest następnie przetwarzany za pomocą funkcji platformy Azure.
  • Usługa Azure Blob Storage przechowuje wszystkie pliki obrazów, które są przekazywane do aplikacji internetowej, a także wszystkie pliki statyczne używane przez aplikację internetową.
  • Usługa Azure Cosmos DB przechowuje metadane dotyczące każdego przekazanego obrazu, w tym wyniki przetwarzania z interfejsu API przetwarzanie obrazów.

Alternatywy

  • Custom Vision Service. Interfejs API przetwarzanie obrazów zwraca zestaw kategorii opartych na taksonomii. Jeśli musisz przetworzyć informacje, które nie są zwracane przez interfejs API przetwarzanie obrazów, rozważ usługę Custom Vision Service, która umożliwia tworzenie niestandardowych klasyfikatorów obrazów.
  • Wyszukiwanie poznawcze (dawniej Azure Search). Jeśli przypadek użycia obejmuje wykonywanie zapytań dotyczących metadanych w celu znalezienia obrazów spełniających określone kryteria, rozważ użycie usługi Cognitive Search. Obecnie w wersji zapoznawczej wyszukiwanie poznawcze bezproblemowo integruje ten przepływ pracy.
  • Logic Apps. Jeśli nie musisz reagować w czasie rzeczywistym na dodane pliki do obiektu blob, możesz rozważyć użycie usługi Logic Apps. Aplikacja logiki, która może sprawdzić, czy plik został dodany, może zostać uruchomiony przez wyzwalacz cyklu lub wyzwalacz okien przesuwnych.

Szczegóły scenariusza

Ten scenariusz jest odpowiedni dla firm, które muszą przetwarzać obrazy.

Potencjalne aplikacje obejmują klasyfikowanie obrazów dla witryny internetowej mody, analizowanie tekstu i obrazów dla roszczeń ubezpieczeniowych lub zrozumienie danych telemetrycznych z zrzutów ekranu gry. Tradycyjnie firmy musiałyby rozwijać wiedzę na temat modeli uczenia maszynowego, trenować modele, a na koniec uruchamiać obrazy za pośrednictwem ich niestandardowego procesu, aby uzyskać dane z obrazów.

Potencjalne przypadki użycia

To rozwiązanie jest idealne dla branży handlu detalicznego, gry, finansów i ubezpieczeń. Inne istotne przypadki użycia to:

  • Klasyfikowanie obrazów na stronie internetowej mody. Klasyfikacja obrazów może być używana przez sprzedawców podczas przekazywania zdjęć produktów na platformie do sprzedaży. Następnie mogą zautomatyzować związane z tym ręczne tagowanie. Klienci mogą również wyszukiwać wizualne wrażenie produktów.

  • Klasyfikowanie danych telemetrycznych ze zrzutów ekranu gier. Klasyfikacja gier wideo ze zrzutów ekranu ewoluuje w istotny problem w mediach społecznościowych, w połączeniu z przetwarzaniem obrazów. Na przykład gdy streamerzy Twitch grają w różne gry z rzędu, mogą pominąć ręczne aktualizowanie informacji o strumieniu. Brak aktualizacji informacji o strumieniu może spowodować błędną klasyfikację strumieni w wyszukiwaniu użytkowników i może prowadzić do utraty potencjalnego podglądu zarówno dla twórców zawartości, jak i platform przesyłania strumieniowego. Wprowadzając nowe gry, trasa modelu niestandardowego może być przydatna do wprowadzenia możliwości wykrywania nowych obrazów z tych gier.

  • Klasyfikowanie obrazów roszczeń ubezpieczeniowych. Klasyfikacja obrazów może pomóc skrócić czas i koszty przetwarzania i zapisywania oświadczeń. Może to pomóc w analizie szkód spowodowanych klęskami żywiołowymi, uszkodzeń pojazdów oraz identyfikacji nieruchomości mieszkalnych i komercyjnych.

Kwestie wymagające rozważenia

Te zagadnienia implementują filary struktury Azure Well-Architected Framework, która jest zestawem wytycznych, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.

Podczas implementowania tego rozwiązania należy wziąć pod uwagę następujące kwestie:

Skalowalność

Większość składników używanych w tym przykładowym scenariuszu to usługi zarządzane, które będą automatycznie skalowane. Kilka godnych uwagi wyjątków: usługa Azure Functions ma limit wynoszący maksymalnie 200 wystąpień. Jeśli musisz skalować poza ten limit, rozważ użycie wielu regionów lub planów aplikacji.

Usługę Azure Cosmos DB można aprowizować do automatycznego skalowania tylko w usłudze Azure Cosmos DB for NoSQL. Jeśli planujesz używać innych interfejsów API, zobacz wskazówki dotyczące szacowania wymagań w jednostkach żądania. Aby w pełni wykorzystać skalowanie w usłudze Azure Cosmos DB, dowiedz się, jak działają klucze partycji w usłudze Azure Cosmos DB.

Bazy danych NoSQL często wymieniają spójność (w sensie twierdzenia CAP) na potrzeby dostępności, skalowalności i partycjonowania. W tym przykładowym scenariuszu używany jest model danych klucz-wartość, a spójność transakcji jest rzadko potrzebna, ponieważ większość operacji jest niepodzielna. Dodatkowe wskazówki dotyczące wybierania odpowiedniego magazynu danych są dostępne w Centrum architektury platformy Azure. Jeśli implementacja wymaga wysokiej spójności, możesz wybrać poziom spójności w usłudze Azure Cosmos DB.

Aby uzyskać ogólne wskazówki dotyczące projektowania skalowalnych rozwiązań, zobacz listę kontrolną wydajności w Centrum architektury platformy Azure.

Zabezpieczenia

Zabezpieczenia zapewniają ochronę przed celowymi atakami i nadużyciami cennych danych i systemów. Aby uzyskać więcej informacji, zobacz Omówienie filaru zabezpieczeń.

Tożsamości zarządzane dla zasobów platformy Azure służą do zapewniania dostępu do innych zasobów wewnętrznych do konta, a następnie przypisywanego do usługi Azure Functions. Zezwalaj tylko na dostęp do wymaganych zasobów w tych tożsamościach, aby upewnić się, że żadne dodatkowe zasoby nie są widoczne dla Twoich funkcji (i potencjalnie dla klientów).

Ogólne wskazówki dotyczące projektowania bezpiecznych rozwiązań można znaleźć w dokumentacji zabezpieczeń platformy Azure.

Odporność

Wszystkie składniki w tym scenariuszu są zarządzane, więc na poziomie regionalnym wszystkie są odporne automatycznie.

Aby uzyskać ogólne wskazówki dotyczące projektowania odpornych rozwiązań, zobacz Projektowanie odpornych aplikacji na platformie Azure.

Optymalizacja kosztów

Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.

Aby poznać koszt działania tego scenariusza, wszystkie usługi są wstępnie skonfigurowane w kalkulatorze kosztów. Aby zobaczyć, jak ceny zmienią się dla konkretnego przypadku użycia, zmień odpowiednie zmienne, aby odpowiadały oczekiwanemu ruchowi.

Udostępniliśmy trzy przykładowe profile kosztów na podstawie ilości ruchu (zakładamy, że wszystkie obrazy mają rozmiar 100 KB):

  • Mały: ten przykład cen jest skorelowany z przetwarzaniem < 5000 obrazów miesięcznie.
  • Średni: ten przykład cenowy jest skorelowany z przetwarzaniem 500 000 obrazów miesięcznie.
  • Duży: ten przykład cenowy jest skorelowany z przetwarzaniem 50 milionów obrazów miesięcznie.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Autorzy zabezpieczeń:

Następne kroki

Dokumentacja produktu

Aby uzyskać ścieżkę szkoleniową z przewodnikiem, zobacz:

Przed wdrożeniem tego przykładowego scenariusza w środowisku produkcyjnym zapoznaj się z zalecanymi rozwiązaniami dotyczącymi optymalizacji wydajności i niezawodności usługi Azure Functions.

Wzbogacanie sztucznej inteligencji przy użyciu obrazów i przetwarzania języka naturalnego w usłudze Azure Cognitive Search