MediaPipe Etkileşimli Görüntü Segmenter görevi bir görüntüdeki konumu alır, bu konumdaki bir nesnenin sınırlarını tahmin eder ve nesne için segmentasyonu görüntü verisi olarak döndürür. Bu talimatlar, Etkileşimli Resim Segmenter'i Python dilinde nasıl kullanacağınızı gösterir. Bu görevin özellikleri, modelleri ve yapılandırma seçenekleri hakkında daha fazla bilgi için Genel Bakış bölümüne bakın.
Kod örneği
Etkileşimli Resim Segmenter örnek kodu, size referans olması açısından bu görevin Python'da eksiksiz bir uygulamasını sunmaktadır. Bu kod, bu görevi test etmenize ve kendi etkileşimli görüntü segmentasyonu uygulamanızı oluşturmaya başlamanıza yardımcı olur. Etkileşimli Resim Segmenter örnek kodunu yalnızca web tarayıcınızı kullanarak görüntüleyebilir, çalıştırabilir ve düzenleyebilirsiniz.
Kurulum
Bu bölümde, geliştirme ortamınızı kurmanın önemli adımları ve projelerinizi özel olarak Etkileşimli Resim Segmenter'ı kullanacak şekilde kodlamak açıklanmaktadır. Platform sürümü gereksinimleri de dahil olmak üzere, MediaPipe görevlerini kullanmak amacıyla geliştirme ortamınızı ayarlama hakkında genel bilgileri Python için kurulum kılavuzu bölümünde bulabilirsiniz. Bu örnekle ilgili kaynak kodunu GitHub'da inceleyebilirsiniz.
Paketler
MediaPipe Etkileşimli Resim Segmenter görevi için mediapipe
paketi gerekir. Gerekli bağımlılıkları aşağıdaki komutla yükleyebilirsiniz:
$ python -m pip install mediapipe
İçe Aktarımlar
Etkileşimli Resim Segmenter görev işlevlerine erişmek için aşağıdaki sınıfları içe aktarın:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Model
MediaPipe Etkileşimli Resim Segmenter görevi, bu görevle uyumlu, eğitilmiş bir model gerektirir. Etkileşimli Resim Segmenter için eğitilmiş modeller hakkında daha fazla bilgi almak isterseniz göreve genel bakış Modeller bölümüne bakın.
Modeli seçip indirin ve ardından proje dizininizde depolayın:
model_path = '/absolute/path/to/model.tflite'
model_asset_path
parametresinde modelin yolunu aşağıda gösterildiği gibi belirtin:
base_options = BaseOptions(model_asset_path=model_path)
Görevi oluşturma
MediaPipe Etkileşimli Resim Segmenter görevi, görevi ayarlamak için create_from_options
işlevini kullanır. create_from_options
işlevi, işlenecek yapılandırma seçeneklerinin değerlerini kabul eder. Yapılandırma seçenekleri hakkında daha fazla bilgi edinmek için Yapılandırma seçenekleri bölümüne bakın.
Aşağıdaki kod bu görevin nasıl oluşturulacağını ve yapılandırılacağını gösterir.
BaseOptions = mp.tasks.BaseOptions InteractiveSegmenter = mp.tasks.vision.InteractiveSegmenter InteractiveSegmenterOptions = mp.tasks.vision.InteractiveSegmenterOptions VisionRunningMode = mp.tasks.vision.RunningMode # Create a image segmenter instance with the image mode: options = InteractiveSegmenterOptions( base_options=BaseOptions(model_asset_path='/path/to/model.task'), running_mode=VisionRunningMode.IMAGE, output_type=InteractiveSegmenterOptions.OutputType.CATEGORY_MASK) with InteractiveSegmenter.create_from_options(options) as segmenter: # segmenter is initialized and ready to use
Yapılandırma seçenekleri
Bu görev, Python uygulamaları için aşağıdaki yapılandırma seçeneklerine sahiptir:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
output_category_mask |
True olarak ayarlanırsa çıkış, uint8 resmi olarak bir segmentasyon maskesi içerir. Her piksel değeri, pikselin ilgilenilen alanda bulunan nesnenin bir parçası olup olmadığını gösterir. |
{True, False } |
False |
output_confidence_masks |
True olarak ayarlanırsa çıkış, kayan değer resmi olarak bir segmentasyon maskesi içerir. Burada her kayan değer, pikselin ilgili alanda bulunan nesnenin bir parçası olduğuna dair güveni temsil eder. |
{True, False } |
True |
display_names_locale |
Varsa görev modelinin meta verilerinde sağlanan görünen adlar için kullanılacak etiketlerin dilini ayarlar. İngilizce için varsayılan değer en şeklindedir. TensorFlow Lite Metadata Writer API'yi kullanarak özel modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz
| Yerel ayar kodu | en |
Verileri hazırlama
Girişinizi görüntü dosyası veya numpy dizisi olarak hazırlayıp mediapipe.Image
nesnesine dönüştürün.
# Load the input image from an image file. mp_image = mp.Image.create_from_file('/path/to/image') # Load the input image from a numpy array. mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)
Etkileşimli Resim Segmenter için verilerin hazırlanmasını gösteren kod örneği için kod örneğine bakın.
Görevi çalıştırma
Etkileşimli Resim Segmenter, çıkarımları tetiklemek için segment
işlevini kullanır. Görüntü segmentasyonu için bu, giriş verilerinin ön işlenmesini, segmentasyon modelini çalıştırmayı ve ham model çıkışlarının segmentlere ayrılmış maskelere son olarak işlenmesini içerir.
Aşağıdaki kod örneğinde, görev modeliyle işlemenin nasıl yürütüleceği gösterilmektedir.
RegionOfInterest = vision.InteractiveSegmenterRegionOfInterest # Perform image segmentation on the provided single image. # The image segmenter must be created with the image mode. roi = RegionOfInterest(format=RegionOfInterest.Format.KEYPOINT, keypoint=NormalizedKeypoint(x, y)) segmented_masks = segmenter.segment(mp_image, roi)
Etkileşimli Resim Segmenter çıkarımları çalıştırmayla ilgili daha kapsamlı bir örnek için kod örneğine bakın.
Sonuçları işleme ve görüntüleme
Etkileşimli Resim Segmenter'in çıkış sonuçları, Image
verilerinin listesidir ve görevi yapılandırırken ayarladığınız ayara bağlı olarak bir kategori maskesi, güven maskeleri veya her ikisini de içerebilir. output_category_mask
değerini True
olarak ayarlarsanız çıktı, uint8 görüntüsü olarak tek segmentli maske içeren bir liste olur. Piksel değeri, giriş resminin tanınan kategori dizini, ilgili alanın nesnenin bir parçası olup olmadığını gösterir. output_confidence_masks
öğesini True
olarak ayarlarsanız çıktı, ilgilenilen alandaki nesneye ait pikselin güven puanını temsil eden [0,1]
aralığındaki piksel değerlerini içeren kanalların listesi olur.
Aşağıdaki bölümlerde bu görevden elde edilen çıkış verileri daha ayrıntılı şekilde açıklanmaktadır:
Kategori maskesi
Aşağıdaki resimlerde, bir önemli noktanın belirtildiği bir kategori değeri maskesi için görev çıktısının görselleştirilmiş hali gösterilmektedir. Her bir piksel, pikselin ilgilenilen alanda bulunan nesnenin bir parçası olup olmadığını gösteren bir uint8
değeridir. İkinci resimdeki siyah beyaz daire, seçilen
ilgi alanını gösterir.
Orijinal resim ve kategori maskesi çıkışı. Pascal VOC 2012 veri kümesinden alınan kaynak resim.
Güven maskesi
Güven maskesi çıkışı, her bir görüntü giriş kanalı için [0, 1]
arasında kayan değerler içerir. Daha yüksek değerler, resim pikselinin ilgili alanda bulunan nesnenin parçası olduğuna dair daha yüksek bir güven olduğunu gösterir.