Membangun solusi analisis ML vision dengan Dataflow dan Cloud Vision API

Last reviewed 2024-05-23 UTC

Dalam arsitektur referensi ini, Anda akan mempelajari kasus penggunaan, alternatif desain, dan pertimbangan desain saat mendistribusikan Dataflow pipeline untuk memproses file gambar dengan Cloud Vision dan untuk menyimpan hasil yang diproses di BigQuery. Anda dapat menggunakan hasil yang disimpan tersebut untuk analisis data skala besar dan untuk melatih Model siap pakai BigQuery ML.

Dokumen arsitektur referensi ini ditujukan untuk data engineer dan data engineer ilmuwan.

Arsitektur

Diagram berikut mengilustrasikan alur sistem untuk referensi ini tentang arsitektur ini.

Arsitektur yang menunjukkan aliran informasi untuk menyerap dan memicu, memproses, serta menyimpan dan menganalisis proses.

Seperti yang ditunjukkan dalam diagram sebelumnya, informasi mengalir sebagai berikut:

  1. Penyerapan dan pemicu: Ini adalah tahap pertama dalam alur sistem tempat gambar masuk ke sistem terlebih dahulu. Selama tahap ini, tindakan berikut terjadi:

    1. Klien mengupload file gambar ke bucket Cloud Storage.
    2. Untuk setiap upload file, Cloud Storage otomatis mengirimkan notifikasi input dengan memublikasikan pesan ke Pub/Sub.
  2. Proses: Tahap ini segera mengikuti tahap penyerapan dan pemicu. Untuk setiap notifikasi input baru, tindakan berikut akan terjadi:

    1. Pipeline Dataflow memproses file ini notifikasi input, mengekstrak metadata file dari pesan Pub/Sub, dan mengirim referensi file ke Vision API untuk diproses.
    2. Vision API membaca gambar dan membuat anotasi.
    3. Pipeline Dataflow menyimpan anotasi yang dihasilkan oleh Vision API dalam tabel BigQuery.
  3. Simpan dan analisis: Ini adalah tahap akhir dalam alur. Pada tahap ini, Anda dapat melakukan hal berikut dengan hasil yang disimpan:

    1. Membuat kueri tabel BigQuery dan menganalisis anotasi yang disimpan.
    2. Gunakan BigQuery ML atau Vertex AI untuk membangun model dan mengeksekusi prediksi berdasarkan anotasi yang disimpan.
    3. Lakukan analisis tambahan dalam pipeline Dataflow (bukan yang ditampilkan dalam diagram ini).

Produk yang digunakan

Arsitektur referensi ini menggunakan produk Google Cloud berikut:

Kasus penggunaan

Vision API mendukung berbagai fitur pemrosesan, termasuk pelabelan gambar, deteksi wajah dan struktur, karakter optik pengenalan objek, pemberian tag konten vulgar, dan lain-lain. Masing-masing fitur ini memungkinkan beberapa kasus penggunaan yang berlaku untuk berbagai industri. Dokumen ini berisi beberapa contoh sederhana tentang apa yang mungkin ketika menggunakan Vision API, tetapi spektrum kemungkinan aplikasinya sangat luas.

Vision API juga menawarkan model machine learning terlatih yang canggih melalui REST API dan RPC API. Anda dapat menetapkan label ke gambar dan mengklasifikasikannya ke dalam jutaan kategori yang telah ditentukan. Alat ini membantu Anda mendeteksi objek, membaca cetak dan tulisan tangan, serta membangun metadata berharga ke dalam gambar katalog.

Arsitektur ini tidak memerlukan pelatihan model apa pun sebelum Anda dapat menggunakannya. Jika Anda perlu model kustom yang dilatih dengan data spesifik, memungkinkan Anda melatih AutoML atau model kustom untuk computer vision tujuan, seperti klasifikasi gambar dan deteksi objek. Atau, Anda bisa menggunakan Vertex AI Vision untuk lingkungan pengembangan aplikasi end-to-end yang memungkinkan Anda membangun, men-deploy, dan mengelola aplikasi computer vision.

Alternatif desain

Daripada menyimpan gambar di bucket Google Cloud Storage, proses yang menghasilkan gambar dapat memublikasikannya secara langsung ke aplikasi —misalnya Pub/Sub—dan pipeline Dataflow dapat mengirim gambar langsung ke Vision API.

Alternatif desain ini dapat menjadi solusi yang baik untuk kasus penggunaan sensitif latensi di mana Anda perlu menganalisis gambar berukuran kecil. Pub/Sub membatasi ukuran maksimum pesan hingga 10 Mb.

Jika Anda perlu melakukan batch processing untuk gambar dalam jumlah besar, Anda bisa menggunakan dirancang khusus asyncBatchAnnotate API.

Pertimbangan desain

Bagian ini menjelaskan pertimbangan desain untuk referensi ini arsitektur:

Keamanan, privasi, dan kepatuhan:

Gambar yang diterima dari sumber yang tidak tepercaya dapat berisi malware. Karena Vision API tidak mengeksekusi apa pun berdasarkan gambar yang dianalisisnya, {i>malware <i}berbasis gambar tidak akan mempengaruhi API. Jika Anda perlu memindai gambar, ubah pipeline Dataflow untuk menambahkan langkah pemindaian. Untuk mencapai tujuan yang sama Anda juga dapat menggunakan langganan terpisah untuk Pub/Sub topik dan memindai gambar dalam proses terpisah.

Untuk informasi selengkapnya, lihat Mengotomatiskan pemindaian malware untuk file yang diupload ke Cloud Storage.

Penggunaan Vision API Identity and Access Management (IAM) untuk otentikasi. Untuk mengakses Vision API, kebutuhan utama keamanan Cloud Storage > Penampil objek penyimpanan (roles/storage.objectViewer) akses ke bucket yang berisi file yang yang ingin Anda analisis.

Pengoptimalan biaya

Dibandingkan dengan opsi lain yang dibahas, seperti pemrosesan berlatensi rendah dan batch processing asinkron, arsitektur referensi ini menggunakan arsitektur untuk memproses gambar di pipeline streaming dengan mengelompokkan permintaan API. Streaming gambar langsung dengan latensi rendah yang disebutkan dalam Alternatif desain bisa lebih mahal karena adanya tambahan Pub/Sub dan Biaya Dataflow. Untuk pemrosesan gambar yang tidak perlu dilakukan dalam hitungan detik atau menit, Anda dapat menjalankan pipeline Dataflow mode batch. Menjalankan pipeline dalam mode batch dapat menghemat biaya saat dibandingkan dengan biaya untuk menjalankan pipeline streaming.

Vision API mendukung offline batch asinkron untuk semua fitur. Permintaan asinkron mendukung hingga 2.000 gambar per batch. Sebagai respons, Vision API menampilkan file JSON yang yang disimpan di bucket Cloud Storage.

Vision API juga menyediakan serangkaian fitur untuk menganalisis gambar. Harga adalah per gambar per fitur. Untuk mengurangi biaya, hanya minta fitur tertentu yang dibutuhkan untuk solusi Anda.

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengoptimalan performa

Vision API adalah API yang memerlukan banyak resource. Karena itu, memproses gambar dalam skala besar memerlukan orkestrasi panggilan API yang cermat. Tujuan Pipeline Dataflow menangani pengelompokan permintaan API, dengan baik menangani pengecualian yang terkait dengan pencapaian kuota, dan menghasilkan metrik kustom penggunaan API. Metrik ini dapat membantu Anda memutuskan apakah API peningkatan kuota diperlukan, atau jika pipeline Dataflow parameter harus disesuaikan untuk mengurangi frekuensi permintaan. Untuk selengkapnya informasi tentang meningkatkan permintaan kuota untuk Vision API, lihat Kuota dan batas.

Pipeline Dataflow memiliki beberapa parameter yang dapat memengaruhi dan latensi pemrosesan. Untuk informasi selengkapnya tentang parameter ini, lihat Deploy solusi analisis ML vision dengan Dataflow dan Vision API.

Deployment

Untuk men-deploy arsitektur ini, lihat Deploy solusi analisis ML vision dengan Dataflow dan Vision API.

Langkah selanjutnya

Kontributor

Penulis:

Kontributor lainnya:

Untuk melihat profil LinkedIn non-publik, login ke LinkedIn.