Analizator wideo — często zadawane pytania

Ten artykuł zawiera odpowiedzi na często zadawane pytania dotyczące usługi Azure Video Analyzer.

Ogólne

Jakie zmienne systemowe można używać w definicji topologii potoku?

Zmienna Opis
System.Runtime.DateTime Reprezentuje chwilę w czasie UTC, zwykle wyrażoną jako data i godzina dnia w następującym formacie:
yyyMmddTHHmmssZ
System.Runtime.PreciseDateTime Reprezentuje wystąpienie daty i godziny uniwersalnej koordynowanej (UTC) w formacie zgodnym z plikiem ISO8601 z milisekundami w następującym formacie:
yyyMmddTHHmmss.fffZ
System.TopologyName Reprezentuje nazwę topologii potoku.
System.PipelineName Reprezentuje nazwę potoku na żywo.

Uwaga

System.Runtime.DateTime i System.Runtime.PreciseDateTime nie mogą być używane jako część nazwy zasobu wideo usługi Azure Video Analyzer w węźle ujścia wideo. Te zmienne mogą być używane w węźle ujścia pliku do nazewnictwa pliku.

Jakie są zasady zachowania poufności informacji dla usługi Video Analyzer?

Usługa Video Analyzer jest objęta oświadczeniem o ochronie prywatności firmy Microsoft. W oświadczeniu o ochronie prywatności wyjaśniono, w jaki sposób firma Microsoft przetwarza dane osobowe oraz w jaki sposób firma Microsoft je przetwarza. Aby dowiedzieć się więcej na temat prywatności, odwiedź Centrum zaufania Firmy Microsoft.

Konfiguracja i wdrażanie

Czy mogę wdrożyć moduł brzegowy na urządzeniu Windows 10?

Tak. Aby uzyskać więcej informacji, zobacz Kontenery systemu Linux w Windows 10.

Używam maszyny wirtualnej jako symulowanego urządzenia brzegowego. Czy mogę zmienić rozmiar konfiguracji maszyny wirtualnej po wdrożeniu?

Tak, możesz skalować maszynę wirtualną w górę lub w dół do innego rozmiaru po wdrożeniu modułów brzegowych, takich jak Video Analyzer. Może być konieczne ponowne uruchomienie środowiska uruchomieniowego IoT Edge na maszynie wirtualnej. W przypadku maszyny wirtualnej z systemem Linux użyj polecenia sudo systemctl restart iotedge. Jeśli potoki na żywo były uruchomione, powinny zostać wznowione po zakończeniu ponownego uruchamiania. Podczas ponownego uruchamiania będą widoczne przerwy w danych wyjściowych potoku (na przykład zdarzenia wnioskowania, nagrywanie wideo).

Jak dodać przykładowe pliki wideo do modułu symulatora aparatu RTSP na moim urządzeniu IoT Edge?

Jeśli do zainstalowania symulatora aparatu użyto przewodnika Szybki start lub samouczka, dodaj nowy plik wideo:

  • Sprawdź, czy plik jest w obsługiwanym formacie i używa koderaka wideo H.264
  • Pobierz plik na /home/localedgeuser/samples/input/<videofile.mkv> urządzenie IoT Edge, jak pokazano w tej sekcji

Przykładowe pliki multimedialne dostępne do testowania można znaleźć w temacie Zestawy danych multimediów.

Przechwytywanie z aparatu IP i ustawień RTSP

Czy muszę użyć specjalnego zestawu SDK na urządzeniu, aby wysyłać strumień wideo?

Nie, Usługa Video Analyzer obsługuje przechwytywanie multimediów przy użyciu protokołu RTSP (protokół przesyłania strumieniowego w czasie rzeczywistym) do przesyłania strumieniowego wideo, który jest obsługiwany przez większość kamer IP.

Czy mogę wypychać multimedia do usługi Video Analyzer przy użyciu protokołów innych niż RTSP?

Nie. Usługa Video Analyzer obsługuje tylko protokół RTSP do przechwytywania wideo z kamer IP. Każda kamera, która obsługuje przesyłanie strumieniowe RTSP za pośrednictwem protokołu TCP/HTTP, powinna działać.

Czy mogę zresetować lub zaktualizować źródłowy adres URL protokołu RTSP w potoku na żywo?

Tak, gdy potok na żywo jest w stanie nieaktywnym .

Czy symulator RTSP jest dostępny do użycia podczas testowania i programowania?

Tak, moduł brzegowy symulatora RTSP jest dostępny do użycia w przewodnikach Szybki start i samouczkach w celu obsługi procesu uczenia. Ten moduł jest dostarczany jako najlepszy wysiłek i może nie zawsze być dostępny. Zalecamy zdecydowanie, aby nie używać symulatora przez więcej niż kilka godzin. Przed zaplanowaniem wdrożenia produkcyjnego należy zainwestować w testowanie przy użyciu rzeczywistego źródła RTSP.

Projektowanie modelu AI

Mam wiele modeli sztucznej inteligencji opakowanych w kontenerze platformy Docker. Jak używać ich z usługą Video Analyzer?

Rozwiązania różnią się w zależności od protokołu komunikacyjnego używanego przez serwer wnioskowania do komunikowania się z usługą Video Analyzer. W poniższych sekcjach opisano, jak działa każdy protokół.

Użyj protokołu HTTP:

  • Pojedynczy kontener (moduł o nazwie avaextension):

    Na serwerze wnioskowania można użyć jednego portu, ale różnych punktów końcowych dla różnych modeli sztucznej inteligencji. Na przykład w przypadku przykładu języka Python można użyć innego routes modelu, jak pokazano poniżej:

    @app.route('/score/face_detection', methods=['POST']) 
    … 
    Your code specific to face detection model
    
    @app.route('/score/vehicle_detection', methods=['POST']) 
    … 
    Your code specific to vehicle detection model 
    … 
    

    Następnie we wdrożeniu usługi Video Analyzer po aktywowaniu potoków na żywo ustaw adres URL serwera wnioskowania dla każdego z nich, jak pokazano poniżej:

    1 potok na żywo: adres URL serwera wnioskowania=http://avaextension:44000/score/face_detection
    Drugi potok na żywo: adres URL serwera wnioskowania=http://avaextension:44000/score/vehicle_detection

    Uwaga

    Możesz też uwidocznić modele sztucznej inteligencji na różnych portach i wywoływać je podczas aktywowania potoków na żywo.

  • Wiele kontenerów:

    Każdy kontener jest wdrażany przy użyciu innej nazwy. W przewodnikach Szybki start i samouczkach pokazano, jak wdrożyć rozszerzenie o nazwie avaextension. Teraz możesz opracowywać dwa różne kontenery, z których każdy ma ten sam interfejs HTTP, co oznacza, że mają one ten sam /score punkt końcowy. Wdróż te dwa kontenery o różnych nazwach i upewnij się, że oba nasłuchują na różnych portach.

    Na przykład jeden kontener o nazwie avaextension1 nasłuchuje portu 44000, a drugi kontener o nazwie avaextension2 nasłuchuje portu 44001.

    W topologii analizatora wideo tworzy się wystąpienie dwóch potoków na żywo z różnymi adresami URL wnioskowania, jak pokazano poniżej:

    1 potok na żywo: adres URL serwera wnioskowania = http://avaextension1:44000/score
    Drugi potok na żywo: adres URL serwera wnioskowania = http://avaextension2:44001/score

Użyj protokołu gRPC:

  • Węzeł rozszerzenia gRPC ma właściwość extensionConfiguration, opcjonalny ciąg, który może być używany jako część kontraktu gRPC. Jeśli masz wiele modeli sztucznej inteligencji spakowanych na jednym serwerze wnioskowania, nie musisz uwidaczniać węzła dla każdego modelu sztucznej inteligencji. Zamiast tego w przypadku potoku na żywo możesz zdefiniować sposób wybierania różnych modeli sztucznej extensionConfiguration inteligencji przy użyciu właściwości . Podczas wykonywania analizator wideo przekazuje ten ciąg do serwera wnioskowania, który może użyć go do wywołania żądanego modelu sztucznej inteligencji.

Kompiluję serwer gRPC wokół modelu sztucznej inteligencji i chcę być w stanie obsługiwać jego użycie przez wiele kamer lub potoków na żywo. Jak skompilować serwer?

Najpierw upewnij się, że serwer może obsługiwać więcej niż jedno żądanie jednocześnie lub pracować w wątkach równoległych.

Na przykład domyślna liczba kanałów równoległych została ustawiona w poniższym przykładzie gRPC usługi Azure Video Analyzer:

server = grpc.server(futures.ThreadPoolExecutor(max_workers=3)) 

W poprzednim wystąpieniach serwera gRPC serwer może otwierać tylko trzy kanały w czasie na kamerę lub potok na żywo. Nie próbuj połączyć więcej niż trzech wystąpień z serwerem. Jeśli spróbujesz otworzyć więcej niż trzy kanały, żądania pozostaną oczekujące, dopóki istniejący kanał nie spadnie.

Poprzednia implementacja serwera gRPC jest używana w naszych przykładach języka Python. Jako deweloper możesz zaimplementować własny serwer lub użyć poprzedniej domyślnej implementacji, aby zwiększyć liczbę procesów roboczych, która jest ustawiona na liczbę kamer do użycia na potrzeby kanałów wideo.

Aby skonfigurować i użyć wielu kamer, można utworzyć wystąpienie wielu potoków na żywo, z których każdy wskazuje ten sam lub inny serwer wnioskowania (na przykład serwer wymieniony w poprzednim akapicie).

Chcę mieć możliwość otrzymania wielu ramek przed podjęciem decyzji wnioskowania. Jak mogę to włączyć?

Nasze bieżące domyślne przykłady działają w trybie bezstanowym . Nie zachowują stanu poprzednich wywołań ani identyfikatora obiektu wywołującego. Oznacza to, że wiele potoków na żywo może wywoływać ten sam serwer wnioskowania, ale serwer nie może odróżnić tego, kto wywołuje lub stan na obiekt wywołujący.

Użyj protokołu HTTP:

Aby zachować stan, każdy obiekt wywołujący lub potok na żywo wywołuje serwer wnioskowania przy użyciu parametru zapytania HTTP, który jest unikatowy dla obiektu wywołującego. Na przykład adresy URL serwera wnioskowania dla każdego potoku na żywo są wyświetlane tutaj:

Pierwszy potok na żywo: http://avaextension:44000/score?id=1
Drugi potok na żywo: http://avaextension:44000/score?id=2

Po stronie serwera program id pomaga zidentyfikować obiekt wywołujący. Jeśli id=1, serwer może zachować stan oddzielnie dla tego potoku na żywo. Następnie może zachować odebrane ramki wideo w buforze. Na przykład użyj tablicy lub słownika z kluczem DateTime, a wartość jest ramką. Następnie można zdefiniować serwer do przetwarzania (wnioskowania) po odebraniu x ramek.

Użyj protokołu gRPC:

W przypadku rozszerzenia gRPC każda sesja jest przeznaczony dla pojedynczego źródła danych kamery, więc nie ma potrzeby podawania identyfikatora. Za pomocą właściwości extensionConfiguration można przechowywać ramki wideo w buforze i definiować serwer do przetwarzania (wnioskowania) po odebraniu x ramek.

Czy wszystkie strumienie ProcessMediaStreams w określonym kontenerze działają w tym samym modelu AI?

Nie. Uruchamianie lub zatrzymywanie wywołań od użytkownika końcowego w potoku na żywo stanowi sesję, a może istnieje odłączenie lub ponowne nawiązanie połączenia z kamerą. Celem jest utrwała jedną sesję, jeśli kamera przesyła strumieniowo wideo.

  • Dwie kamery wysyłające wideo do przetwarzania (do dwóch oddzielnych potoków na żywo) tworzą dwie sesje.
  • Jeden aparat przechodzący do potoku na żywo, który ma dwa węzły rozszerzenia gRPC tworzy dwie sesje.

Każda sesja jest pełnym dwukierunkowym połączeniem między usługą Video Analyzer i serwerem gRPC, a każda sesja może mieć inny model.

Uwaga

W przypadku odłączenia lub ponownego połączenia kamery, gdy aparat przejdzie do trybu offline przez okres poza limitami tolerancji, analizator wideo otworzy nową sesję z serwerem gRPC. Serwer nie musi śledzić stanu między tymi sesjami.

Usługa Video Analyzer dodaje również obsługę wielu rozszerzeń gRPC dla pojedynczego aparatu w potoku na żywo. Tych rozszerzeń gRPC można używać do sekwencyjnego, równoległego przetwarzania sztucznej inteligencji lub jako kombinacji obu tych rozszerzeń.

Uwaga

Równoległe uruchomienie wielu rozszerzeń wpłynie na zasoby sprzętowe. Pamiętaj o tym, gdy wybierasz sprzęt odpowiadający potrzebom obliczeniowym.

Jaka jest maksymalna liczba równoczesnych strumieni ProcessMediaStream?

Usługa Video Analyzer nie stosuje żadnych ograniczeń do tej liczby.

Jak mogę zdecydować, czy serwer wnioskowania powinien używać procesora CPU, procesora GPU lub innego akceleratora sprzętowego?

Decyzja zależy od złożoności opracowanego modelu sztucznej inteligencji i sposobu używania akceleratorów procesora CPU i sprzętu. Podczas opracowywania modelu sztucznej inteligencji możesz określić, jakich zasobów powinien używać model i jakie akcje należy wykonać.

Jak mogę wyświetlić pola ograniczenia wygenerowane przez serwer wnioskowania?

Wyniki wnioskowania można rejestrować wraz z nośnikiem w zasobie wideo. Możesz użyć widżetu , aby odtworzyć wideo z nakładką danych wnioskowania.

Zgodność z usługą gRPC

Jak sprawdzić, jakie są obowiązkowe pola deskryptora strumienia multimediów?

Każde pole, do którego nie podasz wartości, ma wartość domyślną, zgodnie z wartością gRPC.

Usługa Video Analyzer używa wersji proto3 języka buforu protokołu. Wszystkie dane buforu protokołu używane przez kontrakty usługi Video Analyzer są dostępne w plikach buforu protokołu.

Jak mogę upewnić się, że używam najnowszych plików buforu protokołu?

Najnowsze pliki buforu protokołu można uzyskać w lokacji plików kontraktu. Za każdym razem, gdy aktualizujemy pliki kontraktu, będą one znajdować się w tej lokalizacji. Nie ma natychmiastowego planu aktualizacji plików protokołu, więc poszukaj nazwy pakietu w górnej części plików, aby znać wersję. Powinien zostać odczytany:

microsoft.azure.media.live_video_analytics.extensibility.grpc.v1

Wszystkie aktualizacje tych plików będą zwiększać wartość "v-value" na końcu nazwy.

Uwaga

Ponieważ usługa Video Analyzer używa wersji języka proto3, pola są opcjonalne, a wersja jest zgodna z poprzednim i do przodu.

Jakie funkcje usługi gRPC są dostępne dla mnie do użycia z usługą Video Analyzer? Które funkcje są obowiązkowe i które są opcjonalne?

Można użyć dowolnych funkcji gRPC po stronie serwera, pod warunkiem, że kontrakt buforów protokołu (Protobuf) jest spełniony.

Monitorowanie i metryki

Czy mogę monitorować potok na urządzeniach brzegowych przy użyciu Azure Event Grid?

Tak. Możesz korzystać z metryk rozwiązania Prometheus i publikować je w usłudze Event Grid.

Czy mogę użyć usługi Azure Monitor do wyświetlania kondycji, metryk i wydajności potoków w chmurze lub na brzegu sieci?

Tak, obsługujemy to podejście. Aby dowiedzieć się więcej, zobacz Omówienie metryk usługi Azure Monitor.

Czy istnieją narzędzia ułatwiające monitorowanie modułu brzegowego usługi Video Analyzer?

Visual Studio Code obsługuje rozszerzenie Azure IoT Tools, za pomocą którego można łatwo monitorować punkty końcowe modułu krawędzi usługi Video Analyzer. To narzędzie umożliwia szybkie rozpoczęcie monitorowania wbudowanego punktu końcowego centrum IoT dla "zdarzeń" i wyświetlanie komunikatów wnioskowania kierowanych z urządzenia brzegowego do chmury.

Ponadto za pomocą tego rozszerzenia można edytować bliźniaczą reprezentację modułu dla modułu krawędzi usługi Video Analyzer w celu zmodyfikowania ustawień potoku.

Aby uzyskać więcej informacji, zobacz artykuł dotyczący monitorowania i rejestrowania .

Rozliczenia i dostępność

Jak są rozliczane usługi Video Analyzer?

Aby uzyskać szczegółowe informacje o rozliczeniach, zobacz Cennik usługi Video Analyzer.