MediaPipe Etkileşimli Görüntü Segmentörü görevi, bir resimdeki bir konumu alır, bu konumdaki bir nesnenin sınırlarını tahmin eder ve nesnenin segmentasyonunu resim verileri olarak döndürür. Bu talimatlarda, Etkileşimli Görüntü Segmentleyici'nin Python dilinde nasıl kullanılacağı gösterilmektedir. 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 Segmentleyici'nin örnek kodu, referans olarak kullanabileceğiniz bu görevin Python'da eksiksiz bir şekilde uygulanmasını sağlar. 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. Yalnızca web tarayıcınızı kullanarak etkileşimli resim segmentleyici örnek kodunu görüntüleyebilir, çalıştırabilir ve düzenleyebilirsiniz.
Kurulum
Bu bölümde, geliştirme ortamınızı ve kod projelerinizi özellikle Etkileşimli Resim Segmentleyici'yi kullanacak şekilde ayarlamayla ilgili temel adımlar açıklanmaktadır. Platform sürümü gereksinimleri dahil olmak üzere, geliştirme ortamınızı MediaPipe görevlerini kullanmak için ayarlama hakkında genel bilgi için Python için kurulum kılavuzu başlıklı makaleyi inceleyin. Bu örneğin kaynak kodunu GitHub'da inceleyebilirsiniz.
Paketler
MediaPipe Interactive Image Segmenter görevi için mediapipe
paketi gereklidir. Gerekli bağımlılıkları aşağıdaki komutla yükleyebilirsiniz:
$ python -m pip install mediapipe
İçe aktarılanlar
Etkileşimli Resim Segmentleyici 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 Interactive Image Segmenter görevi, bu görevle uyumlu bir eğitimli model gerektirir. Etkileşimli Resim Segmentleyici için mevcut eğitimli modeller hakkında daha fazla bilgi edinmek istiyorsanız göreve genel bakıştaki Modeller bölümüne bakın.
Modeli seçip indirin ve proje dizininizde saklayın:
model_path = '/absolute/path/to/model.tflite'
Aşağıda gösterildiği gibi, model_asset_path
parametresinde modelin yolunu belirtin:
base_options = BaseOptions(model_asset_path=model_path)
Görevi oluşturun
MediaPipe Etkileşimli Görüntü Segmentasyon görevi, görevi ayarlamak için create_from_options
işlevini kullanır. create_from_options
işlevi, yapılandırma seçeneklerinin işleyeceği değerleri kabul eder. Yapılandırma seçenekleri hakkında daha fazla bilgi için Yapılandırma seçenekleri başlıklı makaleyi inceleyin.
Aşağıdaki kodda, bu görevin nasıl oluşturulacağı ve yapılandırılacağı gösterilmektedir.
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örevde, Python uygulamaları için aşağıdaki yapılandırma seçenekleri bulunur:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan değer |
---|---|---|---|
output_category_mask |
True olarak ayarlanırsa çıkış, her piksel değerinin pikselin ilgi alanı |
{True, False } |
False |
output_confidence_masks |
True olarak ayarlanırsa çıkış, her kayan nokta değerinin pikselin ilgi alanındaki nesnenin bir parçası olduğuna dair güveni temsil ettiği, kayan nokta değeri resmi olarak bir segmentasyon maskesi içerir. |
{True, False } |
True |
display_names_locale |
Görevin modelinin meta verilerinde sağlanan görünen adlar için kullanılacak etiketlerin dilini belirler (varsa). Varsayılan değer, İngilizce için en 'tir. TensorFlow Lite Meta Veri Yazıcı API'yi kullanarak özel bir modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz
| Yer kodu | en |
Verileri hazırlama
Girişinizi resim dosyası veya numpy dizisi olarak hazırlayın, ardından 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 Görüntü Segmentleyici için verilerin hazırlanmasını gösteren bir kod örneği için kod örneğine bakın.
Görevi çalıştırma
Etkileşimli Resim Segmentleyici, çıkarım yapmak için segment
işlevini kullanır. Görüntü segmentasyonu için bu işleme, giriş verilerini ön işleme, segmentasyon modelini çalıştırma ve ham model çıkışlarını segmentlere ayrılmış maskelere dönüştürmek için işleme sonrası işleme dahildir.
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 segmentleyici çıkarımlarını çalıştırmaya dair daha kapsamlı bir örnek için kod örneğine bakın.
Sonuçları işleme ve görüntüleme
Etkileşimli Görüntü Segmentörü'nün çıkış sonuçları, Image
verilerinin bir listesidir ve görevi yapılandırırken ne ayarladığınıza bağlı olarak kategori maskesi, güven maskesi veya her ikisi de içerebilir. output_category_mask
değerini True
olarak ayarlarsanız çıkış, tek segmentli maskeyi uint8 resim olarak içeren bir liste olur. Piksel değeri, ilgi alanındaki nesnenin bir parçası olup olmadığını belirtir. Giriş resminin tanınan kategori dizini. output_confidence_masks
değerini 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 bir kanal listesidir.
Aşağıdaki bölümlerde bu görevin çıkış verileri daha ayrıntılı olarak açıklanmıştır:
Kategori maskesi
Aşağıdaki resimlerde, ilgi alanı noktası alanı belirtilen bir kategori değeri maskesi için görev çıktısının görselleştirmesi gösterilmektedir. Her piksel, pikselin ilgi alanı içinde bulunan nesnenin bir parçası olup olmadığını belirten 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 kaynak resim.
Güven maskesi
Güven maskesinin çıkışı, her görüntü giriş kanalı için [0, 1]
arasında değişen kayan nokta değerleri içerir. Daha yüksek değerler, resim pikselin ilgi alanındaki nesnenin bir parçası olduğuna dair daha yüksek bir güven düzeyini gösterir.