Tutorial SAM3 (Segment Everything Model 3): Membangun Filter Privasi
Pelajari cara menggunakan SAM3 untuk membangun filter privasi berbasis prompt teks yang menutupi wajah, plat nomor, layar, ponsel, dan dokumen pada gambar dan video.
SAM 3 adalah model baru Meta “segment anything” yang dapat menemukan setiap instance suatu konsep melalui prompt teks singkat atau contoh, lalu mengembalikan mask piksel-akurasi pada gambar dan video. Ini membuatnya sangat cocok untuk tugas privasi praktis seperti mengaburkan wajah, plat nomor, atau layar tanpa menggambar seleksi secara manual atau menulis detektor klasik.
Dalam tutorial ini, kita akan membangun SAM3 Privacy Filter di Colab menggunakan UI Gradio. Cukup unggah gambar atau video, ketikkan prompt (misalnya faces, license plates), dan SAM3 akan mengembalikan mask per-instance sehingga kita dapat mengaburkan hanya piksel tersebut. Kita akan membahas penyiapan, pembuatan mask, penerapan Gaussian blur, dan menyambungkan aplikasi Gradio untuk mengekspor file akhir.
Apa itu SAM3?
Segment Anything Model 3 (SAM 3) adalah model terpadu Meta untuk deteksi, segmentasi, dan pelacakan open-vocabulary pada gambar dan video. Alih-alih mengonfigurasi detektor terpisah untuk setiap kelas, Anda dapat memberi prompt dengan frasa singkat atau contoh, dan SAM 3 mengembalikan mask per-instance.
Di balik layar, SAM 3 menggabungkan encoder teks dan encoder gambar dengan detektor bergaya DETR serta pelacak turunan SAM-2 dengan memory bank. Pada setiap frame, model mendeteksi mask untuk konsep dari prompt, mempropagasi mask ke depan melalui pelacak, dan menggabungkan mask yang baru terdeteksi dan terlacak ke output final untuk frame tersebut.
SAM 3 dirilis dengan bobot model, kode fine-tuning, dan data evaluasi, termasuk tolok ukur SA-Co untuk segmentasi konsep yang dapat diprompt.
Dalam laporan Meta, model ini menunjukkan peningkatan ~2x dibanding baseline kuat pada segmentasi open-vocabulary di gambar dan video, sekaligus mempertahankan kekuatan interaktif SAM-2.
Dalam tutorial ini, kita akan mengambil mask SAM 3 tersebut dan mengubahnya menjadi komposit dengan Gaussian blur untuk gambar maupun video, dibungkus dalam UI Gradio.
Contoh SAM3: Membangun Filter Privasi untuk Gambar dan Video
Pada bagian ini, kita akan membangun filter privasi dengan SAM3 untuk gambar dan video yang ditanamkan dalam UI Gradio sederhana.
Cara kerjanya sebagai berikut:
Mulai dengan mengetik target, misalnya faces, license plates, computer screens, dll.
SAM3 melakukan segmentasi instance yang cocok dengan prompt teks Anda dan mengembalikan mask per-objek
Kita kemudian melakukan union mask-mask tersebut dan hanya mengaburkan piksel yang termask
Lalu kita gunakan komponen UI Gradio untuk mengunggah gambar atau video, menyesuaikan kekuatan blur dan confidence, kemudian pratinjau dan unduh hasilnya.
Kita akan menelusuri implementasi lengkapnya dalam langkah-langkah kecil.
Langkah 1: Instal dependensi
Sebelum menjalankan demo ini, pastikan semua prasyarat sudah siap. Untuk menjalankan SAM3 Privacy Filter di Colab, Anda memerlukan pustaka Transformers terbaru beserta beberapa pustaka runtime untuk UI, operasi tensor, gambar, dan I/O video. Cuplikan di bawah menginstal semuanya sekaligus.
import subprocess
import sys
import os
definstall(package):
subprocess.check_call([sys.executable,"-m","pip","install","-q", package])print(" Installing latest Transformers")
install("git+https://github.com/huggingface/transformers.git")
pkgs =["accelerate","gradio","numpy","pillow","torch","torchvision","imageio[ffmpeg]"]for p in pkgs:
install(p)Didukung oleh
Berikut fungsi setiap prasyarat:
git+https://github.com/huggingface/transformers.git: Mengambil pustaka Transformers terbaru dari sumber, sehingga kelas Sam3Processor dan Sam3Model tersedia.
torch dan torchvision: Utilitas komputasi tensor dan gambar yang menjalankan forward pass SAM3
accelerate: Helper inferensi yang digunakan oleh Transformers.
gradio: UI web ringan untuk mengunggah media dan meninjau hasil blur.
numpy, pillow: Menyediakan array gambar dan operasi gambar PIL untuk komposisi mask/blur.
imageio[ffmpeg]: Membaca/menulis video dan menyandikan MP4 (FFmpeg) untuk tab video.
Setelah lingkungan siap dan facebook/sam3 dimuat, demo memungkinkan Anda melakukan segmentasi dengan prompt teks singkat dan mengaburkan mask hasilnya pada gambar atau video melalui aplikasi Gradio sederhana.
Catatan: Jika Anda berencana menggunakan GPU di Colab, atur runtime ke GPU (T4/A100) sebelum instalasi. Saya menggunakan GPU A100 di Colab untuk pengalaman yang lebih cepat.
Langkah 2: Impor
Dengan lingkungan yang sudah siap, impor pustaka yang menjalankan UI, inferensi model, penanganan gambar/video, dan pengukuran waktu. Hanya modul-modul ini yang Anda perlukan untuk SAM3 privacy filter.
import gradio as gr
import torch
import numpy as np
import imageio
from PIL import Image, ImageFilter
from transformers import Sam3Processor, Sam3Model
import timeDidukung oleh
Sekarang, Gradio menyediakan antarmuka web, pustaka transformers menjalankan SAM3, dan PyTorch mengeksekusi inferensi di GPU atau CPU. Sementara itu PIL memuat dan mengedit gambar (termasuk Gaussian blur), NumPy mengelola array mask, dan imageio membaca serta menulis file video.
Selanjutnya, kita akan memuat model dan membangun mesin kecil yang mengubah prompt teks menjadi mask yang dapat Anda kaburkan.
Langkah 3: Muat SAM3 dan Prediksi Mask
Sekarang lingkungan sudah siap, mari bungkus SAM3 ke dalam mesin kecil yang memuat model sekali, menjalankan segmentasi instance berbasis prompt teks sesuai permintaan, dan mengembalikan mask biner yang digunakan untuk pengaburan.
Mari pahami bagaimana mesin ini menyatu dalam pipeline:
Sam3PrivacyEngine.init(): Inisialisator ini memilih perangkat terbaik (CUDA jika tersedia, jika tidak CPU), memuat bobot facebook/sam3 dan Sam3Processor yang berpasangan, lalu memindahkan model ke perangkat pilihan agar inferensi berjalan efisien.
Sam3PrivacyEngine.predict_masks(): Metode ini membangun input model dari gambar PIL dan prompt teks, menjalankan forward inferensi di bawah torch.no_grad() untuk menghindari overhead gradien, dan memroses keluaran dengan post_process_instance_segmentationmenggunakan ambang deteksi dan mask yang diberikan serta ukuran target asli untuk penskalaan yang tepat. Metode ini mengembalikan mask segmentasi per-instance yang dikonversi dari tensor ke array NumPy lalu ke mask PIL “L” (citra grayscale 8-bit (mode "L") di mana setiap piksel bernilai 0–255) untuk komposit.
engine = Sam3PrivacyEngine(): Baris ini membuat satu instance mesin yang dapat digunakan kembali sehingga model SAM3 dimuat sekali dan dapat dipanggil berulang untuk gambar atau frame video tanpa inisialisasi ulang.
Dengan mesin mandiri ini diinisialisasi, Anda dapat mengubah gambar dan prompt teks apa pun menjadi mask instance. Selanjutnya, kita akan menerapkan blur secara selektif menggunakan mask-mask ini dan menanamkan semuanya ke UI Gradio.
Langkah 4: Logika pengaburan
Pada bagian ini, kita mengambil mask SAM3 dan menerapkan privasi. Hanya area termask yang dikaburkan sementara bagian lain tetap dipertahankan. Kita mulai dengan fungsi Gaussian blur yang dapat digunakan kembali, lalu menghubungkannya ke dua pipeline, satu untuk gambar dan satu untuk video.
Langkah 4.1: Gaussian blur
Helper ini menerima gambar dan satu atau lebih mask PIL "L", menggabungkannya menjadi satu mask komposit, dan menempelkan salinan gambar yang sudah diburamkan hanya pada area di mana mask berwarna putih (255).
Fungsi GaussianBlur() terlebih dahulu membuat versi gambar yang sepenuhnya diburamkan. Sementara itu composite_mask adalah mask “L” (grayscale) yang diinisialisasi hitam (0 = pertahankan asli).
Untuk setiap mask SAM3, kita tempelkan ke mask komposit ini sehingga piksel putih (255) terakumulasi pada area yang harus diburamkan.
Terakhir, kita menempelkan gambar yang diburamkan di atas gambar asli menggunakan composite_mask, sehingga hanya area putih yang menjadi buram.
Metode final_image.paste() menggantikan hanya piksel yang termask, membiarkan sisanya utuh untuk fidelitas visual maksimum.
Dengan satu pemanggilan, Anda dapat mengaburkan area apa pun seperti wajah, layar, plat, sambil mempertahankan latar belakang apa adanya.
Langkah 4.2: Pipeline gambar
Sub-langkah ini mencakup alur gambar end-to-end, mulai dari normalisasi input hingga mendapatkan mask dari SAM3, lalu mengaburkan piksel termask, dan akhirnya mengembalikan hasilnya.
Kita menangani gambar dengan pipeline bertahap berikut:
Pertama, kita mengonversi array NumPy dari Gradio menjadi gambar PIL RGB untuk memastikan pemrosesan konsisten.
Berikutnya, kita memanggil engine.predict_masks() untuk memperoleh mask instance SAM3 untuk text_prompt yang diberikan.
Kemudian, kita menerapkan fungsi apply_blur_pure() dengan blur_strength yang dipilih sehingga hanya area termask yang diburamkan.
Setelah pemrosesan, kita menyimpan hasil sebagai png dan mengembalikan array NumPy serta file yang dapat diunduh.
Dengan alur gambar selesai, kini kita dapat lanjut ke pipeline video.
Langkah 4.3: Pipeline video
Alur video mencerminkan jalur gambar, tetapi melakukan streaming frame demi frame dengan imageio. Untuk setiap frame, kita melakukan segmentasi, mengaburkan area termask, dan menulis ke file MP4 yang disandikan H.264.
defprocess_video(video_path, text_prompt, blur_strength, confidence, max_frames):ifnot video_path:returnNone,Nonetry:
reader = imageio.get_reader(video_path)
meta = reader.get_meta_data()
fps = meta.get('fps',24)
output_path ="privacy_video.mp4"
writer = imageio.get_writer(
output_path,
fps=fps,
codec='libx264',
pixelformat='yuv420p',
macro_block_size=1)print("Starting video processing...")for i, frame inenumerate(reader):if i >= max_frames:break
frame_pil = Image.fromarray(frame).convert("RGB")
masks = engine.predict_masks(frame_pil, text_prompt, confidence)
processed_pil = apply_blur_pure(frame_pil, masks, blur_strength)
writer.append_data(np.array(processed_pil))if i %10==0:print(f"Processed frame {i}...")
writer.close()
reader.close()print("Video processing complete.")return output_path, output_path
except Exception as e:print(f"Error: {e}")returnNone,NoneDidukung oleh
Begini cara kita menangani video dengan pipeline berikut:
Pertama kita membuka file dengan imageio.get_reader(), lalu melakukan iterasi frame, dan membaca FPS dari metadata (default 24 jika tidak ada).
Berikutnya, untuk setiap frame, kita konversi ke gambar PIL, prediksi mask dengan SAM3 melalui metode engine.predict_masks(), dan kaburkan area termask menggunakan fungsi apply_blur_pure().
Kemudian, kita menambahkan setiap frame yang sudah diproses ke penulis MP4 yang dikonfigurasi dengan pixelformat='yuv420p' untuk kompatibilitas luas dan macro_block_size=1 agar terhindar dari artefak perataan.
Setelah pemrosesan, kita sengaja memangkas output dengan berhenti setelah jumlah frame tertentu, yang default-nya 60 frame (~2 detik) agar uji coba Colab tetap cepat dan menghindari timeout.
Dengan alur video ini, Anda dapat mengaburkan area sensitif pada rekaman rapat, cuplikan dashcam, atau rekaman layar menggunakan prompt teks sederhana.
Langkah 5: Inferensi Gradio
Setelah masking dan pengaburan siap, kita akan membungkus semuanya dalam UI Gradio yang ringan agar siapa pun dapat mengunggah gambar atau video, mengetik prompt teks, dan mengunduh outputnya.
Aplikasi Gradio menanamkan pipeline masking dan pengaburan SAM3 ke UI web sederhana dengan menggunakan:
Kerangka aplikasi (gr.Blocks): Blok ini membuat aplikasi Gradio satu halaman dengan judul dan dua tab, satu untuk gambar dan satu untuk video, sehingga pengguna dapat beralih mode tanpa meninggalkan halaman.
Tab gambar: Input mencakup pengunggah gambar, kotak teks untuk prompt teks, dan slider untuk kekuatan blur dan confidence. Bidang output menampilkan pratinjau hasil dan PNG yang dapat diunduh, sementara tombol Blur Image mengarahkan semuanya ke process_image, yang memanggil SAM3 untuk mask dan menerapkan Gaussian blur hanya pada piksel yang termask.
Tab video: Untuk pengaburan video, input mencakup pengunggah video, kotak teks untuk prompt teks, slider untuk kekuatan blur dan confidence, serta batas maksimum frame untuk demo cepat. Bidang output menyediakan pratinjau inline dan MP4 yang dapat diunduh, sementara tombol Blur Video memanggil process_video, mengiterasi frame untuk memprediksi mask, mengaburkan area termask, dan menyandikan video H.264.
Peluncuran: Metode demo.launch() menjalankan aplikasi, menghasilkan tautan yang dapat dibagikan, dan menampilkan stack trace terperinci saat debugging diaktifkan.
Kini, SAM3 Privacy Filter kita siap untuk mengunggah media (gambar/video), menetapkan prompt dan ambang, serta mengekspor output yang diburamkan.
Catatan: Semua gambar dan video dalam demo ini bersumber dari Pexels.com dan bebas digunakan.
Kesimpulan
Dalam tutorial ini, kita membangun aplikasi Gradio yang menerima prompt singkat, mendapatkan mask per-instance dari SAM3, dan hanya mengaburkan area tersebut pada gambar dan MP4. Solusi ini cepat, open-vocabulary, dan tidak memerlukan seleksi manual atau detektor tetap.
Langkah berikutnya dapat mencakup penambahan multi-prompt, box prompt, dan percepatan video (melewati frame atau menurunkan skala). Anda juga dapat mempertimbangkan pencatatan run dan menawarkan redaksi alternatif seperti pikselasi. Namun, sangat penting untuk selalu meninjau output sebelum dibagikan karena filter privasi mengurangi risiko, tetapi tidak menggantikan persetujuan.
Saya adalah Google Developers Expert di ML (Gen AI), Kaggle 3x Expert, dan Women Techmakers Ambassador dengan pengalaman lebih dari 3 tahun di bidang teknologi. Saya ikut mendirikan startup health-tech pada 2020 dan sedang menempuh studi magister ilmu komputer di Georgia Tech dengan spesialisasi machine learning.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Pelajari tata kelola AI bersama Collibra. Bangun, terapkan, dan skalakan AI yang bertanggung jawab menggunakan alat, kerangka kerja, dan alur kerja MLOps.
Pelajari cara mengintegrasikan kecerdasan buatan (AI) ke dalam aplikasi perangkat lunak menggunakan antarmuka pemrograman aplikasi (API) dan perpustakaan sumber terbuka. Mulailah perjalanan Anda untuk menjadi seorang Insinyur Kecerdasan Buatan (AI) hari ini!
SAM 3 adalah model baru Meta “segment anything” yang dapat menemukan setiap instance suatu konsep melalui prompt teks singkat atau contoh, lalu mengembalikan mask piksel-akurasi pada gambar dan video. Ini membuatnya sangat cocok untuk tugas privasi praktis seperti mengaburkan wajah, plat nomor, atau layar tanpa menggambar seleksi secara manual atau menulis detektor klasik.
Dalam tutorial ini, kita akan membangun SAM3 Privacy Filter di Colab menggunakan UI Gradio. Cukup unggah gambar atau video, ketikkan prompt (misalnya faces, license plates), dan SAM3 akan mengembalikan mask per-instance sehingga kita dapat mengaburkan hanya piksel tersebut. Kita akan membahas penyiapan, pembuatan mask, penerapan Gaussian blur, dan menyambungkan aplikasi Gradio untuk mengekspor file akhir.
Apa itu SAM3?
Segment Anything Model 3 (SAM 3) adalah model terpadu Meta untuk deteksi, segmentasi, dan pelacakan open-vocabulary pada gambar dan video. Alih-alih mengonfigurasi detektor terpisah untuk setiap kelas, Anda dapat memberi prompt dengan frasa singkat atau contoh, dan SAM 3 mengembalikan mask per-instance.
Di balik layar, SAM 3 menggabungkan encoder teks dan encoder gambar dengan detektor bergaya DETR serta pelacak turunan SAM-2 dengan memory bank. Pada setiap frame, model mendeteksi mask untuk konsep dari prompt, mempropagasi mask ke depan melalui pelacak, dan menggabungkan mask yang baru terdeteksi dan terlacak ke output final untuk frame tersebut.
Sumber: GitHub SAM3
SAM 3 dirilis dengan bobot model, kode fine-tuning, dan data evaluasi, termasuk tolok ukur SA-Co untuk segmentasi konsep yang dapat diprompt.
Dalam laporan Meta, model ini menunjukkan peningkatan ~2x dibanding baseline kuat pada segmentasi open-vocabulary di gambar dan video, sekaligus mempertahankan kekuatan interaktif SAM-2.
Dalam tutorial ini, kita akan mengambil mask SAM 3 tersebut dan mengubahnya menjadi komposit dengan Gaussian blur untuk gambar maupun video, dibungkus dalam UI Gradio.
Contoh SAM3: Membangun Filter Privasi untuk Gambar dan Video
Pada bagian ini, kita akan membangun filter privasi dengan SAM3 untuk gambar dan video yang ditanamkan dalam UI Gradio sederhana.
Cara kerjanya sebagai berikut:
Kita akan menelusuri implementasi lengkapnya dalam langkah-langkah kecil.
Langkah 1: Instal dependensi
Sebelum menjalankan demo ini, pastikan semua prasyarat sudah siap. Untuk menjalankan SAM3 Privacy Filter di Colab, Anda memerlukan pustaka Transformers terbaru beserta beberapa pustaka runtime untuk UI, operasi tensor, gambar, dan I/O video. Cuplikan di bawah menginstal semuanya sekaligus.
Berikut fungsi setiap prasyarat:
git+https://github.com/huggingface/transformers.git: Mengambil pustakaTransformersterbaru dari sumber, sehingga kelasSam3ProcessordanSam3Modeltersedia.torchdantorchvision: Utilitas komputasi tensor dan gambar yang menjalankan forward pass SAM3accelerate: Helper inferensi yang digunakan oleh Transformers.gradio: UI web ringan untuk mengunggah media dan meninjau hasil blur.numpy,pillow: Menyediakan array gambar dan operasi gambar PIL untuk komposisi mask/blur.imageio[ffmpeg]: Membaca/menulis video dan menyandikan MP4 (FFmpeg) untuk tab video.Setelah lingkungan siap dan
facebook/sam3dimuat, demo memungkinkan Anda melakukan segmentasi dengan prompt teks singkat dan mengaburkan mask hasilnya pada gambar atau video melalui aplikasi Gradio sederhana.Catatan: Jika Anda berencana menggunakan GPU di Colab, atur runtime ke GPU (T4/A100) sebelum instalasi. Saya menggunakan GPU A100 di Colab untuk pengalaman yang lebih cepat.
Langkah 2: Impor
Dengan lingkungan yang sudah siap, impor pustaka yang menjalankan UI, inferensi model, penanganan gambar/video, dan pengukuran waktu. Hanya modul-modul ini yang Anda perlukan untuk SAM3 privacy filter.
Sekarang,
Gradiomenyediakan antarmuka web, pustakatransformersmenjalankan SAM3, danPyTorchmengeksekusi inferensi di GPU atau CPU. Sementara ituPILmemuat dan mengedit gambar (termasuk Gaussian blur),NumPymengelola array mask, danimageiomembaca serta menulis file video.Selanjutnya, kita akan memuat model dan membangun mesin kecil yang mengubah prompt teks menjadi mask yang dapat Anda kaburkan.
Langkah 3: Muat SAM3 dan Prediksi Mask
Sekarang lingkungan sudah siap, mari bungkus SAM3 ke dalam mesin kecil yang memuat model sekali, menjalankan segmentasi instance berbasis prompt teks sesuai permintaan, dan mengembalikan mask biner yang digunakan untuk pengaburan.
Mari pahami bagaimana mesin ini menyatu dalam pipeline:
Sam3PrivacyEngine.init(): Inisialisator ini memilih perangkat terbaik (CUDA jika tersedia, jika tidak CPU), memuat bobotfacebook/sam3danSam3Processoryang berpasangan, lalu memindahkan model ke perangkat pilihan agar inferensi berjalan efisien.Sam3PrivacyEngine.predict_masks(): Metode ini membangun input model dari gambar PIL dan prompt teks, menjalankan forward inferensi di bawahtorch.no_grad()untuk menghindari overhead gradien, dan memroses keluaran denganpost_process_instance_segmentationmenggunakan ambang deteksi dan mask yang diberikan serta ukuran target asli untuk penskalaan yang tepat. Metode ini mengembalikan mask segmentasi per-instance yang dikonversi dari tensor ke array NumPy lalu ke mask PIL “L” (citra grayscale 8-bit (mode "L") di mana setiap piksel bernilai 0–255) untuk komposit.engine = Sam3PrivacyEngine(): Baris ini membuat satu instance mesin yang dapat digunakan kembali sehingga model SAM3 dimuat sekali dan dapat dipanggil berulang untuk gambar atau frame video tanpa inisialisasi ulang.Dengan mesin mandiri ini diinisialisasi, Anda dapat mengubah gambar dan prompt teks apa pun menjadi mask instance. Selanjutnya, kita akan menerapkan blur secara selektif menggunakan mask-mask ini dan menanamkan semuanya ke UI Gradio.
Langkah 4: Logika pengaburan
Pada bagian ini, kita mengambil mask SAM3 dan menerapkan privasi. Hanya area termask yang dikaburkan sementara bagian lain tetap dipertahankan. Kita mulai dengan fungsi Gaussian blur yang dapat digunakan kembali, lalu menghubungkannya ke dua pipeline, satu untuk gambar dan satu untuk video.
Langkah 4.1: Gaussian blur
Helper ini menerima gambar dan satu atau lebih mask PIL "L", menggabungkannya menjadi satu mask komposit, dan menempelkan salinan gambar yang sudah diburamkan hanya pada area di mana mask berwarna putih (255).
Berikut cara kerja fungsi ini:
GaussianBlur()terlebih dahulu membuat versi gambar yang sepenuhnya diburamkan. Sementara itucomposite_maskadalah mask “L” (grayscale) yang diinisialisasi hitam (0 = pertahankan asli).composite_mask, sehingga hanya area putih yang menjadi buram.final_image.paste()menggantikan hanya piksel yang termask, membiarkan sisanya utuh untuk fidelitas visual maksimum.Dengan satu pemanggilan, Anda dapat mengaburkan area apa pun seperti wajah, layar, plat, sambil mempertahankan latar belakang apa adanya.
Langkah 4.2: Pipeline gambar
Sub-langkah ini mencakup alur gambar end-to-end, mulai dari normalisasi input hingga mendapatkan mask dari SAM3, lalu mengaburkan piksel termask, dan akhirnya mengembalikan hasilnya.
Kita menangani gambar dengan pipeline bertahap berikut:
engine.predict_masks()untuk memperoleh mask instance SAM3 untuktext_promptyang diberikan.apply_blur_pure()denganblur_strengthyang dipilih sehingga hanya area termask yang diburamkan.pngdan mengembalikan array NumPy serta file yang dapat diunduh.Dengan alur gambar selesai, kini kita dapat lanjut ke pipeline video.
Langkah 4.3: Pipeline video
Alur video mencerminkan jalur gambar, tetapi melakukan streaming frame demi frame dengan
imageio. Untuk setiap frame, kita melakukan segmentasi, mengaburkan area termask, dan menulis ke file MP4 yang disandikan H.264.Begini cara kita menangani video dengan pipeline berikut:
imageio.get_reader(), lalu melakukan iterasi frame, dan membaca FPS dari metadata (default 24 jika tidak ada).engine.predict_masks(), dan kaburkan area termask menggunakan fungsiapply_blur_pure().pixelformat='yuv420p'untuk kompatibilitas luas danmacro_block_size=1agar terhindar dari artefak perataan.Dengan alur video ini, Anda dapat mengaburkan area sensitif pada rekaman rapat, cuplikan dashcam, atau rekaman layar menggunakan prompt teks sederhana.
Langkah 5: Inferensi Gradio
Setelah masking dan pengaburan siap, kita akan membungkus semuanya dalam UI Gradio yang ringan agar siapa pun dapat mengunggah gambar atau video, mengetik prompt teks, dan mengunduh outputnya.
Aplikasi Gradio menanamkan pipeline masking dan pengaburan SAM3 ke UI web sederhana dengan menggunakan:
gr.Blocks): Blok ini membuat aplikasi Gradio satu halaman dengan judul dan dua tab, satu untuk gambar dan satu untuk video, sehingga pengguna dapat beralih mode tanpa meninggalkan halaman.process_image, yang memanggil SAM3 untuk mask dan menerapkan Gaussian blur hanya pada piksel yang termask.process_video, mengiterasi frame untuk memprediksi mask, mengaburkan area termask, dan menyandikan videoH.264.demo.launch()menjalankan aplikasi, menghasilkan tautan yang dapat dibagikan, dan menampilkan stack trace terperinci saat debugging diaktifkan.Kini, SAM3 Privacy Filter kita siap untuk mengunggah media (gambar/video), menetapkan prompt dan ambang, serta mengekspor output yang diburamkan.
Catatan: Semua gambar dan video dalam demo ini bersumber dari Pexels.com dan bebas digunakan.