Mengaktifkan output live stream

Setelah membuat aliran penyerapan data dan menambahkan node pemrosesan ke aplikasi, Anda harus memilih tempat untuk mengirim data yang diproses. Salah satu opsinya adalah menerima output aplikasi live stream secara langsung sehingga Anda dapat mengambil tindakan berdasarkan analisis real-time ini.

Secara umum, Anda mengonfigurasi aplikasi untuk menyimpan output model ke Google Cloud data warehouse seperti Media Warehouse Vertex AI Vision atau BigQuery. Setelah data disimpan di salah satu gudang data ini, data tersebut dapat digunakan untuk tugas analisis offline berdasarkan grafik aplikasi Anda. Namun, Anda juga dapat menerima output model dengan cara live streaming. Anda dapat meminta Vertex AI Vision meneruskan output model ke resource streaming, dan Anda dapat menggunakan alat command line (vaictl) atau Vertex AI Vision API untuk menggunakannya secara real-time.

Dengan asumsi Anda memiliki grafik aplikasi berikut yang memiliki tiga node berikut:

  1. Node sumber data "Input Stream" (input-stream)
  2. Node pemrosesan "Jumlah Hunian" (occupancy-count)
  3. Tujuan output aplikasi "Media Warehouse" (warehouse)

Output aplikasi saat ini dikirim dari stream ke proses penghitungan hunian, lalu ke Media Warehouse Vertex AI Vision tempat output tersebut disimpan.

Konfigurasi aplikasi API:

Konfigurasi aplikasi contoh di Konsol Cloud
{
  "applicationConfigs": {
    "nodes": [
        {
          "displayName": "Input Stream",
          "name": "input-stream",
          "processor": "builtin:stream-input"
        },
        {
          "displayName": "Occupancy Count",
          "name": "occupancy-count",
          "nodeConfig": {
            "occupancyCountConfig": {
              "enablePeopleCounting": true,
              "enableVehicleCounting": true
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            }
          ],
          "processor": "builtin:occupancy-count"
        },
        {
          "displayName": "Media Warehouse",
          "name": "warehouse",
          "nodeConfig": {
            "mediaWarehouseConfig": {
              "corpus": "projects/PROJECT_ID/locations/LOCATION_ID/corpora/CORPUS_ID",
              "ttl": "86400s"
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            },
            {
              "parentNode": "occupancy-count"
            }
          ],
          "processor": "builtin:media-warehouse"
        }
    ]
  }
}

Mengaktifkan output streaming (konsolGoogle Cloud )

Anda dapat mengaktifkan output streaming di Google Cloud konsol saat pertama kali men-deploy model atau saat Anda menghentikan deployment, lalu men-deploy ulang model.

Konsol

  1. Buka tab Aplikasi di dasbor Vertex AI Vision.

    Buka tab Aplikasi

  2. Pilih Lihat grafik di samping nama aplikasi Anda dari daftar.

  3. Dari halaman pembuat grafik aplikasi, klik tombol Deploy.

  4. Di menu opsi Deploy application yang terbuka, pilih Enable output streaming.

    menu deploy aplikasi di konsol

  5. Dari menu dropdown Model yang sesuai, pilih model yang ingin Anda aktifkan output streaming-nya.

  6. Klik Deploy

Mengaktifkan output streaming (API)

Memperbarui node aplikasi

Anda dapat mengupdate konfigurasi aplikasi di command line sehingga node model secara khusus mengirim output ke stream.

Setelah menyelesaikan langkah ini, Anda memiliki opsi untuk memperbarui instance aplikasi guna menentukan resource aliran yang menerima data output node analisis.

REST

Contoh ini menggunakan metode projects.locations.applications.patch. Permintaan ini memperbarui konfigurasi aplikasi API dari aplikasi contoh sebelumnya agar node occupancy-count mengirimkan anotasi output ke aliran Vertex AI Vision. Perilaku ini diaktifkan oleh kolom output_all_output_channels_to_stream.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

Metode HTTP dan URL:

PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID

Isi JSON permintaan:

{
  "applicationConfigs": {
    "nodes": [
        {
          "displayName": "Input Stream",
          "name": "input-stream",
          "processor": "builtin:stream-input"
        },
        {
          "displayName": "Occupancy Count",
          "name": "occupancy-count",
          "nodeConfig": {
            "occupancyCountConfig": {
              "enablePeopleCounting": true,
              "enableVehicleCounting": true
            }
          },
          "parents": [
            {
              "parentNode": "input-stream"
            }
          ],
          "processor": "builtin:occupancy-count",
          "output_all_output_channels_to_stream": true
        }
    ]
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID" | Select-Object -Expand Content
Jika operasi update selesai, operasi akan menampilkan status 200 OK tanpa error, dan layanan akan mengupdate resource aplikasi sesuai dengan itu.

Mengupdate instance aplikasi

Contoh sebelumnya menunjukkan cara memperbarui aplikasi, yang memungkinkan node target mengirim output ke aliran. Setelah mengaktifkan opsi ini, Anda dapat memperbarui instance aplikasi secara opsional untuk menentukan resource streaming yang menerima data output node analisis.

Jika Anda tidak menentukan aliran dengan perintah ini, platform aplikasi akan terus menggunakan aliran default yang dibuat saat node aplikasi di-deploy.

Anda harus membuat resource stream yang mengirim output ke node

sebelum Anda mengirim permintaan berikut.

REST

Contoh ini menggunakan metode projects.locations.applications.updateApplicationInstances. Permintaan ini menggunakan konfigurasi aplikasi API yang diperbarui dari aplikasi contoh sebelumnya. Perintah update sebelumnya menetapkan node occupancy-count agar dapat mengirim anotasi output ke streaming Vertex AI Vision. Perintah ini mengupdate instance aplikasi untuk mengirim data dari node produsen occupancy-count tersebut ke resource stream yang ada.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT: Project ID atau nomor project Anda. Google Cloud
  • LOCATION_ID: Region tempat Anda menggunakan Vertex AI Vision. Misalnya: us-central1, europe-west4. Lihat wilayah yang tersedia.
  • APPLICATION_ID: ID aplikasi target Anda.
  • inputResources: Resource input (atau beberapa resource) untuk instance aplikasi saat ini. Ini adalah array objek yang berisi kolom berikut:
    • consumerNode: Nama node grafik yang menerima resource input.
    • inputResource: Nama lengkap resource input.
  • outputResources.outputResource: Resource stream untuk menampilkan data aplikasi.
  • outputResources.producerNode: Nama node produsen output aplikasi. Dalam contoh ini ini adalah node analisis, occupancy-count.
  • INSTANCE_ID: ID instance aplikasi.

Metode HTTP dan URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances

Isi JSON permintaan:

{
  "applicationInstances": [
    {
      "instance": {
        "inputResources": [
          {
            "consumerNode": "input-stream",
            "inputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/INPUT_STREAM_ID"
          }
        ],
        "outputResources":[
          {
            "outputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/OUTPUT_STREAM_ID",
            "producerNode": "occupancy-count"
          }
        ]
      },
      "instanceId": INSTANCE_ID
    }
  ]
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances" | Select-Object -Expand Content
Jika operasi update selesai, operasi akan menampilkan status 200 OK tanpa error, dan layanan akan mengupdate instance aplikasi sebagaimana mestinya.