SAM3 Eğitimi (Segment Everything Model 3): Gizlilik Filtresi Oluşturun
SAM3'ü kullanarak, görüntü ve videolarda yüzleri, plakaları, ekranları, telefonları ve belgeleri maskeleyen metin istemli bir gizlilik filtresinin nasıl oluşturulacağını öğrenin.
SAM 3, kısa metin istemleri veya örnekler aracılığıyla bir kavramın tüm örneklerini bulabilen ve görüntü ile video genelinde piksel hassasiyetinde maskeler döndürebilen Meta’nın yeni “segment anything” modelidir. Bu, seçimleri elle çizmeden veya klasik algılayıcılar yazmadan yüzleri, plakaları veya ekranları bulanıklaştırma gibi pratik gizlilik görevleri için onu mükemmel kılar.
Bu öğreticide, SAM3 Gizlilik Filtresini bir Gradio arayüzü kullanarak Colab’de oluşturacağız. Bir görsel veya video yükleyin, bir istem yazın (ör. yüzler, plakalar) ve SAM3 yalnızca bu pikselleri bulanıklaştırabilmemiz için örnek maskeler döndürsün. Kurulum, maske üretimi, Gauss bulanıklığı uygulama ve nihai dosyaları dışa aktarmak için Gradio uygulamasını bağlama adımlarını birlikte inceleyeceğiz.
SAM3 nedir?
Segment Anything Model 3 (SAM 3), görüntü ve videoda açık sözlük algılama, segmentasyon ve izleme için Meta’nın birleştirilmiş modelidir. Her sınıf için ayrı algılayıcılar yapılandırmak yerine, kısa ifadeler veya örneklerle istem verebilir, SAM 3 ise örnek başına maskeler döndürür.
Alt yapıda, SAM 3 bir metin kodlayıcıyı ve görüntü kodlayıcıyı, DETR tarzı bir algılayıcı ve bellek bankalı SAM-2 türevi bir izleyiciyle birleştirir. Her karede, istemden kavramınıza ait maskeleri tespit eder, izleyici aracılığıyla maskeleri ileriye taşır ve yeni tespit edilen ve izlenen maskeleri o kare için nihai çıktıda birleştirir.
SAM 3; model ağırlıkları, ince ayar kodu ve değerlendirme verileriyle birlikte yayımlandı; buna, istemle yönlendirilebilen kavram segmentasyonu için SA-Co kıyaslaması da dahildir.
Meta’nın raporlarında, görüntü ve videoda açık sözlük segmentasyonunda güçlü taban çizgilerine göre ~2x kazanım gösterirken, SAM-2’nin etkileşimli güçlü yanlarını da koruduğu belirtilir.
Bu öğreticide, SAM 3 maskelerini hem görüntüler hem videolar için Gauss bulanıklığı uygulanmış bir kompozite dönüştürecek ve tümünü bir Gradio arayüzüne sarmalayacağız.
SAM3 Örneği: Görüntü ve Videolar için Gizlilik Filtresi Oluşturma
Bu bölümde, basit bir Gradio arayüzüne gömülü görüntü ve videolar için SAM3 ile bir gizlilik filtresi oluşturacağız.
Nasıl çalıştığı şöyle:
Önce hedefi yazın: örneğin yüzler, plakalar, bilgisayar ekranları vb.
SAM3, metin isteminizle eşleşen örnekleri segmente eder ve nesne başına maskeler döndürür.
Sonra bu maskeleri birleştirir ve yalnızca maskelenen pikselleri bulanıklaştırırız.
Ardından Gradio bileşenini kullanarak bir görsel veya video yükler, bulanıklık gücü ve güveni ayarlar, sonuçları önizleyip indiririz.
Tam uygulamayı küçük adımlarla birlikte ele alacağız.
Adım 1: Bağımlılıkları kurun
Bu demoyu çalıştırmadan önce tüm önkoşulların hazır olduğundan emin olalım. Colab’de SAM3 Gizlilik Filtresi’ni çalıştırmak için en güncel Transformers kütüphanesine ve arayüz, tensör işlemleri, görüntü ve video G/Ç için birkaç çalışma zamanı kütüphanesine ihtiyacınız var. Aşağıdaki parça her şeyi tek seferde kurar.
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)Altyapı:
Her önkoşulun yaptığı şey şudur:
git+https://github.com/huggingface/transformers.git: Sam3Processor ve Sam3Model sınıfları kullanılabilir olsun diye en güncel Transformers kütüphanesini kaynaktan çeker.
torch ve torchvision: SAM3 ileri geçişini çalıştıran tensör hesaplama ve görüntü yardımcılarıdır.
accelerate: Transformers tarafından kullanılan çıkarım yardımcısıdır.
gradio: Medya yüklemek ve bulanık sonuçları önizlemek için hafif bir web arayüzüdür.
numpy, pillow: Maske/bulanıklık kompoziti için görüntü dizileri ve PIL görüntü işlemlerini içerir.
imageio[ffmpeg]: Videoları okur/yazar ve video sekmesi için MP4’ü (FFmpeg) kodlar.
Ortam kurulduktan ve facebook/sam3 yüklendikten sonra, demo kısa metin istemleriyle segmentasyon yapmanıza ve ortaya çıkan maskeleri basit bir Gradio uygulaması üzerinden görüntüler veya videolarda bulanıklaştırmanıza olanak tanır.
Not: Colab’de GPU kullanmayı planlıyorsanız, kuruluma başlamadan önce çalışma zamanını GPU’ya (T4/A100) ayarlayın. Daha hızlı bir deneyim için Colab’de A100 GPU kullandım.
Adım 2: İçe aktarımlar
Ortam hazır olduğuna göre, arayüzü, model çıkarımını, görüntü/video işlemesini ve zamanlamayı sağlayan kütüphaneleri içe aktarın. SAM3 gizlilik filtresi için ihtiyaç duyduğunuz tek modüller bunlardır.
import gradio as gr
import torch
import numpy as np
import imageio
from PIL import Image, ImageFilter
from transformers import Sam3Processor, Sam3Model
import timeAltyapı:
Artık Gradio web arayüzünü sağlar, transformers kütüphanesi SAM3’ü çalıştırır ve PyTorch çıkarımı GPU veya CPU’da yürütür. PIL görüntüleri (Gauss bulanıklığı dahil) yükleyip düzenlerken, NumPy maske dizilerini yönetir ve imageio video dosyalarını okur/yazar.
Sırada modeli yükleyip metin istemlerini bulanıklaştırabileceğiniz maskelere dönüştüren küçük bir motor inşa edeceğiz.
Adım 3: SAM3’ü yükleyin ve maskeleri tahmin edin
Ortam hazır olduğuna göre, SAM3’ü modeli bir kez yükleyen, talep üzerine metin istemli örnek segmentasyonu çalıştıran ve bulanıklaştırmada kullanılan ikili maskeleri döndüren küçük bir motor içine saralım.
Bu motorun boru hattına nasıl oturduğunu anlayalım:
Sam3PrivacyEngine.init(): Bu başlatıcı en iyi aygıtı (varsa CUDA, yoksa CPU) seçer, facebook/sam3 ağırlıklarını ve eşleştirilmiş Sam3Processor’ı yükler ve çıkarım verimli çalışsın diye modeli seçilen aygıta taşır.
Sam3PrivacyEngine.predict_masks(): Bu yöntem bir PIL görüntü ve metin isteminden model girdilerini oluşturur, gradyan yükünü önlemek için torch.no_grad() altında ileri çıkarımı çalıştırır ve çıktıları post_process_instance_segmentation ile belirlenen algılama ve maske eşiklerini, ayrıca doğru ölçekleme için orijinal hedef boyutlarını kullanarak art işlemden geçirir. Çıktı, tensörlerden NumPy dizilerine ve ardından PIL “L” maskelerine (8 bit gri tonlamalı görüntüler, mod "L"; her piksel 0–255 arası değer) dönüştürülen örnek başına segmentasyon maskeleri olarak döner.
engine = Sam3PrivacyEngine(): Bu satır, SAM3 modelinin bir kez yüklenip yeniden başlatmaya gerek kalmadan görüntüler veya video kareleri için defalarca çağrılabilmesini sağlayan tek, yeniden kullanılabilir bir motor örneği oluşturur.
Bu kendi içinde yeterli motor başlatıldıktan sonra, herhangi bir görüntü ve metin istemini örnek maskelere dönüştürebilirsiniz. Sırada bu maskeleri kullanarak seçici bulanıklaştırma uygulamak ve her şeyi Gradio arayüzüne gömmek var.
Adım 4: Bulanıklaştırma mantığı
Bu bölümde, SAM3’ün maskelerini kullanarak gizlilik uygularız. Yalnızca maskelenmiş bölgeler bulanıklaştırılır, geri kalan her şey korunur. Yeniden kullanılabilir bir Gauss bulanıklığı işleviyle başlıyor, ardından bunu görüntüler ve videolar için iki boru hattına bağlıyoruz.
Adım 4.1: Gauss bulanıklığı
Bu yardımcı, bir görüntüyü ve bir veya daha fazla PIL "L" maskesini alır, bunları tek bir birleşik maskede harmanlar ve görüntünün yalnızca maskenin beyaz (255) olduğu yerlerine bulanık bir kopyasını yapıştırır.
GaussianBlur() önce görüntünün tamamen bulanık bir sürümünü oluşturur. composite_mask ise siyah (0 = orijinali koru) ile başlatılmış bir “L” (gri tonlamalı) maskedir.
Her SAM3 maskesi için bunu birleşik maskeye yapıştırırız; böylece beyaz piksellerin (255) biriktiği yerler bulanıklaştırma uygulanacak alanlar olur.
Son olarak, composite_mask kullanarak bulanık görüntüyü orijinalin üzerine yapıştırırız; böylece yalnızca beyaz bölgeler bulanıklaşır.
final_image.paste() yöntemi yalnızca maskelenen pikselleri değiştirir, geri kalanını maksimum görsel sadakat için olduğu gibi bırakır.
Tek bir çağrıyla, yüzler, ekranlar, plakalar gibi herhangi bir bölge setini bulanıklaştırabilir, arka planları ise olduğu gibi tutabilirsiniz.
Adım 4.2: Görüntü boru hattı
Bu alt adım, girdinin normalleştirilmesinden SAM3’ten maskelerin alınmasına, ardından maskelenen piksellerin bulanıklaştırılmasına ve nihai sonucun döndürülmesine kadar uçtan uca görüntü akışını kapsar.
Önce tutarlı işleme için herhangi bir Gradio NumPy dizisini bir PIL RGB görüntüsüne dönüştürürüz.
Ardından, verilen text_prompt için SAM3 örnek maskelerini almak üzere engine.predict_masks() çağrısı yaparız.
Sonrasında, yalnızca maskelenen bölgeler bulanıklaşsın diye seçilen blur_strength ile apply_blur_pure() işlevini uygularız.
İşlemeden sonra sonucu bir png olarak kaydeder ve hem bir NumPy dizisi hem indirilebilir bir dosya döndürürüz.
Görüntü akışı tamamlandığına göre şimdi video boru hattına geçebiliriz.
Adım 4.3: Video boru hattı
Video akışı, görüntü yolunun bir yansımasıdır, ancak imageio ile kare kare akar. Her kare için segmentasyon yapar, maskelenen bölgeleri bulanıklaştırır ve H.264 kodlu bir MP4 dosyasına yazarız.
imageio.get_reader() ile dosyayı açar, kareleri yineleyip meta verilerden FPS’yi okuruz (yoksa varsayılan 24).
Sonra, her kareyi bir PIL görüntüsüne çevirir, engine.predict_masks() yöntemiyle SAM3’ten maskeleri tahmin eder ve apply_blur_pure() ile maskelenen bölgeleri bulanıklaştırırız.
Ardından, geniş uyumluluk için pixelformat='yuv420p' ve hizalama yapaylıklarını önlemek için macro_block_size=1 ile yapılandırılmış bir MP4 yazıcısına her işlenmiş kareyi ekleriz.
İşlemeden sonra, Colab testlerini seri ve zaman aşımından uzak tutmak için varsayılan olarak 60 karede (~2 saniye) durarak çıktıyı kasten budarız.
Bu video akışıyla, toplantı kayıtları, araç kamerası klipleri veya ekran yakalamalarında yalnızca bir metin istemiyle hassas bölgeleri bulanıklaştırabilirsiniz.
Adım 5: Gradio çıkarımı
Maskelenme ve bulanıklaştırma hazır olduğuna göre, herkesin bir görüntü veya video yükleyebileceği, bir metin istemi yazabileceği ve çıktıyı indirebileceği hafif bir Gradio arayüzüne her şeyi sarmalayacağız.
Gradio uygulaması, SAM3 maskeleme ve bulanıklaştırma boru hattını şu şekilde basit bir web arayüzüne gömer:
Uygulama kabuğu (gr.Blocks): Bu blok, başlıklı tek sayfalık bir Gradio uygulaması ve kullanıcıların sayfadan ayrılmadan modlar arasında geçiş yapabilmesi için biri görüntüler, diğeri videolar için iki sekme oluşturur.
Görüntü sekmesi: Girdiler arasında bir görüntü yükleyici, metin istemi için bir metin kutusu ve bulanıklık gücü ile güven için kaydırıcılar yer alır. Çıktı alanları işlenmiş bir önizleme ve indirilebilir bir PNG gösterirken, Görüntüyü Bulanıklaştır düğmesi her şeyi, maskeler için SAM3’ü çağıran ve yalnızca maskelenen piksellerde Gauss bulanıklığı uygulayan process_image’e yönlendirir.
Video sekmesi: Video bulanıklaştırma için girdiler; bir video yükleyici, metin istemi için bir metin kutusu, bulanıklık gücü ve güven için kaydırıcılar ve hızlı demolar için bir azami kare sınırı içerir. Çıktı alanları satır içi önizleme ve indirilebilir bir MP4 sunarken, Videoyu Bulanıklaştır düğmesi process_video’yu çağırarak kareleri yineleyip maskeleri tahmin eder, maskelenen bölgeleri bulanıklaştırır ve bir H.264 video kodlar.
Başlatma: demo.launch() yöntemi uygulamayı başlatır, paylaşılabilir bir bağlantı üretir ve hata ayıklama etkinleştirildiğinde ayrıntılı yığın izlerini görünür kılar.
Artık SAM3 Gizlilik Filtremiz medya (görüntü/video) yüklemeye, istemi ve eşikleri ayarlamaya ve bulanıklaştırılmış çıktıları dışa aktarmaya hazır.
Not: Bu demodaki tüm görseller ve videolar Pexels.com’dan alınmıştır ve kullanımı ücretsizdir.
Sonuç
Bu öğreticide, kısa bir istem alan, SAM3’ten örnek başına maskeler elde eden ve yalnızca bu bölgeleri görüntülerde ve MP4’lerde bulanıklaştıran bir Gradio uygulaması oluşturduk. Hızlı, açık sözlüklü ve elle çizilmiş seçimlere ya da sabit algılayıcılara ihtiyaç duymaz.
Sonraki adımlar arasında çoklu istemler, kutu istemleri ve video hızlandırmaları (kare atlama veya ölçek düşürme) eklemek olabilir. Çalıştırmaları kaydetmeyi ve pikselleştirme gibi alternatif karartmalar sunmayı da düşünebilirsiniz. Ancak, gizlilik filtreleri riski azaltsa da rızanın yerini tutmadığı için paylaşmadan önce çıktıları her zaman gözden geçirmek son derece önemlidir.
ML (Üretken Yapay Zekâ) alanında Google Developers Uzmanıyım, Kaggle 3x Expert unvanına sahibim ve 3+ yıllık teknoloji deneyimiyle Women Techmakers Elçisiyim. 2020'de bir sağlık teknolojileri girişiminin kurucu ortağı oldum ve Georgia Tech'te makine öğrenmesi alanında uzmanlaşarak bilgisayar bilimleri yüksek lisansı yapıyorum.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
API'leri ve açık kaynak kütüphanelerini kullanarak yapay zekayı yazılım uygulamalarına nasıl entegre edeceğinizi öğrenin. Yapay Zeka Mühendisi olma yolculuğunuza bugün başlayın!
SAM 3, kısa metin istemleri veya örnekler aracılığıyla bir kavramın tüm örneklerini bulabilen ve görüntü ile video genelinde piksel hassasiyetinde maskeler döndürebilen Meta’nın yeni “segment anything” modelidir. Bu, seçimleri elle çizmeden veya klasik algılayıcılar yazmadan yüzleri, plakaları veya ekranları bulanıklaştırma gibi pratik gizlilik görevleri için onu mükemmel kılar.
Bu öğreticide, SAM3 Gizlilik Filtresini bir Gradio arayüzü kullanarak Colab’de oluşturacağız. Bir görsel veya video yükleyin, bir istem yazın (ör. yüzler, plakalar) ve SAM3 yalnızca bu pikselleri bulanıklaştırabilmemiz için örnek maskeler döndürsün. Kurulum, maske üretimi, Gauss bulanıklığı uygulama ve nihai dosyaları dışa aktarmak için Gradio uygulamasını bağlama adımlarını birlikte inceleyeceğiz.
SAM3 nedir?
Segment Anything Model 3 (SAM 3), görüntü ve videoda açık sözlük algılama, segmentasyon ve izleme için Meta’nın birleştirilmiş modelidir. Her sınıf için ayrı algılayıcılar yapılandırmak yerine, kısa ifadeler veya örneklerle istem verebilir, SAM 3 ise örnek başına maskeler döndürür.
Alt yapıda, SAM 3 bir metin kodlayıcıyı ve görüntü kodlayıcıyı, DETR tarzı bir algılayıcı ve bellek bankalı SAM-2 türevi bir izleyiciyle birleştirir. Her karede, istemden kavramınıza ait maskeleri tespit eder, izleyici aracılığıyla maskeleri ileriye taşır ve yeni tespit edilen ve izlenen maskeleri o kare için nihai çıktıda birleştirir.
Kaynak: SAM3 GitHub
SAM 3; model ağırlıkları, ince ayar kodu ve değerlendirme verileriyle birlikte yayımlandı; buna, istemle yönlendirilebilen kavram segmentasyonu için SA-Co kıyaslaması da dahildir.
Meta’nın raporlarında, görüntü ve videoda açık sözlük segmentasyonunda güçlü taban çizgilerine göre ~2x kazanım gösterirken, SAM-2’nin etkileşimli güçlü yanlarını da koruduğu belirtilir.
Bu öğreticide, SAM 3 maskelerini hem görüntüler hem videolar için Gauss bulanıklığı uygulanmış bir kompozite dönüştürecek ve tümünü bir Gradio arayüzüne sarmalayacağız.
SAM3 Örneği: Görüntü ve Videolar için Gizlilik Filtresi Oluşturma
Bu bölümde, basit bir Gradio arayüzüne gömülü görüntü ve videolar için SAM3 ile bir gizlilik filtresi oluşturacağız.
Nasıl çalıştığı şöyle:
Tam uygulamayı küçük adımlarla birlikte ele alacağız.
Adım 1: Bağımlılıkları kurun
Bu demoyu çalıştırmadan önce tüm önkoşulların hazır olduğundan emin olalım. Colab’de SAM3 Gizlilik Filtresi’ni çalıştırmak için en güncel Transformers kütüphanesine ve arayüz, tensör işlemleri, görüntü ve video G/Ç için birkaç çalışma zamanı kütüphanesine ihtiyacınız var. Aşağıdaki parça her şeyi tek seferde kurar.
Her önkoşulun yaptığı şey şudur:
git+https://github.com/huggingface/transformers.git:Sam3ProcessorveSam3Modelsınıfları kullanılabilir olsun diye en güncelTransformerskütüphanesini kaynaktan çeker.torchvetorchvision: SAM3 ileri geçişini çalıştıran tensör hesaplama ve görüntü yardımcılarıdır.accelerate: Transformers tarafından kullanılan çıkarım yardımcısıdır.gradio: Medya yüklemek ve bulanık sonuçları önizlemek için hafif bir web arayüzüdür.numpy,pillow: Maske/bulanıklık kompoziti için görüntü dizileri ve PIL görüntü işlemlerini içerir.imageio[ffmpeg]: Videoları okur/yazar ve video sekmesi için MP4’ü (FFmpeg) kodlar.Ortam kurulduktan ve
facebook/sam3yüklendikten sonra, demo kısa metin istemleriyle segmentasyon yapmanıza ve ortaya çıkan maskeleri basit bir Gradio uygulaması üzerinden görüntüler veya videolarda bulanıklaştırmanıza olanak tanır.Not: Colab’de GPU kullanmayı planlıyorsanız, kuruluma başlamadan önce çalışma zamanını GPU’ya (T4/A100) ayarlayın. Daha hızlı bir deneyim için Colab’de A100 GPU kullandım.
Adım 2: İçe aktarımlar
Ortam hazır olduğuna göre, arayüzü, model çıkarımını, görüntü/video işlemesini ve zamanlamayı sağlayan kütüphaneleri içe aktarın. SAM3 gizlilik filtresi için ihtiyaç duyduğunuz tek modüller bunlardır.
Artık
Gradioweb arayüzünü sağlar,transformerskütüphanesi SAM3’ü çalıştırır vePyTorchçıkarımı GPU veya CPU’da yürütür.PILgörüntüleri (Gauss bulanıklığı dahil) yükleyip düzenlerken,NumPymaske dizilerini yönetir veimageiovideo dosyalarını okur/yazar.Sırada modeli yükleyip metin istemlerini bulanıklaştırabileceğiniz maskelere dönüştüren küçük bir motor inşa edeceğiz.
Adım 3: SAM3’ü yükleyin ve maskeleri tahmin edin
Ortam hazır olduğuna göre, SAM3’ü modeli bir kez yükleyen, talep üzerine metin istemli örnek segmentasyonu çalıştıran ve bulanıklaştırmada kullanılan ikili maskeleri döndüren küçük bir motor içine saralım.
Bu motorun boru hattına nasıl oturduğunu anlayalım:
Sam3PrivacyEngine.init(): Bu başlatıcı en iyi aygıtı (varsa CUDA, yoksa CPU) seçer,facebook/sam3ağırlıklarını ve eşleştirilmişSam3Processor’ı yükler ve çıkarım verimli çalışsın diye modeli seçilen aygıta taşır.Sam3PrivacyEngine.predict_masks(): Bu yöntem bir PIL görüntü ve metin isteminden model girdilerini oluşturur, gradyan yükünü önlemek içintorch.no_grad()altında ileri çıkarımı çalıştırır ve çıktılarıpost_process_instance_segmentationile belirlenen algılama ve maske eşiklerini, ayrıca doğru ölçekleme için orijinal hedef boyutlarını kullanarak art işlemden geçirir. Çıktı, tensörlerden NumPy dizilerine ve ardından PIL “L” maskelerine (8 bit gri tonlamalı görüntüler, mod "L"; her piksel 0–255 arası değer) dönüştürülen örnek başına segmentasyon maskeleri olarak döner.engine = Sam3PrivacyEngine(): Bu satır, SAM3 modelinin bir kez yüklenip yeniden başlatmaya gerek kalmadan görüntüler veya video kareleri için defalarca çağrılabilmesini sağlayan tek, yeniden kullanılabilir bir motor örneği oluşturur.Bu kendi içinde yeterli motor başlatıldıktan sonra, herhangi bir görüntü ve metin istemini örnek maskelere dönüştürebilirsiniz. Sırada bu maskeleri kullanarak seçici bulanıklaştırma uygulamak ve her şeyi Gradio arayüzüne gömmek var.
Adım 4: Bulanıklaştırma mantığı
Bu bölümde, SAM3’ün maskelerini kullanarak gizlilik uygularız. Yalnızca maskelenmiş bölgeler bulanıklaştırılır, geri kalan her şey korunur. Yeniden kullanılabilir bir Gauss bulanıklığı işleviyle başlıyor, ardından bunu görüntüler ve videolar için iki boru hattına bağlıyoruz.
Adım 4.1: Gauss bulanıklığı
Bu yardımcı, bir görüntüyü ve bir veya daha fazla PIL "L" maskesini alır, bunları tek bir birleşik maskede harmanlar ve görüntünün yalnızca maskenin beyaz (255) olduğu yerlerine bulanık bir kopyasını yapıştırır.
Bu işlev şöyle çalışır:
GaussianBlur()önce görüntünün tamamen bulanık bir sürümünü oluşturur.composite_maskise siyah (0 = orijinali koru) ile başlatılmış bir “L” (gri tonlamalı) maskedir.composite_maskkullanarak bulanık görüntüyü orijinalin üzerine yapıştırırız; böylece yalnızca beyaz bölgeler bulanıklaşır.final_image.paste()yöntemi yalnızca maskelenen pikselleri değiştirir, geri kalanını maksimum görsel sadakat için olduğu gibi bırakır.Tek bir çağrıyla, yüzler, ekranlar, plakalar gibi herhangi bir bölge setini bulanıklaştırabilir, arka planları ise olduğu gibi tutabilirsiniz.
Adım 4.2: Görüntü boru hattı
Bu alt adım, girdinin normalleştirilmesinden SAM3’ten maskelerin alınmasına, ardından maskelenen piksellerin bulanıklaştırılmasına ve nihai sonucun döndürülmesine kadar uçtan uca görüntü akışını kapsar.
Görüntüleri şu adım adım boru hattıyla işleriz:
text_promptiçin SAM3 örnek maskelerini almak üzereengine.predict_masks()çağrısı yaparız.blur_strengthileapply_blur_pure()işlevini uygularız.pngolarak kaydeder ve hem bir NumPy dizisi hem indirilebilir bir dosya döndürürüz.Görüntü akışı tamamlandığına göre şimdi video boru hattına geçebiliriz.
Adım 4.3: Video boru hattı
Video akışı, görüntü yolunun bir yansımasıdır, ancak
imageioile kare kare akar. Her kare için segmentasyon yapar, maskelenen bölgeleri bulanıklaştırır ve H.264 kodlu bir MP4 dosyasına yazarız.Videoları şu boru hattıyla ele alırız:
imageio.get_reader()ile dosyayı açar, kareleri yineleyip meta verilerden FPS’yi okuruz (yoksa varsayılan 24).engine.predict_masks()yöntemiyle SAM3’ten maskeleri tahmin eder veapply_blur_pure()ile maskelenen bölgeleri bulanıklaştırırız.pixelformat='yuv420p've hizalama yapaylıklarını önlemek içinmacro_block_size=1ile yapılandırılmış bir MP4 yazıcısına her işlenmiş kareyi ekleriz.Bu video akışıyla, toplantı kayıtları, araç kamerası klipleri veya ekran yakalamalarında yalnızca bir metin istemiyle hassas bölgeleri bulanıklaştırabilirsiniz.
Adım 5: Gradio çıkarımı
Maskelenme ve bulanıklaştırma hazır olduğuna göre, herkesin bir görüntü veya video yükleyebileceği, bir metin istemi yazabileceği ve çıktıyı indirebileceği hafif bir Gradio arayüzüne her şeyi sarmalayacağız.
Gradio uygulaması, SAM3 maskeleme ve bulanıklaştırma boru hattını şu şekilde basit bir web arayüzüne gömer:
gr.Blocks): Bu blok, başlıklı tek sayfalık bir Gradio uygulaması ve kullanıcıların sayfadan ayrılmadan modlar arasında geçiş yapabilmesi için biri görüntüler, diğeri videolar için iki sekme oluşturur.process_image’e yönlendirir.process_video’yu çağırarak kareleri yineleyip maskeleri tahmin eder, maskelenen bölgeleri bulanıklaştırır ve birH.264video kodlar.demo.launch()yöntemi uygulamayı başlatır, paylaşılabilir bir bağlantı üretir ve hata ayıklama etkinleştirildiğinde ayrıntılı yığın izlerini görünür kılar.Artık SAM3 Gizlilik Filtremiz medya (görüntü/video) yüklemeye, istemi ve eşikleri ayarlamaya ve bulanıklaştırılmış çıktıları dışa aktarmaya hazır.
Not: Bu demodaki tüm görseller ve videolar Pexels.com’dan alınmıştır ve kullanımı ücretsizdir.