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
- 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
- Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
- włączyć interfejsy Compute Engine API i Vision AI API; Włączanie interfejsów API
Utwórz konto usługi:
- W konsoli Google Cloud otwórz stronę Utwórz konto usługi. Otwórz stronę tworzenia konta usługi.
- Wybierz projekt.
- 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.
- Kliknij Utwórz i kontynuuj.
- 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.
- Kliknij Dalej.
- 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:
- W konsoli Google Cloud kliknij adres e-mail utworzonego konta usługi.
- Kliknij Klucze.
- Kliknij kolejno Dodaj klucz i Utwórz nowy klucz.
- Kliknij Utwórz. Na komputer zostanie pobrany plik klucza JSON.
- Kliknij Zamknij.
- 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.
- W konsoli otwórz stronę Instancje maszyn wirtualnych. Otwórz stronę Instancje maszyn wirtualnych
- Wybierz projekt i kliknij Dalej.
- Kliknij Utwórz instancję.
- Podaj nazwę maszyny wirtualnej. Więcej informacji znajdziesz w artykule Konwencja nazewnictwa zasobów.
- 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.
- Zaakceptuj pozostałe opcje domyślne. Więcej informacji o tych opcjach znajdziesz w artykule na temat tworzenia i uruchamiania maszyny wirtualnej.
- 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ą
- W konsoli otwórz stronę Instancje maszyn wirtualnych. Otwórz stronę Instancje maszyn wirtualnych
- W sekcji Połącz utworzonego wiersza instancji kliknij SSH. Spowoduje to otwarcie połączenia SSH w nowym oknie przeglądarki.
Pobieranie narzędzia wiersza poleceń vaictl
- 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
- Zainstaluj narzędzie wiersza poleceń, uruchamiając następujące polecenie:
sudo apt install ./visionai_0.0-4_amd64.deb
- 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
- Kliknij kartę strumienie w lewym panelu Vertex AI Vision.
- Kliknij Zarejestruj.
- W nazwie strumienia wpisz „traffic-stream”.
- W regionie wpisz „us-central1”
- Rejestracja po kliknięciu
Rejestracja w transmisji zajmie kilka minut.
Kopiowanie przykładowego filmu do maszyny wirtualnej
- 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
- 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
- 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.
Widok 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,
- Otwórz konsolę Google Cloud.
- Otwórz kartę Applications (Aplikacje) w panelu Vertex AI Vision.
- Kliknij przycisk dodawania Utwórz.
- Jako nazwę aplikacji wpisz natężenie ruchu i wybierz swój region.
- 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:
- Węzeł przetwarzania: zasób strumienia, który pozyskuje dane wysłane z utworzonej przez Ciebie maszyny wirtualnej Compute Engine.
- Węzeł przetwarzania: model analizy zajętości, który działa na pozyskanych danych.
- 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.
- Otwórz kartę Applications (Aplikacje) w panelu Vertex AI Vision. Otwórz kartę Aplikacje.
- 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
- Aby dodać węzeł strumienia wejściowego, wybierz opcję Strumienie w sekcji Oprogramowanie sprzęgające menu bocznego.
- W sekcji Źródło menu Strumień, które się otworzy, wybierz Dodaj strumienie.
- W menu Dodaj strumienie wybierz Zarejestruj nowe strumienie i dodaj strumień ruchu jako jego nazwę.
- Aby dodać strumień do wykresu aplikacji, kliknij Dodaj strumienie.
Dodawanie węzła przetwarzania danych
- Aby dodać węzeł modelu liczby obłożenia, wybierz opcję Analiza zajętości w sekcji Modele specjalistyczne w menu bocznym.
- Pozostaw domyślne opcje Osoby i Pojazdy.
- 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.
- Narysuj aktywne strefy, aby policzyć osoby/pojazdy w tej strefie.
- 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).
Dodawanie węzła przechowywania danych
- 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.
- W menu Galeria multimediów Vertex AI Vision kliknij Połącz hurtownię.
- W menu Połącz hurtownię wybierz Utwórz nową hurtownię. Nazwij magazyn ruchu w hurtowni i pozostaw wartość TTL na 14 dni.
- 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.
- Otwórz kartę Applications (Aplikacje) w panelu Vertex AI Vision. Otwórz kartę Aplikacje.
- Wybierz Wyświetl aplikację obok nazwy aplikacji na liście.
- Na stronie kreatora aplikacji w sekcji Oprogramowanie sprzęgające wybierz BigQuery.
- Pole Ścieżka BigQuery pozostaw puste.
- W metadanych sklepu z: wybierz tylko „Analiza obłożenia”. i odznaczyć strumienie.
Końcowy wykres aplikacji powinien wyglądać tak:
7. Wdrażanie aplikacji do użytkowania
Gdy stworzysz kompleksową aplikację ze wszystkimi niezbędnymi komponentami, ostatnim krokiem będzie jej wdrożenie.
- Otwórz kartę Applications (Aplikacje) w panelu Vertex AI Vision. Otwórz kartę Aplikacje.
- Wybierz Wyświetl wykres obok aplikacji zwiększającej natężenie ruchu na liście.
- Na stronie kreatora wykresów aplikacji kliknij przycisk Wdróż.
- 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.
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.
- Otwórz kartę Magazyny w panelu Vertex AI Vision. Otwórz kartę Hurtownie
- Znajdź na liście magazyn hurtowni ruchu i kliknij Wyświetl zasoby.
- W sekcji Liczba osób lub Liczba pojazdów ustaw wartość Min na 1, a Maks. na 5.
- Aby filtrować przetworzone dane wideo przechowywane w hurtowni multimediów Vertex AI Vision, kliknij Szukaj.
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.
W menu po prawej stronie kliknij Przeglądaj dane i wybierz opcję Przeglądaj w Looker Studio
W wymiarze dodaj czas i zmień konfigurację czasu na datę i godzinę. W wymiarze podziału dodaj line_id.
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ę