1. Cele
Omówienie
W tym samouczku skupimy się na kompleksowym tworzeniu aplikacji Vertex AI Vision do monitorowania nagrań wideo z ruchem drogowym w czasie rzeczywistym. Aby rejestrować te informacje, będziemy korzystać z wbudowanych funkcji wstępnie wytrenowanego modelu specjalistycznego Analiza zajętości:
- Zliczanie pojazdów i osób przechodzących przez drogę w określonym miejscu.
- Zliczanie liczby pojazdów lub osób w dowolnym stałym regionie drogi.
- wykrywanie korków w dowolnej części drogi;
Czego się nauczysz
- Jak skonfigurować maszynę wirtualną do przesyłania strumieniowego filmów
- Tworzenie aplikacji w Vertex AI Vision
- Różne funkcje dostępne w Occupancy Analytics i sposób ich używania
- 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, aby wyodrębnić statystyki z danych wyjściowych modelu w formacie JSON, i zwizualizować wynik w Looker Studio w czasie rzeczywistym.
2. Zanim zaczniesz
- W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt w chmurze Google Cloud. Uwaga: jeśli zasoby utworzone podczas wykonywania tej procedury nie będą Ci później potrzebne, nie wybieraj istniejącego projektu, tylko utwórz nowy. Po jej zakończeniu możesz usunąć projekt wraz ze wszystkimi zasobami, które są z nim powiązane. 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łącz interfejsy Compute Engine 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ę Utwórz konto usługi
- Wybierz projekt.
- W polu Nazwa konta usługi wpisz nazwę. Konsola Google Cloud wypełni pole Identyfikator konta usługi na podstawie tej nazwy. W polu Opis konta usługi wpisz opis. Na przykład Konto usługi na potrzeby 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), Storage > Wyświetlający obiekty 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 w projekcie konto usługi może mieć dostęp. Możesz później cofnąć te role lub przyznać dodatkowe. W środowiskach produkcyjnych nie przyznawaj ról Właściciel, Edytujący ani Wyświetlający. Zamiast tego przyznaj gotową rolę lub rolę niestandardową, która spełnia Twoje potrzeby.
- Kliknij Dalej.
- Aby zakończyć tworzenie konta usługi, kliknij Gotowe. Nie zamykaj okna przeglądarki. Będzie Ci potrzebna 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 Dodaj klucz, a potem Utwórz nowy klucz.
- Kliknij Utwórz. Plik klucza JSON zostanie pobrany na komputer.
- Kliknij Zamknij.
- Zainstaluj i zainicjuj interfejs wiersza poleceń Google Cloud.
† Rola jest potrzebna tylko wtedy, gdy kopiujesz przykładowy film z zasobnika Cloud Storage.
3. Konfigurowanie maszyny wirtualnej do strumieniowania wideo
Zanim utworzysz aplikację w Statystykach dotyczących zajętości, musisz zarejestrować strumień, który będzie później używany przez aplikację.
Z tego samouczka dowiesz się, jak utworzyć instancję maszyny wirtualnej Compute Engine, która będzie hostować film, i jak przesyłać strumieniową transmisję wideo z tej maszyny wirtualnej.
Tworzenie maszyny wirtualnej z systemem Linux
Pierwszym krokiem w wysyłaniu wideo z instancji maszyny wirtualnej Compute Engine jest utworzenie tej instancji.
- W konsoli otwórz stronę Instancje maszyn wirtualnych. Otwórz stronę Instancje maszyn wirtualnych
- Wybierz projekt i kliknij Dalej.
- Kliknij Utwórz instancję.
- W polu Nazwa podaj nazwę maszyny wirtualnej. Więcej informacji znajdziesz w artykule Zalecane metody nazywania zasobów.
- Opcjonalnie: zmień strefę tej maszyny wirtualnej. Compute Engine losowo porządkuje listę stref w każdym regionie, aby zachęcić do korzystania z wielu stref.
- Zaakceptuj pozostałe opcje domyślne. Więcej informacji o tych opcjach znajdziesz w artykule Tworzenie i uruchamianie maszyny wirtualnej.
- Aby utworzyć i uruchomić maszynę wirtualną, kliknij Utwórz.
Konfigurowanie środowiska maszyny wirtualnej
Po uruchomieniu maszyny wirtualnej możesz użyć konsoli, aby połączyć się z nią przez SSH z przeglądarki. Następnie możesz pobrać narzędzie wiersza poleceń vaictl, aby przesyłać filmy do strumienia.
Nawiązywanie połączenia SSH z maszyną wirtualną
- W konsoli otwórz stronę Instancje maszyn wirtualnych. Otwórz stronę Instancje maszyn wirtualnych
- W sekcji Połącz w wierszu utworzonej instancji kliknij SSH. Spowoduje to otwarcie połączenia SSH w nowym oknie przeglądarki.

Pobierz narzędzie wiersza poleceń vaictl
- W oknie SSH w przeglądarce pobierz narzędzie wiersza poleceń Vertex AI Vision (vaictl) za pomocą 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 to polecenie:
sudo apt install ./visionai_0.0-4_amd64.deb
- Możesz przetestować instalację, uruchamiając to polecenie:
vaictl --help
4. Wprowadzanie pliku wideo do strumieniowania
Po skonfigurowaniu środowiska maszyny wirtualnej możesz skopiować przykładowy plik wideo, a następnie użyć narzędzia vaictl do przesyłania strumieniowego danych wideo do aplikacji do analizy obłożenia.
Zacznij od aktywowania interfejsu Vision AI API w konsoli Cloud.
Rejestrowanie nowego strumienia
- W panelu po lewej stronie Vertex AI Vision kliknij kartę strumieni kliknięć.
- Kliknij Zarejestruj się
- W polu Nazwa strumienia wpisz „traffic-stream”.
- W polu region wpisz „us-central1”.
- Kliknij Zarejestruj.
Rejestracja transmisji zajmie kilka minut.
Kopiowanie przykładowego filmu na maszynę wirtualną
- W oknie SSH w przeglądarce na maszynie wirtualnej skopiuj przykładowy film za pomocą tego polecenia gsutil cp: Zastąp tę zmienną:
- ŹRÓDŁO: lokalizacja pliku wideo do użycia. Możesz użyć własnego 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 ludźmi i pojazdami, źródło).
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 gsutil cp $SOURCE .
Strumieniowanie wideo z maszyny wirtualnej i przesyłanie danych do strumienia
- Aby wysłać ten lokalny plik wideo do strumienia wejściowego aplikacji, użyj tego polecenia. Musisz zastąpić te zmienne:
- PROJECT_ID: identyfikator Twojego projektu Google Cloud.
- LOCATION_ID: identyfikator lokalizacji. Na przykład us-central1. Więcej informacji znajdziesz w artykule Lokalizacje Google Cloud.
- LOCAL_FILE: nazwa lokalnego pliku wideo. Na przykład street_vehicles_people.mp4.
- –loop: opcjonalna flaga. Powtarza dane pliku, aby symulować przesyłanie strumieniowe.
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żyjesz flagi –loop, film będzie odtwarzany w pętli w strumieniu, dopóki nie zatrzymasz polecenia. Uruchomimy to polecenie jako zadanie w tle, aby strumieniowanie było kontynuowane nawet po odłączeniu maszyny wirtualnej.
- ( dodaj „nohup” na początku i „&” na końcu, aby przekształcić go w 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 operacji vaictl ingest do pojawienia się filmu na panelu może minąć około 100 sekund.
Gdy przesyłanie strumieniowe będzie dostępne, możesz wyświetlić strumień wideo na karcie Strumienie w panelu Vertex AI Vision, wybierając strumień ruchu.
Podgląd na żywo wideo przesyłanego do strumienia w konsoli Google Cloud. Film: Elizabeth Mavor w serwisie Pixabay (dodano pikselizację).
5. Tworzenie aplikacji
Pierwszym krokiem jest utworzenie aplikacji, która będzie przetwarzać Twoje dane. Aplikację można traktować jako zautomatyzowany potok, który łączy:
- Pozyskiwanie danych: kanał wideo jest pozyskiwany do strumienia.
- Analiza danych: po przesłaniu danych można dodać model AI(Computer Vision).
- Przechowywanie danych: 2 wersje strumienia wideo (oryginalny strumień i strumień przetworzony przez model AI) mogą być przechowywane w hurtowni danych multimedialnych.
W konsoli Google Cloud aplikacja jest przedstawiana w postaci wykresu.
Tworzenie pustej aplikacji
Zanim wypełnisz wykres aplikacji, musisz najpierw utworzyć pustą aplikację.
Utwórz aplikację w konsoli Google Cloud.
- Otwórz konsolę Google Cloud.
- Otwórz kartę Aplikacje w panelu Vertex AI Vision.
- Kliknij przycisk Utwórz.
- Wpisz traffic-app jako nazwę aplikacji i wybierz region.
- Kliknij Utwórz.
Dodawanie węzłów komponentów aplikacji
Po utworzeniu pustej aplikacji możesz dodać do wykresu aplikacji 3 węzły:
- Węzeł pozyskiwania: zasób strumienia, który pozyskuje dane wysyłane z utworzonej przez Ciebie instancji maszyny wirtualnej Compute Engine.
- Węzeł przetwarzania: model analityki zajętości, który przetwarza dane.
- Węzeł pamięci: hurtownia danych multimedialnych, w której przechowywane są przetworzone filmy i metadane. Bazy danych metadanych zawierają informacje analityczne o przetworzonych danych wideo oraz informacje wywnioskowane przez modele AI.
Dodaj węzły komponentów do aplikacji w konsoli.
- Otwórz kartę Aplikacje w panelu Vertex AI Vision. Otwórz kartę Aplikacje
- W wierszu dotyczącym aplikacji do nawigacji wybierz Wyświetl wykres. Spowoduje to przejście do wizualizacji graficznej potoku przetwarzania.
Dodawanie węzła pozyskiwania danych
- Aby dodać węzeł strumienia wejściowego, w sekcji Oprogramowanie sprzęgające w menu bocznym wybierz opcję Strumienie.
- W sekcji Źródło w wyświetlonym menu Strumień kliknij Dodaj strumienie.
- W menu Dodaj strumienie wybierz Zarejestruj nowe strumienie i dodaj strumień ruchu jako nazwę strumienia.
- Aby dodać strumień do wykresu aplikacji, kliknij Dodaj strumienie.
Dodawanie węzła przetwarzania danych
- Aby dodać węzeł modelu zliczania osób, w sekcji Modele specjalistyczne w menu bocznym wybierz opcję analiza liczby osób.
- Pozostaw domyślne ustawienia Osoby i Pojazdy.
- Dodaj linie w sekcji Przekroczenie linii. Użyj narzędzia linia wielopunktowa, aby narysować linie w miejscach, w których chcesz wykrywać samochody lub osoby wjeżdżające i wyjeżdżające.
- Narysuj aktywne strefy, aby zliczać osoby lub pojazdy w danej strefie.
- Dodaj ustawienia czasu przebywania, aby wykrywać zatory, jeśli narysowana jest aktywna strefa.
- (obecnie nie można jednocześnie korzystać z aktywnej strefy i przekraczania linii. Używaj tylko jednej funkcji naraz).


Dodawanie węzła pamięci danych
- Aby dodać węzeł docelowy (lokalizację w pamięci masowej) dla danych wyjściowych, w sekcji Oprogramowanie sprzęgające w menu bocznym wybierz opcję Hurtownia multimediów Vertex AI Vision.
- W menu Hurtownia danych multimedialnych Vertex AI Vision kliknij Połącz hurtownię.
- W menu Połącz hurtownię wybierz Utwórz nową hurtownię. Nadaj hurtowni nazwę traffic-warehouse i pozostaw czas TTL ustawiony na 14 dni.
- Kliknij przycisk Utwórz, aby dodać hurtownię.
6. Łączenie danych wyjściowych z tabelą BigQuery
Gdy dodasz do aplikacji Vertex AI Vision łącznik BigQuery, wszystkie dane wyjściowe połączonego modelu aplikacji zostaną wczytane do tabeli docelowej.
Możesz utworzyć własną tabelę BigQuery i określić ją podczas dodawania do aplikacji konektora BigQuery lub pozwolić platformie aplikacji Vertex AI Vision na automatyczne utworzenie tabeli.
Automatyczne tworzenie tabel
Jeśli pozwolisz platformie aplikacji Vertex AI Vision automatycznie utworzyć tabelę, możesz określić tę opcję podczas dodawania węzła oprogramowania sprzęgającego BigQuery.
Jeśli chcesz korzystać z automatycznego tworzenia tabel, musisz spełnić te warunki dotyczące zbioru danych i tabeli:
- Zbiór danych: automatycznie utworzona nazwa zbioru danych to visionai_dataset.
- Tabela: automatycznie utworzona nazwa tabeli to visionai_dataset.APPLICATION_ID.
- Obsługa błędów:
- Jeśli w tym samym zbiorze danych istnieje tabela o tej samej nazwie, nie zostanie ona utworzona automatycznie.
- Otwórz kartę Aplikacje w panelu Vertex AI Vision. Otwórz kartę Aplikacje
- Na liście obok nazwy aplikacji kliknij Wyświetl aplikację.
- Na stronie kreatora aplikacji w sekcji Oprogramowanie sprzęgające wybierz BigQuery.
- Pole Ścieżka BigQuery pozostaw puste.

- W sekcji Przechowuj metadane z: wybierz tylko „Analiza zajętości” i odznacz strumienie.
Ostateczny wykres aplikacji powinien wyglądać tak:

7. Wdrażanie aplikacji do użytkowania
Po utworzeniu aplikacji kompleksowej ze wszystkimi niezbędnymi komponentami ostatnim krokiem jest jej wdrożenie.
- Otwórz kartę Aplikacje w panelu Vertex AI Vision. Otwórz kartę Aplikacje
- Na liście obok aplikacji do nawigacji wybierz Wyświetl wykres.
- Na stronie narzędzia do tworzenia wykresów aplikacji kliknij przycisk Wdróż.
- W wyświetlonym oknie potwierdzenia kliknij Wdróż. Wdrożenie może potrwać kilka minut. Po zakończeniu wdrażania obok węzłów pojawią się zielone ikony potwierdzenia.

8. Wyszukiwanie treści wideo w hurtowni danych
Po wprowadzeniu danych wideo do aplikacji do przetwarzania możesz wyświetlać przeanalizowane dane wideo i wyszukiwać dane na podstawie informacji analitycznych dotyczących zajętości.
- Otwórz kartę Magazyny w panelu Vertex AI Vision. Otwórz kartę Magazyny
- Na liście znajdź magazyn ruchu i kliknij Wyświetl komponenty.
- W sekcji Liczba osób lub Liczba pojazdów ustaw wartość Min. na 1, a wartość Maks. na 5.
- Aby przefiltrować przetworzone dane wideo przechowywane w Media Warehouse w Vertex AI Vision, kliknij Szukaj.

Widok przechowywanych danych wideo, które spełniają kryteria wyszukiwania w konsoli Google Cloud. Film: Elizabeth Mavor w Pixabay (zastosowane kryteria wyszukiwania).
9. Analizowanie danych wyjściowych w tabeli BigQuery
Otwórz BigQuery
Wybierz zbiór danych: visionai_dataset
Wybierz tabelę: Twój APPLICATION_ID (w tym przypadku traffic-app).
Kliknij 3 kropki po prawej stronie nazwy tabeli i wybierz Zapytanie.
Wpisz to zapytanie
Zapytanie 1. Zapytanie sprawdzające liczbę pojazdów przekraczających każdą linię 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
Zapytanie 2. Zapytanie sprawdzające liczbę pojazdów na minutę w poszczególnych strefach
—- 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 powyższych zapytaniach możesz zmienić „Vehicle” na „Person”, aby zliczać osoby.
W tym samouczku pokazane zostaną tylko przykładowe dane i wizualizacja dla zapytania 1. Podobny proces możesz zastosować w przypadku zapytania Query2.

W bocznym menu po prawej stronie kliknij Przeglądaj dane i wybierz Przeglądaj w Looker Studio.

W panelu „Wymiar” dodaj czas i zmień konfigurację czasu na datę i godzinę. W sekcji „Wymiar podziału” dodaj line_id. 
Powyższy wykres przedstawia liczbę pojazdów lub osób przekraczających każdą linię na minutę.
Słupki w kolorach ciemnoniebieskim i jasnoniebieskim oznaczają 2 różne identyfikatory linii.
10. Gratulacje
Gratulacje! Moduł został 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ę