Aplikacja do monitorowania ruchu Vertex AI Vision

1. Cele

Omówienie

Dzięki temu ćwiczeniu w Codelabs dowiesz się, jak kompleksowo utworzyć aplikację Vertex AI Vision, aby monitorować materiały wideo przedstawiające ruch w czasie rzeczywistym. Użyjemy już wytrenowanego specjalistycznego modelu Analiza zajętości wbudowane funkcje, które pozwalają rejestrować:

  • Zliczanie pojazdów i osób przechodzących przez drogę na określonej linii.
  • Licz liczbę pojazdów/osób w dowolnym stałym odcinku drogi.
  • Wykrywanie korków w dowolnej części drogi.

Czego się nauczysz

  • Jak skonfigurować maszynę wirtualną do pozyskiwania filmów na potrzeby strumieniowania
  • Jak utworzyć aplikację w Vertex AI Vision
  • Różne funkcje dostępne w Statystykach zajętości i sposoby korzystania z nich
  • Jak wdrożyć aplikację
  • Jak wyszukiwać filmy w hurtowni multimediów Vertex AI Vision.
  • Jak połączyć dane wyjściowe z BigQuery, napisać zapytanie SQL w celu wyodrębnienia statystyk z danych wyjściowych modelu JSON i wizualizacji wyników w Looker Studio w czasie rzeczywistym.

2. Zanim zaczniesz

  1. W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud. Uwaga: jeśli nie planujesz zachować zasobów utworzonych w ramach tej procedury, zamiast wybierać istniejący projekt, utwórz projekt. Po wykonaniu tych czynności możesz usunąć projekt wraz ze wszystkimi powiązanymi z nim zasobami. Otwórz selektor projektów
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
  3. włączyć interfejsy Compute Engine API i Vision AI API; Włączanie interfejsów API

Utwórz konto usługi:

  1. W konsoli Google Cloud otwórz stronę Utwórz konto usługi. Otwórz stronę tworzenia konta usługi.
  2. Wybierz projekt.
  3. W polu Nazwa konta usługi wpisz nazwę. Konsola Google Cloud wypełnia pole Identyfikator konta usługi na podstawie tej nazwy. W polu Opis konta usługi wpisz opis. Przykład: Konto usługi do krótkiego wprowadzenia.
  4. Kliknij Utwórz i kontynuuj.
  5. Aby zapewnić dostęp do projektu, przypisz do konta usługi te role: Vision AI > Edytujący Vision AI, Compute Engine > Administrator instancji Compute (beta), Miejsce na dane > Wyświetlający obiekty Cloud Storage† . Na liście Wybierz rolę wybierz rolę. Aby dodać kolejne role, kliknij Dodaj kolejną rolę i dodaj każdą z nich. Uwaga: pole Rola określa, do których zasobów konto usługi ma dostęp w projekcie. Później możesz je anulować lub przypisać dodatkowe role. W środowiskach produkcyjnych nie przyznawaj ról właściciela, edytującego ani wyświetlającego. Zamiast tego przypisz wstępnie zdefiniowaną rolę lub rolę niestandardową, która odpowiada Twoim potrzebom.
  6. Kliknij Dalej.
  7. Aby zakończyć tworzenie konta usługi, kliknij Gotowe. Nie zamykaj okna przeglądarki. Użyjesz go w następnym kroku.

Utwórz klucz konta usługi:

  1. W konsoli Google Cloud kliknij adres e-mail utworzonego konta usługi.
  2. Kliknij Klucze.
  3. Kliknij kolejno Dodaj klucz i Utwórz nowy klucz.
  4. Kliknij Utwórz. Na komputer zostanie pobrany plik klucza JSON.
  5. Kliknij Zamknij.
  6. Zainstaluj i zainicjuj Google Cloud CLI.

† Rola jest potrzebna tylko w przypadku kopiowania przykładowego pliku wideo z zasobnika Cloud Storage.

3. Konfigurowanie maszyny wirtualnej do strumieniowego przesyłania wideo

Zanim utworzysz aplikację w ramach analizy zajętości, musisz zarejestrować strumień, którego aplikacja może później używać.

W tym samouczku utworzysz instancję maszyny wirtualnej Compute Engine hostującą film i wyślesz dane strumieniowania wideo z maszyny wirtualnej.

Tworzenie maszyny wirtualnej z systemem Linux

Pierwszym krokiem przy wysyłaniu wideo z maszyny wirtualnej Compute Engine jest utworzenie maszyny wirtualnej.

  1. W konsoli otwórz stronę Instancje maszyn wirtualnych. Otwórz stronę Instancje maszyn wirtualnych
  2. Wybierz projekt i kliknij Dalej.
  3. Kliknij Utwórz instancję.
  4. Podaj nazwę maszyny wirtualnej. Więcej informacji znajdziesz w artykule Konwencja nazewnictwa zasobów.
  5. Opcjonalnie: zmień strefę dla tej maszyny wirtualnej. Compute Engine losowo wybiera listę stref w każdym regionie, aby zachęcić użytkowników do korzystania z nich w wielu strefach.
  6. Zaakceptuj pozostałe opcje domyślne. Więcej informacji o tych opcjach znajdziesz w artykule na temat tworzenia i uruchamiania maszyny wirtualnej.
  7. Aby utworzyć i uruchomić maszynę wirtualną, kliknij Utwórz.

Konfigurowanie środowiska maszyn wirtualnych

Po uruchomieniu maszyny wirtualnej możesz za pomocą konsoli połączyć się z nią przez SSH w przeglądarce. Następnie możesz pobrać narzędzie wiersza poleceń vaictl, aby przetworzyć wideo do strumienia.

Nawiąż połączenie SSH z maszyną wirtualną

  1. W konsoli otwórz stronę Instancje maszyn wirtualnych. Otwórz stronę Instancje maszyn wirtualnych
  2. W sekcji Połącz utworzonego wiersza instancji kliknij SSH. Spowoduje to otwarcie połączenia SSH w nowym oknie przeglądarki. Opcja SSH w interfejsie użytkownika

Pobieranie narzędzia wiersza poleceń vaictl

  1. W oknie SSH-in-browser (SSH-in-browser) pobierz narzędzie wiersza poleceń Vertex AI Vision (vaictl), korzystając z tego polecenia:
wget https://github.com/google/visionai/releases/download/v0.0.4/visionai_0.0-4_amd64.deb
  1. Zainstaluj narzędzie wiersza poleceń, uruchamiając następujące polecenie:
sudo apt install ./visionai_0.0-4_amd64.deb
  1. Aby przetestować instalację, uruchom to polecenie:
vaictl --help

4. Pozyskaj plik wideo na potrzeby przesyłania strumieniowego

Po skonfigurowaniu środowiska maszyny wirtualnej możesz skopiować przykładowy plik wideo, a następnie za pomocą vaictl przesłać dane wideo do aplikacji do analizy zajętości.

Zacznij od aktywowania interfejsu Vision AI API w konsoli Cloud

Rejestrowanie nowej transmisji

  1. Kliknij kartę strumienie w lewym panelu Vertex AI Vision.
  2. Kliknij Zarejestruj.
  3. W nazwie strumienia wpisz „traffic-stream”.
  4. W regionie wpisz „us-central1”
  5. Rejestracja po kliknięciu

Rejestracja w transmisji zajmie kilka minut.

Kopiowanie przykładowego filmu do maszyny wirtualnej

  1. W oknie SSH-in-browser (SSH-in-browser) swojej maszyny wirtualnej skopiuj przykładowy film z tym poleceniem gsutil cp. Zastąp tę zmienną:
  • SOURCE: lokalizacja pliku wideo, którego chcesz użyć. Możesz użyć własnego źródła pliku wideo (np. gs://BUCKET_NAME/FILENAME.mp4) lub przykładowego filmu (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 )(film z osobami i pojazdami, źródło)
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

Przesyłanie strumieniowe filmów z maszyny wirtualnej i pozyskiwanie danych do strumienia

  1. Aby wysłać ten lokalny plik wideo do strumienia danych wejściowych aplikacji, użyj tego polecenia. Musisz zastąpić te zmienne:
  • PROJECT_ID: identyfikator Twojego projektu Google Cloud.
  • LOCATION_ID: identyfikator Twojej lokalizacji. Na przykład us-central1. Więcej informacji znajdziesz w artykule Lokalizacje Cloud.
  • LOCAL_FILE: nazwa lokalnego pliku wideo. Na przykład: pojazdy_ulice.mp4.
  • – loop flag: opcjonalna. Wykonuje pętlę danych pliku w celu symulowania przesyłania strumieniowego.
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4
  1. To polecenie przesyła strumieniowo plik wideo do strumienia. Jeśli używasz flagi –loop, odtwarzanie filmu w pętli będzie odbywało się w pętli do momentu zatrzymania polecenia. Uruchomimy to polecenie jako zadanie w tle, aby nadal przesyłać strumieniowo dane nawet po odłączeniu maszyny wirtualnej.
  • ( dodaj słowo „nohup” na początku i „&” na końcu, aby było to zadanie w tle)
nohup vaictl -p $PROJECT_ID \
    -l $LOCATION_ID \
    -c application-cluster-0 \
    --service-endpoint visionai.googleapis.com \
send video-file to streams 'traffic-stream' --file-path $LOCAL_FILE --loop &

Od rozpoczęcia procesu przetwarzania vaictl do wyświetlenia filmu w panelu może upłynąć około 100 sekund.

Gdy przetwarzanie strumienia będzie dostępne, zobaczysz go na karcie Strumienie w panelu Vertex AI Vision, wybierając strumień strumienia ruchu.

Otwórz kartę Strumienie

Widok transmisji wideo na żywo w interfejsieWidok na żywo przetwarzania filmu w strumieniu w konsoli Google Cloud. Autor filmu: Elizabeth Mavor na kanale Pixabay (dodana pikselizacja).

5. Tworzenie aplikacji

Pierwszym krokiem jest utworzenie aplikacji, która będzie przetwarzać Twoje dane. Aplikację można traktować jako automatyczny potok łączący:

  • Przetwarzanie danych: kanał wideo jest przetwarzany w strumieniu.
  • Analiza danych: model AI(Computer Vision) można dodać po przetworzeniu danych.
  • Przechowywanie danych: 2 wersje kanału wideo (pierwotny i strumień przetwarzany przez model AI) mogą być przechowywane w hurtowni multimediów.

W konsoli Google Cloud aplikacja ma postać wykresu.

Tworzenie pustej aplikacji

Zanim wypełnisz wykres aplikacji, musisz utworzyć pustą aplikację.

utworzyć aplikację w konsoli Google Cloud,

  1. Otwórz konsolę Google Cloud.
  2. Otwórz kartę Applications (Aplikacje) w panelu Vertex AI Vision.

Otwórz kartę Aplikacje.

  1. Kliknij przycisk dodawania Utwórz.
  2. Jako nazwę aplikacji wpisz natężenie ruchu i wybierz swój region.
  3. Kliknij Utwórz.

Dodawanie węzłów komponentów aplikacji

Po utworzeniu pustej aplikacji możesz dodać te 3 węzły do wykresu aplikacji:

  1. Węzeł przetwarzania: zasób strumienia, który pozyskuje dane wysłane z utworzonej przez Ciebie maszyny wirtualnej Compute Engine.
  2. Węzeł przetwarzania: model analizy zajętości, który działa na pozyskanych danych.
  3. Węzeł pamięci masowej: hurtownia multimediów, w której przechowywane są przetworzone filmy, która służy jako magazyn metadanych. Magazyny metadanych obejmują informacje analityczne o przetworzonych danych wideo oraz informacje wywnioskowane przez modele AI.

Dodaj węzły komponentów do swojej aplikacji w konsoli.

  1. Otwórz kartę Applications (Aplikacje) w panelu Vertex AI Vision. Otwórz kartę Aplikacje.
  2. W wierszu z informacjami o natężeniu ruchu w aplikacji kliknij Wyświetl wykres. Wyświetli się wizualizacja wykresu potoku przetwarzania.

Dodawanie węzła pozyskiwania danych

  1. Aby dodać węzeł strumienia wejściowego, wybierz opcję Strumienie w sekcji Oprogramowanie sprzęgające menu bocznego.
  2. W sekcji Źródło menu Strumień, które się otworzy, wybierz Dodaj strumienie.
  3. W menu Dodaj strumienie wybierz Zarejestruj nowe strumienie i dodaj strumień ruchu jako jego nazwę.
  4. Aby dodać strumień do wykresu aplikacji, kliknij Dodaj strumienie.

Dodawanie węzła przetwarzania danych

  1. Aby dodać węzeł modelu liczby obłożenia, wybierz opcję Analiza zajętości w sekcji Modele specjalistyczne w menu bocznym.
  2. Pozostaw domyślne opcje Osoby i Pojazdy.
  3. Dodaj linie w Przecinaniu linii. Za pomocą narzędzia Linia wielopunktowa narysuj linie, w których mają być wykrywane samochody oraz osoby wjeżdżające do środka lub wjeżdżające do środka.
  4. Narysuj aktywne strefy, aby policzyć osoby/pojazdy w tej strefie.
  5. Dodaj ustawienia czasu przebywania, aby wykrywać zator po narysowaniu aktywnej strefy.
  • (obecnie aktywna strefa i przecięcie linii nie są obsługiwane jednocześnie. korzystać tylko z jednej funkcji naraz).

3acdb6f1e8474e07.png ce63449d601995e9.png

194c54d2bbcf7e8a.png

Dodawanie węzła przechowywania danych

  1. Aby dodać węzeł miejsca docelowego danych wyjściowych (pamięć masowa), wybierz opcję Vertex AI Vision's Media Warehouse (Galeria multimediów Vertex AI Vision) w sekcji Connectors (Łączniki) w bocznym menu.
  2. W menu Galeria multimediów Vertex AI Vision kliknij Połącz hurtownię.
  3. W menu Połącz hurtownię wybierz Utwórz nową hurtownię. Nazwij magazyn ruchu w hurtowni i pozostaw wartość TTL na 14 dni.
  4. Kliknij przycisk Utwórz, aby dodać hurtownię.

6. Połącz dane wyjściowe z tabelą BigQuery

Gdy dodasz oprogramowanie sprzęgające BigQuery do aplikacji Vertex AI Vision, wszystkie dane wyjściowe połączonego modelu aplikacji będą przetwarzane do tabeli docelowej.

Możesz utworzyć własną tabelę BigQuery i określić ją podczas dodawania oprogramowania sprzęgającego BigQuery do aplikacji lub pozwolić, aby platforma aplikacji Vertex AI Vision została utworzona automatycznie.

Automatyczne tworzenie tabeli

Jeśli zezwalasz platformie aplikacji Vertex AI Vision na automatyczne utworzenie tabeli, możesz określić tę opcję podczas dodawania węzła oprogramowania sprzęgającego BigQuery.

Jeśli chcesz korzystać z automatycznego tworzenia tabel, obowiązują te warunki zbioru danych i tabeli:

  • Zbiór danych: nazwa zbioru danych tworzonego automatycznie to visionai_dataset.
  • Tabela: nazwa automatycznie tworzonej tabeli to visionai_dataset.APPLICATION_ID.
  • Obsługa błędów:
  • Jeśli w ramach tego samego zbioru danych istnieje tabela o tej samej nazwie, nie następuje automatyczne tworzenie.
  1. Otwórz kartę Applications (Aplikacje) w panelu Vertex AI Vision. Otwórz kartę Aplikacje.
  2. Wybierz Wyświetl aplikację obok nazwy aplikacji na liście.
  3. Na stronie kreatora aplikacji w sekcji Oprogramowanie sprzęgające wybierz BigQuery.
  4. Pole Ścieżka BigQuery pozostaw puste. ee0b67d4ab2263d.png
  5. W metadanych sklepu z: wybierz tylko „Analiza obłożenia”. i odznaczyć strumienie.

Końcowy wykres aplikacji powinien wyglądać tak:

1787242465fd6da7.png

7. Wdrażanie aplikacji do użytkowania

Gdy stworzysz kompleksową aplikację ze wszystkimi niezbędnymi komponentami, ostatnim krokiem będzie jej wdrożenie.

  1. Otwórz kartę Applications (Aplikacje) w panelu Vertex AI Vision. Otwórz kartę Aplikacje.
  2. Wybierz Wyświetl wykres obok aplikacji zwiększającej natężenie ruchu na liście.
  3. Na stronie kreatora wykresów aplikacji kliknij przycisk Wdróż.
  4. W oknie potwierdzenia kliknij Wdróż. Wdrażanie może potrwać kilka minut. Po zakończeniu wdrażania obok węzłów pojawią się zielone znaczniki wyboru. ee78bbf00e5db898.png

8. Wyszukaj treści wideo w hurtowni miejsca na dane

Po pozyskaniu danych wideo do aplikacji do przetwarzania danych możesz wyświetlać przeanalizowane dane wideo i przeszukiwać je na podstawie informacji o obłożeniu.

  1. Otwórz kartę Magazyny w panelu Vertex AI Vision. Otwórz kartę Hurtownie
  2. Znajdź na liście magazyn hurtowni ruchu i kliknij Wyświetl zasoby.
  3. W sekcji Liczba osób lub Liczba pojazdów ustaw wartość Min na 1, a Maks. na 5.
  4. Aby filtrować przetworzone dane wideo przechowywane w hurtowni multimediów Vertex AI Vision, kliknij Szukaj.

e636361b19738c8d.png

Widok przechowywanych danych wideo zgodnych z kryteriami wyszukiwania w konsoli Google Cloud. Autor filmu: Elizabeth Mavor na kanale Pixabay (wybrane kryteria wyszukiwania).

9. Przeanalizuj dane wyjściowe w tabeli BigQuery

Otwórz BigQuery

Wybierz zbiór danych: visionai_dataset

Wybierz tabelę: APPLICATION_ID (w tym przypadku traffic-app).

Po prawej stronie nazwy tabeli kliknij 3 kropki, a następnie Zapytanie

Wpisz następujące zapytanie

Zapytanie 1: Zapytanie, które pozwala sprawdzić liczbę pojazdów przekraczającą każdy wiersz na minutę

abc.sql

- Get list of active marked lines for each timeframe
WITH line_array AS (
  SELECT
  t.ingestion_time AS ingestion_time,
  JSON_QUERY_ARRAY(t.annotation.stats["crossingLineCounts"]) AS lines
  FROM
  `PROJ_ID.visionai_dataset.APP_ID` AS t
),
- Flatten active lines to get individual entities details
flattened AS (
  SELECT
  line_array.ingestion_time,
  JSON_VALUE(line.annotation.id) as line_id,
  JSON_QUERY_ARRAY(line["positiveDirectionCounts"]) AS entities
  FROM line_array, unnest(line_array.lines) as line
 )
- Generate aggregate vehicle count per zone w.r.t time 
SELECT
  STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, line_id,
  SUM(INT64(entity["count"])) as vehicle_count
FROM
  flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, line_id

Query2: Zapytanie, które pozwala sprawdzić liczbę pojazdów na minutę w każdej strefie

- Get list of active zones for each timeframe
WITH zone_array AS (
     SELECT
     t.ingestion_time AS ingestion_time,
     JSON_QUERY_ARRAY(t.annotation.stats["activeZoneCounts"]) AS zones
     FROM
     `PROJ_ID.visionai_dataset.APP_ID` AS t
),
- Flatten active zones to get individual entities details
flattened AS (
   SELECT zone_array.ingestion_time, JSON_VALUE(zone.annotation.id) as zone_id,
         JSON_QUERY_ARRAY(zone["counts"]) AS entities
   FROM zone_array, unnest(zone_array.zones) as zone
 )
- Generate aggregate vehicle count per zone w.r.t time 
SELECT 
STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, 
zone_id,
SUM(INT64(entity["count"])) as vehicle_count
FROM flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, zone_id

W tych zapytaniach możesz zmienić ustawienie „Pojazd” na „Person” aby policzyć osobę.

To ćwiczenie w Codelabs pokazuje przykładowe dane i wizualizację tylko dla Query1. Podobny proces możesz wykonać w przypadku Query2.

e6fd891f3a46246.png

W menu po prawej stronie kliknij Przeglądaj dane i wybierz opcję Przeglądaj w Looker Studio

9e737ddb4d0d25b6.png

W wymiarze dodaj czas i zmień konfigurację czasu na datę i godzinę. W wymiarze podziału dodaj line_id. b5da9704ccd8db.png

Powyższy wykres pokazuje liczbę pojazdów/osób przejeżdżających przez każdą linię na minutę.

Głębokie niebieskie i jasnoniebieskie paski wskazują 2 różne identyfikatory linii.

10. Gratulacje

Gratulacje! Moduł ukończony.

Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym samouczku, możesz usunąć projekt zawierający te zasoby lub zachować projekt i usunąć poszczególne zasoby.

Usuwanie projektu

Usuwanie poszczególnych zasobów

Materiały

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/occupancy-count-tutorial

Prześlij opinię

Kliknij tutaj, aby przesłać opinię

Ankieta

Jak wykorzystasz ten samouczek?

Tylko do przeczytania Przeczytaj go i wykonaj ćwiczenia

Jak oceniasz przydatność tego ćwiczenia z programowania?

Bardzo przydatne Średnio przydatne
.