Membuat aplikasi analisis tingkat keterisian dengan perkiraan BigQuery

Vertex AI Vision adalah platform berteknologi AI yang dapat Anda gunakan untuk menyerap, menganalisis, dan menyimpan data video . Dengan Vertex AI Vision, Anda dapat membangun dan men-deploy aplikasi AI. Anda dapat membangun solusi Vertex AI Vision end-to-end dengan memanfaatkan integrasi Vertex AI Vision dengan komponen produk lainnya.

Untuk mulai menerapkan solusi menggunakan platform Vertex AI Vision, tinjau konsep dan komponen Vertex AI Vision berikut:

  • Streaming: Merepresentasikan lapisan streaming video dari solusi Anda. Sumber streaming dapat berupa video live (misalnya, kamera IP) atau file video (misalnya, file MP4).

  • Aplikasi: Aktifkan koneksi antara aliran dan prosesor AI untuk melakukan operasi machine learning pada video. Misalnya, Anda dapat menghubungkan aliran kamera ke model AI yang menghitung orang yang lewat di depannya.

  • Tujuan output aplikasi: Kirim data yang dianalisis ke tujuan penyimpanan (Media Warehouse Vertex AI Vision atau BigQuery) atau terima data live. Menyimpan ke Media Warehouse Vertex AI Vision memungkinkan Anda menelusuri output analisis dan metadata dari pemroses AI yang digunakan pada data dari streaming yang di-ingest. Menyimpan ke BigQuery memungkinkan Anda menggunakan kemampuan analisis offline produk. Jika menerima output aplikasi secara langsung, Anda dapat menggunakan insight untuk langsung menginformasikan keputusan bisnis. Untuk mengetahui informasi selengkapnya, lihat Ringkasan: Menghubungkan output aplikasi ke tujuan data.

Menyiapkan BigQuery untuk menerima data

Agar dapat menerima data dan membuat prediksi dari data aplikasi analisis, Anda harus membuat set data dan tabel BigQuery yang cocok dengan informasi yang diproses.

Membuat set data

Sebelum dapat membuat tabel BigQuery, Anda harus membuat set data terlebih dahulu untuk menerima informasi yang dianalisis dari aplikasi Anda.

Konsol

  1. Buka halaman BigQuery di konsol Google Cloud .

    Buka halaman BigQuery

  2. Di panel Explorer, pilih project tempat Anda ingin membuat set data.

  3. Luaskan opsi Actions, lalu klik Create dataset.

  4. Di halaman Create dataset:

    • Untuk Dataset ID, masukkan occupancy_dataset.
    • Untuk Data location, pilih lokasi geografis untuk set data. Setelah set data dibuat, lokasi tidak dapat diubah.

    • Untuk Default table expiration, pilih salah satu opsi berikut:

      • Tidak Pernah: (Default) Tabel yang dibuat dalam set data tidak akan pernah dihapus secara otomatis. Anda harus menghapusnya secara manual.
      • Jumlah hari setelah pembuatan tabel: Nilai ini menentukan kapan tabel yang baru dibuat dalam set data akan dihapus. Nilai ini diterapkan jika Anda tidak menetapkan akhir masa berlaku tabel saat tabel dibuat.

    • Klik Create dataset.

Membuat tabel BigQuery

Konsol

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda, lalu pilih set data occupancy_dataset.
  3. Di bagian Dataset info, klik Create table.
  4. Di panel Create table, tentukan detail berikut:
    1. Di bagian Source, pilih Empty table dalam daftar Create table from.
    2. Di bagian Tujuan, tentukan detail berikut:
      1. Pastikan occupancy_dataset ditentukan di kolom Set data.
      2. Di kolom Tabel, masukkan occupancy_dataset_table.
      3. Pastikan kolom Table type disetel ke Native table.
    3. Di bagian Schema, masukkan definisi skema. Anda dapat memasukkan informasi skema secara manual dengan melakukan hal berikut:
      • Klik Edit as text dan tempelkan skema array JSON berikut. Saat menggunakan array JSON, Anda menghasilkan skema menggunakan proses yang sama seperti membuat file skema JSON.
        [
            {
              "name": "ingestion_time",
              "type": "TIMESTAMP",
              "mode": "REQUIRED"
            },
            {
              "name": "application",
              "type": "STRING",
              "mode": "REQUIRED"
            },
            {
              "name": "instance",
              "type": "STRING",
              "mode": "REQUIRED"
            },
            {
              "name": "node",
              "type": "STRING",
              "mode": "REQUIRED"
            },
            {
              "name": "annotation",
              "type": "STRING"
            }
        ]
    4. Klik Create table.

Membuat aplikasi penghitungan tingkat keterisian

Setelah menyiapkan set data dan tabel BigQuery, Anda dapat membuat aplikasi yang memproses data yang dikirim ke resource BigQuery ini.

Buat aplikasi kosong

Sebelum dapat mengisi grafik aplikasi, Anda harus membuat aplikasi kosong terlebih dahulu.

Konsol

Buat aplikasi di Google Cloud konsol.

  1. Buka tab Aplikasi di dasbor Vertex AI Vision.

    Buka tab Aplikasi

  2. Klik tombol Create.

  3. Masukkan occupancy-bq-app sebagai nama aplikasi dan pilih wilayah Anda.

  4. Klik Buat.

Menambahkan node komponen aplikasi

Setelah membuat aplikasi kosong, Anda dapat menambahkan tiga node ke grafik aplikasi:

  1. Node penyerapan: Resource streaming yang menyerap data yang dikirim dari instance VM Compute Engine yang Anda buat.
  2. Node pemrosesan: Model analisis hunian yang bertindak berdasarkan data yang dimasukkan.
  3. Node BigQuery: Node konektor yang memungkinkan aplikasi Anda menyimpan metadata ke tabel BigQuery.

Konsol

Tambahkan node komponen ke aplikasi Anda di konsol.

  1. Buka tab Aplikasi di dasbor Vertex AI Vision.

    Buka tab Aplikasi

  2. Di baris occupancy-bq-app, pilih Lihat grafik. Tindakan ini akan membawa Anda ke visualisasi grafik pipeline pemrosesan.

Menambahkan node penyerapan data

  1. Untuk menambahkan node aliran input, pilih opsi Streams di bagian Connectors pada menu samping.

  2. Di bagian Source pada menu Stream yang terbuka, pilih Tambahkan aliran.

  3. Di menu Add streams, pilih Register new streams, lalu tambahkan occupancy-bq-stream sebagai nama stream.

  4. Untuk menambahkan aliran ke grafik aplikasi, klik Tambahkan aliran.

Menambahkan node pemrosesan data

  1. Untuk menambahkan node model jumlah hunian, pilih opsi analisis hunian di bagian Model khusus pada menu samping.

  2. Biarkan pilihan default Orang dan Kendaraan.

Menambahkan node BigQuery

  1. Untuk menambahkan node tujuan output (penyimpanan), pilih opsi BigQuery di bagian Connectors pada menu samping.

  2. Di menu BigQuery, telusuri occupancy_dataset_table, lalu pilih tabel Anda.

  3. Di bagian Simpan metadata dari:, pilih Aliran dan Analisis hunian.

Men-deploy aplikasi Anda untuk digunakan

Setelah Anda membuat aplikasi end-to-end dengan semua komponen yang diperlukan, langkah terakhir untuk menggunakan aplikasi adalah men-deploy-nya.

Konsol

  1. Buka tab Aplikasi di dasbor Vertex AI Vision.

    Buka tab Aplikasi

  2. Pilih Lihat grafik di samping aplikasi occupancy-bq-app dalam daftar.

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

  4. Pada dialog konfirmasi berikutnya, pilih Deploy.

    Operasi deployment mungkin memerlukan waktu beberapa menit hingga selesai. Setelah deployment selesai, tanda centang hijau akan muncul di samping node.

Menyiapkan komputer jarak jauh untuk melakukan streaming video

Setelah aplikasi penghitung hunian yang di-deploy siap menerima, memproses, dan menyimpan data streaming ke tabel BigQuery, Anda harus benar-benar melakukan streaming data video ke aplikasi.

Dalam tutorial ini, Anda akan membuat instance VM Compute Engine yang menghosting video, dan mengirim data video streaming tersebut dari VM.

Membuat VM Linux

Langkah pertama dalam mengirim video dari instance VM Compute Engine adalah membuat instance VM.

Konsol

  1. Di konsol, buka halaman VM instances.

    Buka instance VM

  2. Pilih project Anda, lalu klik Continue.

  3. Klik Create instance.

  4. Tentukan Name untuk VM Anda. Untuk informasi selengkapnya, lihat Konvensi penamaan resource.

  5. Opsional: Ubah Zone untuk VM ini. Compute Engine mengacak daftar zone di dalam setiap region untuk mendorong penggunaan di beberapa zone.

  6. Terima opsi default yang tersisa. Untuk mengetahui informasi selengkapnya tentang opsi ini, lihat Membuat dan memulai VM.

  7. Untuk membuat dan memulai VM, klik Create.

Menyiapkan lingkungan VM

Setelah VM dimulai, Anda dapat menggunakan konsol untuk membuat koneksi SSH di browser. Setelah membuat koneksi ini, Anda dapat mendownload alat command line vaictl untuk menyerap video ke dalam aplikasi Anda.

Konsol

Buat koneksi SSH ke VM Anda

  1. Di konsol, buka halaman VM instances.

    Buka instance VM

  2. Di bagian Connect pada baris instance yang Anda buat, klik SSH. Tindakan ini akan membuka koneksi SSH di jendela browser baru.

    Opsi SSH di UI

Download alat command line vaictl

  1. Di jendela SSH-in-browser, download alat command line Vertex AI Vision (vaictl) menggunakan perintah berikut:

    wget https://github.com/google/visionai/releases/download/v0.0.5/visionai_0.0-5_amd64.deb
    
  2. Instal alat command line dengan menjalankan perintah berikut:

    sudo apt install ./visionai_0.0-5_amd64.deb
    
  3. Anda dapat menguji penginstalan dengan menjalankan perintah berikut:

    vaictl --help
    

Menyerap file video ke dalam aplikasi Anda

Setelah menyiapkan lingkungan VM, Anda dapat menyalin file video contoh, lalu menggunakan vaictl untuk melakukan streaming data video ke aplikasi penghitung hunian Anda.

Setelah mengirim perintah ini, Anda harus membiarkan beberapa jam data di-streaming sebelum melanjutkan ke langkah berikutnya.

SSH di browser

Menyalin video contoh ke VM Anda

  1. Di jendela SSH-in-browser untuk VM Anda, salin contoh video dengan perintah gcloud storage cp berikut. Ganti variabel berikut:
    • SOURCE: Lokasi file video yang akan digunakan. Anda dapat menggunakan sumber file video Anda sendiri (misalnya, gs://BUCKET_NAME/FILENAME.mp4), atau menggunakan salah satu video contoh:
      • gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 (video dengan orang dan kendaraan, sumber video)
      • gs://cloud-samples-data/vertex-ai-vision/highway_vehicles.mp4 (video dengan kendaraan saja, sumber video)
    gcloud storage cp SOURCE .

Streaming video dari VM dan menyerap data ke dalam aplikasi Anda

  1. Untuk mengirim file video lokal ini ke aliran input aplikasi, gunakan perintah berikut. Anda harus melakukan penggantian variabel berikut:
    • PROJECT_ID: ID project Google Cloud Anda.
    • LOCATION_ID: ID lokasi Anda. Misalnya, us-central1. Informasi selengkapnya.
    • LOCAL_FILE.EXT: Nama file video lokal. Contoh, my-video.mp4.
    • Flag --loop: Opsional. Mengulang data file untuk menyimulasikan streaming.

    Perintah ini akan melakukan streaming file video ke stream. Jika menggunakan flag --loop, video akan diulang ke dalam stream hingga Anda menghentikan perintah:

    vaictl -p PROJECT_ID \
        -l LOCATION_ID \
        -c application-cluster-0 \
        --service-endpoint visionai.googleapis.com \
    send video-file to streams 'occupancy-bq-stream' --file-path LOCAL_FILE.EXT --loop

Mungkin diperlukan waktu sekitar 100 detik antara memulai operasi penyerapan vaictl dan video muncul di dasbor.

Setelah penyerapan streaming tersedia, Anda dapat melihat feed video di tab Streams di dasbor Vertex AI Vision dengan memilih streaming occupancy-bq-stream.

Buka tab Streams

Membangun model perkiraan dengan BigQuery ML

Sekarang Anda memiliki aplikasi yang berfungsi dan menyimpan metadata ke BigQuery. Setelah memiliki data yang di-streaming ke aplikasi selama beberapa jam, Anda dapat mulai membuat model perkiraan dengan BigQuery ML.

Opsional: Menjalankan kueri tingkat keterisian

Anda dapat melihat data yang dihasilkan aplikasi yang disimpan ke tabel dengan menjalankan kueri sederhana.

Konsol

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Pilih Luaskan di samping occupancy_dataset, lalu pilih occupancy_dataset_table.

  3. Di tampilan detail tabel, klik Tulis kueri baru.

    Tulis kueri baru

  4. Masukkan kueri Google Standard SQL berikut di area teks Query editor:

    SELECT
     *
    FROM (
     SELECT
       TIMESTAMP_TRUNC(PARSE_TIMESTAMP('"%Y-%m-%dT%H:%M:%E*SZ"', JSON_QUERY(annotation,
             "$.currentTime")), MINUTE) currentTime,
       CAST(JSON_QUERY(annotation,
           '$.stats.fullFrameCount[0].count') AS INT64) AS count,
       JSON_QUERY(annotation,
         '$.stats.fullFrameCount[0].entity.labelString') AS type
     FROM
       `PROJECT_ID.occupancy_dataset.occupancy_dataset_table` )
    WHERE
     count IS NOT NULL
  5. Opsional: Untuk mengubah lokasi pemrosesan data, klik Lainnya, lalu Setelan kueri. Di bagian Lokasi pemrosesan, klik Pilih otomatis dan pilih lokasi data Anda. Terakhir, klik Simpan untuk memperbarui setelan kueri.

  6. Klik Run.

Tindakan ini akan membuat tugas kueri yang menulis output ke tabel sementara.

Menjalankan kueri ini akan menghasilkan tabel dengan informasi waktu dan jumlah saat orang-orang hadir dalam video.

currentTime jumlah jenis
2022-08-10 16.17.00 UTC 2 "Orang"
2022-08-10 16.17.00 UTC 2 "Orang"
2022-08-10 16.17.00 UTC 4 "Orang"
2022-08-10 16.17.00 UTC 1 "Orang"
2022-08-10 16.17.00 UTC 5 "Orang"
2022-08-10 16.17.00 UTC 2 "Orang"

Membuat tampilan untuk pelatihan

Setelah melihat data yang disimpan ke tabel, Anda dapat membuat tampilan, lalu memeriksa isi tabel yang dihasilkan. Anda menggunakan data penayangan ini untuk melatih model perkiraan.

Anda dapat membuat tampilan dengan menulis kueri SQL yang digunakan untuk menentukan data yang dapat diakses oleh tampilan. Kueri SQL harus terdiri dari pernyataan SELECT. Untuk mengetahui informasi selengkapnya tentang tampilan BigQuery, lihat Pengantar tampilan.

Untuk membuat tampilan tabel pelatihan:

Konsol

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Pilih Luaskan di samping occupancy_dataset, lalu pilih occupancy_dataset_table.

  3. Di tampilan detail tabel, klik Tulis kueri baru.

    Tulis kueri baru

  4. Masukkan kueri Google Standard SQL berikut di area teks Query editor:

    CREATE VIEW `PROJECT_ID.occupancy_dataset.forecast_training_data` AS (
      WITH
        raw_counts AS (
        SELECT
          *
        FROM (
          SELECT
            TIMESTAMP_TRUNC(
              PARSE_TIMESTAMP('"%Y-%m-%dT%H:%M:%E*SZ"',
                              JSON_QUERY(annotation,
                                          "$.currentTime")),
                            MINUTE) AS currentTime,
            CAST(JSON_QUERY(annotation,
                '$.stats.fullFrameCount[0].count') AS INT64) AS count,
            JSON_QUERY(annotation,
              '$.stats.fullFrameCount[0].entity.labelString') AS type
          FROM
            `PROJECT_ID.occupancy_dataset.occupancy_dataset_table` )
        WHERE
          count IS NOT NULL )
      SELECT
        currentTime,
        SUM(count) AS total_count,
        type
      FROM
        raw_counts
      GROUP BY
        currentTime, type)
  5. Klik Run.

Opsional: Buat kueri tampilan

Jalankan kueri berikut untuk melihat hasil data pelatihan tampilan baru:

Konsol

  1. Di tampilan detail tabel occupancy_dataset_table, klik Tulis kueri baru.

  2. Masukkan kueri Google Standard SQL berikut di area teks Query editor:

    SELECT
     *
    FROM
      `PROJECT_ID.occupancy_dataset.forecast_training_data`
    ORDER BY
     currentTime, type
    LIMIT
     100
  3. Klik Run.

Tindakan ini akan menampilkan hasil yang diurutkan berdasarkan waktu yang terlihat seperti berikut:

currentTime total_count jenis
2022-08-10 16.17.00 UTC 129 "Orang"
2022-08-10 16.18.00 UTC 150 "Orang"
2022-08-10 16.19.00 UTC 80 "Orang"
2022-08-10 16.20.00 UTC 129 "Orang"
2022-08-10 16.21.00 UTC 142 "Orang"
2022-08-10 16:22:00 UTC 71 "Orang"
2022-08-10 16:22:00 UTC 2 "Kendaraan"

Latih model perkiraan dengan BigQuery ML

Setelah memiliki data dalam tampilan untuk berfungsi sebagai data pelatihan, Anda dapat melatih model perkiraan dengan BigQuery ML.

Konsol

  1. Di tampilan detail tabel occupancy_dataset_table, klik Tulis kueri baru.

  2. Masukkan kueri Google Standard SQL berikut di area teks Query editor:

    CREATE OR REPLACE MODEL `PROJECT_ID.occupancy_dataset.occupancy_forecast_model`
      OPTIONS( MODEL_TYPE = "ARIMA_PLUS",
        TIME_SERIES_TIMESTAMP_COL = "currentTime",
        TIME_SERIES_DATA_COL = "total_count",
        TIME_SERIES_ID_COL = "type" ) AS
    SELECT
      *
    FROM
      `PROJECT_ID.occupancy_dataset.forecast_training_data`
  3. Klik Run.

Kueri membutuhkan waktu beberapa menit hingga selesai. Setelah iterasi pertama selesai, model Anda (occupancy_forecast_model) akan muncul di panel navigasi. Karena kueri ini menggunakan pernyataan CREATE MODEL untuk membuat model, Anda tidak akan melihat hasil kueri.

Anda dapat mengamati model saat sedang dilatih dengan melihat tab Statistik model. Segera setelah iterasi pertama selesai, tab akan diupdate. Statistik akan terus diupdate saat setiap iterasi selesai.

Mendapatkan prediksi tingkat keterisian dengan BigQuery

Setelah model selesai dilatih, Anda bisa mendapatkan prediksi dari model tentang jumlah hunian.

Kueri ML.FORECAST berikut menggunakan input fungsi HORIZON untuk membuat perkiraan 60 menit berikutnya.

Konsol

  1. Di tampilan detail tabel occupancy_dataset_table, klik Tulis kueri baru.

  2. Masukkan kueri Google Standard SQL berikut di area teks Query editor:

    SELECT
      *
    FROM
      ML.FORECAST(MODEL `PROJECT_ID.occupancy_dataset.occupancy_forecast_model`,
      STRUCT(60 AS HORIZON))
  3. Klik Run.

Model ini menghasilkan perkiraan dalam forecast_value untuk stempel waktu mendatang dengan jenis "Person". Misalnya, pada 2022-08-12 di 11:06:00, model memperkirakan akan ada total ~15,26 "Orang".

jenis forecast_timestamp forecast_value standard_error confidence_level prediction_interval_lower_bound prediction_interval_upper_bound
"Orang" 2022-08-12 11:06:00 UTC 15.2621986941298 2.56470066 0,95 10.2444693 20.2799280
"Orang" 2022-08-12 11.07.00 UTC 13,235260043001354 3.19379743 0,95 6.98672921 19.4837908
"Orang" 2022-08-12 11.08.00 UTC 16.257331475128712 3,87581375 0,95 8.67446430 23.8401986
"Orang" 2022-08-12 11.09.00 UTC 31.432229611853742 4.24905293 0,95 23.1191356 39.7453236
"Orang" 2022-08-12 11.10.00 UTC 26.199214148193725 4,26157413 0,95 17,8616229 34,5368053
"Orang" 2022-08-12 11:11:00 UTC 26,211573546307324 4.27962512 0,95 17,8386663 34,5844807