Audience
Tutorial ini didesain untuk membantu Anda mulai menjelajahi dan mengembangkan aplikasi dengan Video Intelligence API. Python dirancang untuk orang yang sudah memiliki pengetahuan dasar tentang Python. Anda juga harus dapat mengikuti pengetahuan pemrograman yang terbatas. Setelah mempelajari tutorial ini, Anda seharusnya dapat menggunakan Dokumentasi referensi untuk membuat aplikasi dasar Anda sendiri.
Tutorial ini memandu aplikasi Video Intelligence API menggunakan kode Python. Tujuannya di sini bukan untuk menjelaskan library klien Python, tetapi menjelaskan cara melakukan panggilan ke Video Intelligence API menggunakan fitur deteksi label video. Aplikasi di Java dan Node.js pada dasarnya mirip.
Jika Anda mencari contoh khusus kode atau contoh dalam bahasa lain, lihat panduan cara kerja pendamping.
Prasyarat
Tutorial ini memiliki prasyarat berikut:
- Anda telah menyiapkan project Video Intelligence API di Konsol Google Cloud.
- Anda telah menyiapkan lingkungan menggunakan akun layanan dan Kredensial Default Aplikasi.
- Anda telah memiliki pemahaman dasar tentang pemrograman Python.
- Anda telah menyiapkan lingkungan pengembangan Python.
Sebaiknya Anda menginstal Python,pip
, danvirtualenv
versi terbaru di sistem Anda. Untuk mengetahui petunjuknya, lihat Panduan Penyiapan Lingkungan Pengembangan Python untuk Google Cloud. - Anda telah menginstal library klien Google Cloud
Membuat anotasi video menggunakan deteksi label
Tutorial ini memandu Anda memahami aplikasi Video API dasar, menggunakan permintaan LABEL_DETECTION
. Permintaan LABEL_DETECTION
menganotasi video dengan
label (atau "tag") yang dipilih berdasarkan konten gambar. Misalnya, video kereta di persimpangan dapat menghasilkan label seperti "kereta",
"transportasi", "perlintasan kereta api".
Berikut adalah seluruh kode yang diperlukan untuk tutorial ini. Sebagian besar komentar telah dihapus dari kode ini untuk menyoroti seberapa singkat kode tersebut. Sebaliknya, komentar akan diberikan nanti saat kita menelusuri kode.
Aplikasi sederhana ini melakukan tugas-tugas berikut:
- Mengimpor library yang diperlukan untuk menjalankan aplikasi.
- Mengambil file video yang tersimpan di URI Cloud Storage sebagai argumen dan meneruskannya ke fungsi
main()
. - Mendapatkan kredensial untuk menjalankan layanan Video Intelligence API.
- Membuat permintaan anotasi video untuk dikirimkan ke layanan video.
- Mengirim permintaan dan menampilkan operasi yang berjalan lama.
- Melakukan loop pada operasi yang berjalan lama hingga video diproses dan menampilkan nilai yang tersedia.
- Mengurai respons untuk layanan dan menampilkan respons kepada pengguna.
Mengimpor library
Beberapa library standar diimpor: argparse
untuk memungkinkan aplikasi
menerima nama file input sebagai argumen, dan sys
untuk memformat output sambil
menunggu respons API. Paket time
diimpor untuk menjalankan
beberapa loop tunggu sederhana.
Saat menggunakan Video Intelligence API, Anda juga harus mengimpor
google.cloud.videointelligence_v1
dan class enumerasinya, yang menyimpan
direktori panggilan API.
Menjalankan aplikasi
Di sini, argumen yang diteruskan akan diuraikan untuk URI Cloud Storage nama file video dan diteruskan ke fungsi main()
.
Melakukan autentikasi ke API
Sebelum berkomunikasi dengan layanan Video Intelligence API, Anda perlu
mengautentikasi layanan menggunakan kredensial yang diperoleh sebelumnya. Dalam
aplikasi, cara termudah untuk mendapatkan kredensial adalah dengan menggunakan
Kredensial Default Aplikasi
(ADC). Secara default, ADC mencoba mendapatkan kredensial dari
file lingkungan GOOGLE_APPLICATION_CREDENTIALS
, yang harus ditetapkan agar mengarah
ke file kunci JSON akun layanan Anda. (Anda harus menyiapkan akun
layanan dan lingkungan untuk menggunakan ADC di Panduan Memulai.
Membuat permintaan
Setelah layanan Video Intelligence API siap, Anda dapat membuat permintaan ke layanan tersebut. Permintaan ke Video Intelligence API disediakan sebagai objek JSON. Baca Referensi Video Intelligence API untuk mengetahui informasi lengkap tentang struktur spesifik permintaan semacam itu.
Cuplikan kode ini melakukan tugas-tugas berikut:
- Membuat JSON untuk permintaan POST ke metode
annotate_video()
. - Memasukkan lokasi Cloud Storage nama file video yang diteruskan ke permintaan.
- Menunjukkan bahwa metode
annotate
harus menjalankanLABEL_DETECTION
.
Memeriksa operasi
Dengan menggunakan permintaan operasi yang ada untuk operasi yang ada, loop while
dibuat untuk memeriksa status operasi tersebut secara berkala. Setelah operasi menunjukkan bahwa operasi tersebut adalah done
, respons akan diuraikan.
Uraikan respons
Setelah operasi selesai, respons akan berisi hasil
dalam
AnnotateVideoResponse
yang terdiri dari daftar annotationResults
, satu untuk setiap video yang dikirim dalam
permintaan. Karena hanya satu video yang dikirim dalam permintaan, segmentLabelAnnotations
pertama dari hasil akan diambil, semua label dalam
segmentLabelAnnotations
akan di-loop. Dengan hanya menggunakan
segmentLabelAnnotations
, tutorial ini hanya menampilkan anotasi tingkat video.
Setiap segment_label
menyertakan deskripsi (segment_label.description
), daftar kategori entitas (segment_label.category_entities
), dan daftar
segmen yang mengidentifikasi waktu mulai/berakhir dari kemunculan label dalam video
(harus berupa satu segmen yang mencakup seluruh segmen video atau video untuk segment_label_annotations
).
{ "name":"us-west1.12089999971048628582", "metadata":{ "@type":"type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress", "annotationProgress":[ { "inputUri":"gs://YOUR_BUCKET/YOUR_OBJECT", "updateTime":"2020-01-31T01:49:52.498015Z", "startTime":"2020-01-31T01:49:43.056481Z" } ] }, "done": true, "response":{ "@type":"type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse", "annotationResults":[ { "inputUri":"gs://YOUR_BUCKET/YOUR_OBJECT", "segmentLabelAnnotations": [ { "entity": { "entityId": "/m/01yrx", "languageCode": "en-US" }, "segments": [ { "segment": { "startTimeOffset": "0s", "endTimeOffset": "14.833664s" }, "confidence": 0.98509187 } ] }, ... ] } ] } }
Karena hanya satu video yang dikirim dalam permintaan, description
pertama dari hasil pertama akan dicetak.
Menjalankan aplikasi
Untuk menjalankan aplikasi Anda, cukup teruskan Cloud Storage URI video:
$ python labels.py gs://YOUR_BUCKET/YOUR_OBJECT Operation us-west1.4757250774497581229 started: 2020-01-30T01:46:30.158989Z Operation processing ... The video has been successfully processed. Video label description: urban area Label category description: city Segment 0: 0.0s to 38.752016s Confidence: 0.946980476379 Video label description: traffic Segment 0: 0.0s to 38.752016s Confidence: 0.94105899334 Video label description: vehicle Segment 0: 0.0s to 38.752016s Confidence: 0.919958174229 ...
Output
Berikut adalah contoh kemungkinan output.
Processing video for label annotations:Finished processing. Video label description: crowd Label category description: people Segment 0: 0.0s to 60.24s Confidence: 0.527720749378
Video label description: official Label category description: person Segment 0: 0.0s to 60.24s Confidence: 0.372822880745
Video label description: audience Label category description: people Segment 0: 0.0s to 60.24s Confidence: 0.501719772816
Video label description: news Segment 0: 0.0s to 60.24s Confidence: 0.867252230644
Video label description: people Label category description: person Segment 0: 0.0s to 60.24s Confidence: 0.46747264266
Video label description: politics Segment 0: 0.0s to 60.24s Confidence: 0.319397002459
Selamat! Anda telah menyelesaikan tugas anotasi menggunakan Video Intelligence API.