Приложение Vertex AI Vision для мониторинга трафика

1. Цели

Обзор

Эта лаборатория будет сосредоточена на создании комплексного приложения Vertex AI Vision для мониторинга видеозаписей дорожного движения в реальном времени . Мы будем использовать предварительно обученные встроенные функции аналитики занятости специализированной модели, чтобы фиксировать следующие вещи:

  • Подсчитайте количество транспортных средств и людей, переходящих дорогу на определенной линии.
  • Подсчитайте количество транспортных средств/человека на любом фиксированном участке дороги.
  • Обнаружение пробок на любом участке дороги.

Что вы узнаете

  • Как настроить виртуальную машину для приема видео для потоковой передачи
  • Как создать приложение в Vertex AI Vision
  • Различные функции, доступные в аналитике занятости, и способы их использования.
  • Как развернуть приложение
  • Как искать видео в вашем хранилище Медиа-хранилище Vertex AI Vision.
  • Как подключить выходные данные к BigQuery, написать SQL-запрос для извлечения информации из выходных данных модели в формате JSON и визуализировать результат в Looker Studio в реальном времени.

2. Прежде чем начать

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud . Примечание . Если вы не планируете сохранять ресурсы, созданные в ходе этой процедуры, создайте проект вместо выбора существующего проекта. После выполнения этих шагов вы можете удалить проект, удалив все ресурсы, связанные с ним. Перейти к выбору проектов
  2. Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
  3. Включите API Compute Engine и Vision AI. Включите API

Создайте учетную запись службы:

  1. В консоли Google Cloud перейдите на страницу «Создать учетную запись службы» . Перейти к созданию учетной записи службы.
  2. Выберите свой проект.
  3. В поле Имя учетной записи службы введите имя. Консоль Google Cloud заполняет поле «Идентификатор учетной записи службы» на основе этого имени. В поле Описание учетной записи службы введите описание. Например, учетная запись службы для быстрого запуска.
  4. Нажмите «Создать» и продолжите .
  5. Чтобы предоставить доступ к вашему проекту, предоставьте своей сервисной учетной записи следующие роли: Vision AI > Редактор Vision AI, Compute Engine > Администратор экземпляра Compute (бета), Хранилище > Средство просмотра объектов хранилища † . В списке Выберите роль выберите роль. Для дополнительных ролей нажмите «Добавить еще одну роль» и добавьте каждую дополнительную роль. Примечание . Поле «Роль» влияет на то, к каким ресурсам ваша сервисная учетная запись может получить доступ в вашем проекте. Вы можете отозвать эти роли или предоставить дополнительные роли позже. В производственных средах не предоставляйте роли владельца, редактора или зрителя. Вместо этого предоставьте предопределенную или настраиваемую роль , соответствующую вашим потребностям.
  6. Нажмите Продолжить .
  7. Нажмите «Готово» , чтобы завершить создание учетной записи службы. Не закрывайте окно браузера. Вы будете использовать его на следующем шаге.

Создайте ключ сервисного аккаунта:

  1. В консоли Google Cloud щелкните адрес электронной почты созданной вами учетной записи службы.
  2. Нажмите «Ключи» .
  3. Нажмите «Добавить ключ» , а затем нажмите « Создать новый ключ» .
  4. Нажмите Создать . Ключевой файл JSON будет загружен на ваш компьютер.
  5. Нажмите Закрыть .
  6. Установите и инициализируйте Google Cloud CLI.

† Роль необходима только в том случае, если вы копируете образец видеофайла из корзины Cloud Storage.

3. Настройте виртуальную машину для потоковой передачи видео.

Прежде чем создавать приложение в Occupancy Analytics, вы должны зарегистрировать поток, который может использоваться приложением позже.

В этом руководстве вы создадите экземпляр виртуальной машины Compute Engine, на котором размещается видео, и отправите эти потоковые видеоданные с виртуальной машины.

Создайте виртуальную машину Linux

Первым шагом при отправке видео из экземпляра виртуальной машины Compute Engine является создание экземпляра виртуальной машины.

  1. В консоли перейдите на страницу экземпляров ВМ . Перейти к экземплярам ВМ
  2. Выберите проект и нажмите «Продолжить» .
  3. Нажмите Создать экземпляр .
  4. Укажите имя для вашей виртуальной машины. Дополнительные сведения см. в разделе Соглашение об именовании ресурсов .
  5. Необязательно: измените зону для этой виртуальной машины. Compute Engine рандомизирует список зон в каждом регионе, чтобы стимулировать использование нескольких зон.
  6. Примите остальные параметры по умолчанию. Дополнительные сведения об этих параметрах см. в разделе Создание и запуск виртуальной машины .
  7. Чтобы создать и запустить виртуальную машину, нажмите «Создать» .

Настройка среды виртуальной машины

После запуска виртуальной машины вы можете использовать консоль для подключения к виртуальной машине по SSH из браузера. Затем вы можете загрузить инструмент командной строки vaictl , чтобы вставлять видео в свой поток.

Установите SSH-соединение с вашей виртуальной машиной.

  1. В консоли перейдите на страницу экземпляров ВМ . Перейти к экземплярам ВМ
  2. В разделе «Подключение» созданной вами строки экземпляра нажмите SSH . Это откроет SSH-соединение в новом окне браузера. Параметр SSH в пользовательском интерфейсе

Загрузите инструмент командной строки vaictl

  1. В окне SSH в браузере загрузите инструмент командной строки Vertex AI Vision (vaictl), используя следующую команду:
wget https://github.com/google/visionai/releases/download/v0.0.4/visionai_0.0-4_amd64.deb
  1. Установите инструмент командной строки, выполнив следующую команду:
sudo apt install ./visionai_0.0-4_amd64.deb
  1. Вы можете проверить установку, выполнив следующую команду:
vaictl --help

4. Загрузите видеофайл для потоковой передачи.

После настройки среды виртуальной машины вы можете скопировать образец видеофайла, а затем использовать vaictl для потоковой передачи видеоданных в приложение анализа занятости.

Начните с активации Vision AI API в облачной консоли.

Зарегистрируйте новый поток

  1. Нажмите вкладку «Потоки» на левой панели Vertex AI Vision.
  2. Нажмите «Зарегистрироваться»
  3. В имени потока введите «traffic-stream».
  4. В регионе введите «us-central1».
  5. Нажмите «Зарегистрироваться»

Регистрация на стрим займет пару минут.

Скопируйте образец видео на свою виртуальную машину.

  1. В окне SSH в браузере вашей виртуальной машины скопируйте пример видео с помощью следующей команды gsutil cp . Замените следующую переменную:
  • ИСТОЧНИК: расположение используемого видеофайла. Вы можете использовать собственный источник видеофайла (например, gs://BUCKET_NAME/FILENAME.mp4) или образец видео (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 )( видео с людьми и транспортом, источник )
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

Потоковое видео с виртуальной машины и вставка данных в свой поток

  1. Чтобы отправить этот локальный видеофайл во входной поток приложения, используйте следующую команду. Вы должны сделать следующие замены переменных:
  • PROJECT_ID: идентификатор вашего проекта Google Cloud.
  • LOCATION_ID: идентификатор вашего местоположения. Например, us-central1. Дополнительную информацию см. в разделе Облачные местоположения .
  • LOCAL_FILE: имя локального видеофайла. Например, street_vehicles_people.mp4.
  • Флаг --loop: необязательно. Зацикливает данные файла для имитации потоковой передачи.
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4
  1. Эта команда передает видеофайл в поток. Если вы используете флаг –loop, видео будет зацикливаться в потоке, пока вы не остановите команду. Мы запустим эту команду как фоновое задание, чтобы она продолжала потоковую передачу даже после отключения виртуальной машины.
  • (добавьте nohup в начале и '&' в конце, чтобы сделать его фоновым заданием)
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 &

Между запуском операции загрузки vaictl и появлением видео на информационной панели может пройти около 100 секунд.

После того как прием потока станет доступен, вы сможете просмотреть видеопоток на вкладке «Потоки » панели управления Vertex AI Vision, выбрав поток потока трафика.

Перейдите на вкладку Потоки

Просмотр потокового видео в пользовательском интерфейсе Просмотр видео в реальном времени, добавляемого в поток в консоли Google Cloud. Видео предоставлено: Элизабет Мейвор на Pixabay ( добавлена ​​пикселизация ).

5. Создайте заявку

Первый шаг — создать приложение, которое обрабатывает ваши данные. Приложение можно рассматривать как автоматизированный конвейер, который соединяет следующее:

  • Прием данных : видеопоток вставляется в поток.
  • Анализ данных : после приема можно добавить модель искусственного интеллекта (компьютерного зрения).
  • Хранение данных : две версии видеопотока (исходный поток и поток, обработанный моделью искусственного интеллекта) могут храниться в хранилище мультимедиа.

В консоли Google Cloud приложение представлено в виде графика.

Создать пустое приложение

Прежде чем вы сможете заполнить граф приложения, вы должны сначала создать пустое приложение.

Создайте приложение в консоли Google Cloud.

  1. Перейдите в консоль Google Cloud.
  2. Откройте вкладку «Приложения» панели управления Vertex AI Vision.

Перейдите на вкладку «Приложения»

  1. Нажмите кнопку «Добавить Создать» .
  2. Введите Traffic-App в качестве названия приложения и выберите свой регион.
  3. Нажмите Создать .

Добавьте узлы компонентов приложения

После создания пустого приложения вы можете добавить три узла в граф приложения:

  1. Узел приема : ресурс потока, который принимает данные, отправленные из созданного вами экземпляра виртуальной машины Compute Engine.
  2. Узел обработки : модель анализа занятости, которая действует на основе полученных данных.
  3. Узел хранения : медиа-хранилище, в котором хранятся обработанные видео и служит хранилищем метаданных. Хранилища метаданных включают аналитическую информацию о загруженных видеоданных и информацию, полученную с помощью моделей искусственного интеллекта.

Добавьте узлы компонентов в свое приложение в консоли.

  1. Откройте вкладку «Приложения» панели управления Vertex AI Vision. Перейдите на вкладку «Приложения»
  2. В строке трафик-приложение выберите Просмотр графика . Это приведет вас к графической визуализации конвейера обработки.

Добавьте узел приема данных

  1. Чтобы добавить узел входного потока, выберите параметр «Потоки» в разделе «Соединители» бокового меню.
  2. В разделе «Источник» открывшегося меню «Поток» выберите «Добавить потоки» .
  3. В меню «Добавить потоки» выберите «Зарегистрировать новые потоки» и добавьте Traffic-stream в качестве имени потока.
  4. Чтобы добавить поток в график приложения, нажмите «Добавить потоки» .

Добавляем узел обработки данных

  1. Чтобы добавить узел модели подсчета занятости, выберите параметр «Аналитика занятости» в разделе «Специализированные модели» бокового меню.
  2. Оставьте настройки по умолчанию «Люди» и «Транспортные средства» .
  3. Добавьте линии при пересечении линий. Используйте инструмент «Многоточечная линия», чтобы нарисовать линии там, где вам нужно обнаруживать выходящие или входящие автомобили или людей.
  4. Нарисуйте активные зоны для подсчета людей/транспортных средств в этой зоне.
  5. Добавьте настройки времени задержки, чтобы обнаружить перегрузку, если нарисована активная зона.
  • (в настоящее время активная зона и пересечение линии не поддерживаются одновременно. Используйте только одну функцию одновременно.)

3acdb6f1e8474e07.pngce63449d601995e9.png

194c54d2bbcf7e8a.png

Добавить узел хранения данных

  1. Чтобы добавить узел назначения (хранилища) вывода, выберите параметр «Медиа-хранилище Vertex AI Vision» в разделе «Соединители» бокового меню.
  2. В меню «Медиа-хранилище» Vertex AI Vision нажмите «Подключить хранилище» .
  3. В меню Подключить склад выберите Создать новый склад . Назовите склад-склад-склад и оставьте продолжительность TTL равной 14 дням.
  4. Нажмите кнопку «Создать» , чтобы добавить склад.

6. Подключите выходные данные к таблице BigQuery.

Когда вы добавляете коннектор BigQuery в приложение Vertex AI Vision, все выходные данные модели подключенного приложения будут загружены в целевую таблицу.

Вы можете либо создать собственную таблицу BigQuery и указать эту таблицу при добавлении соединителя BigQuery в приложение, либо позволить платформе приложения Vertex AI Vision автоматически создать таблицу.

Автоматическое создание таблиц

Если вы разрешите платформе приложений Vertex AI Vision автоматически создавать таблицу, вы можете указать этот параметр при добавлении узла соединителя BigQuery.

Если вы хотите использовать автоматическое создание таблиц, применяются следующие условия набора данных и таблиц:

  • Набор данных: имя автоматически создаваемого набора данных — Visionai_dataset.
  • Таблица. Имя автоматически создаваемой таблицы — Visionai_dataset.APPLICATION_ID.
  • Обработка ошибок:
  • Если таблица с таким же именем в том же наборе данных существует, автоматического создания не происходит.
  1. Откройте вкладку «Приложения» панели управления Vertex AI Vision. Перейдите на вкладку «Приложения»
  2. Выберите «Просмотреть приложение» рядом с названием вашего приложения из списка.
  3. На странице конструктора приложений выберите BigQuery в разделе Соединители .
  4. Оставьте поле пути к BigQuery пустым. ee0b67d4ab2263d.png
  5. В метаданных магазина: выберите только «Аналитика занятости» и снимите флажки с потоков.

Окончательный график приложения должен выглядеть так:

1787242465fd6da7.png

7. Разверните свое приложение для использования

После того как вы создали комплексное приложение со всеми необходимыми компонентами, последним шагом к использованию приложения является его развертывание.

  1. Откройте вкладку «Приложения» панели управления Vertex AI Vision. Перейдите на вкладку «Приложения»
  2. Выберите «Просмотреть график» рядом с приложением дорожного движения в списке.
  3. На странице построителя графов приложений нажмите кнопку «Развернуть» .
  4. В следующем диалоговом окне подтверждения выберите «Развернуть» . Операция развертывания может занять несколько минут. После завершения развертывания рядом с узлами появятся зеленые галочки. ee78bbf00e5db898.png

8. Поиск видеоконтента на складе хранения

После загрузки видеоданных в приложение для обработки вы можете просмотреть проанализированные видеоданные и выполнить поиск данных на основе информации анализа занятости.

  1. Откройте вкладку «Склады» панели управления Vertex AI Vision. Перейдите на вкладку «Склады».
  2. Найдите в списке склад трафик-склада и нажмите « Просмотреть активы» .
  3. В разделе «Количество людей» или «Количество транспортных средств» установите минимальное значение на 1, а максимальное на 5.
  4. Чтобы отфильтровать обработанные видеоданные, хранящиеся в медиа-хранилище Vertex AI Vision, нажмите «Поиск» .

e636361b19738c8d.png

Просмотр сохраненных видеоданных, соответствующих критериям поиска в консоли Google Cloud. Видео предоставлено: Элизабет Мейвор на Pixabay ( применены критерии поиска ).

9. Анализ результатов в таблице BigQuery

Перейти в BigQuery

Выберите набор данных: Visionai_dataset.

Выберите таблицу: ваш APPLICATION_ID (в данном случае трафик-приложение)

Нажмите на три точки справа от названия таблицы и нажмите «Запрос».

Напишите следующий запрос

Запрос 1: запрос на проверку количества транспортных средств, пересекающих каждую строку в минуту.

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

Запрос 2: запрос на проверку количества транспортных средств в минуту в каждой зоне.

—- 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

В приведенных выше запросах вы можете изменить «Транспортное средство» на «Человек», чтобы подсчитать количество человек.

В этой лаборатории кода будут показаны примеры данных и визуализация только для Query1. Вы можете выполнить аналогичный процесс для Query2.

e6fd891f3a46246.png

Нажмите «Исследовать данные» в правом боковом меню и выберите «Исследовать с помощью Looker Studio».

9e737ddb4d0d25b6.png

На панели «Измерение» добавьте время и измените конфигурацию времени на дату и время. В «измерение разбивки» добавьте line_id. b5da9704ccd8db.png

На графике выше показано количество транспортных средств/человек, пересекающих каждую линию в минуту.

Темно-синие и светло-синие полосы обозначают два разных идентификатора линии.

10. Поздравления

Поздравляем, вы закончили лабораторную работу!

Очистить

Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий ресурсы, либо сохраните проект и удалите отдельные ресурсы.

Удалить проект

Удаление отдельных ресурсов

Ресурсы

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

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

Обратная связь

Нажмите здесь, чтобы оставить отзыв

Опрос

Как вы будете использовать этот урок?

Прочтите только до конца Прочитайте его и выполните упражнения.

Насколько полезна была эта кодовая лаборатория?

Очень полезно Умеренно полезный