Python için etkileşimli resim segmentasyon kılavuzu

MediaPipe Etkileşimli Resim Segmenter görevi, bir görüntüdeki konumu alır ve bir nesneye karşılık gelir ve nesnenin segmentasyonunu görüntü olarak döndürür dışı verilerdir. Bu talimatlar, Python ile Etkileşimli Resim Segmenter'i nasıl kullanacağınızı gösterir dili'ne dokunun. Özellikler, modeller ve yapılandırma hakkında daha fazla bilgi için bu görevin seçenekleri için Genel Bakış'ı inceleyin.

Kod örneği

Etkileşimli Resim Segmenter için örnek kodu, bu etiketin eksiksiz bir şekilde uygulanmasını sağlar görevi görebilir. Bu kod, görevi test etmenize ve kendi etkileşimli görüntü segmentasyon uygulamanızı oluşturmaya başladınız. Şunları yapabilirsiniz: Etkileşimli Resim Segmenter'i görüntüleyin, çalıştırın ve düzenleyin örnek kod yalnızca web tarayıcınızı kullanarak.

Kurulum

Bu bölümde, geliştirme ortamınızı ve ayarlarınızı yönetmeyle ilgili kullanmak için özel olarak projeleri kodlayabilir. Şu konularda genel bilgi için: dahil olmak üzere MediaPipe görevlerini kullanmak için geliştirme ortamınızı daha fazla bilgi için Python kurulum kılavuzu. Bu örneğin kaynak kodunu şurada inceleyebilirsiniz: GitHub

Paketler

MediaPipe Etkileşimli Resim Segmenter görevi için mediapipe paketi gerekir. Google Etiket Yöneticisi'ni kullanarak bağımlılıklarını görmek için şu komutu kullanın:

$ python -m pip install mediapipe

İçe aktarılanlar

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örevi görebilir. Etkileşimli Resim Segmenter için eğitilmiş modeller hakkında daha fazla bilgi için bkz. göreve genel bakış Modeller bölümüne.

Modeli seçin ve indirin, ardından proje dizininizde depolayın:

model_path = '/absolute/path/to/model.tflite'

Aşağıda gösterildiği gibi, model_asset_path parametresi içinde modelin yolunu belirtin aşağıda bulabilirsiniz:

base_options = BaseOptions(model_asset_path=model_path)

Görevi oluşturma

MediaPipe Etkileşimli Resim Segmenter görevi aşağıdaki işlemleri yapmak için create_from_options işlevini kullanır: görevi ayarlayın. create_from_options işlevi, değerleri kabul eder tercih edebilirsiniz. Yapılandırma hakkında daha fazla bilgi 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çeneklerini içerir:

Seçenek Adı Açıklama Değer Aralığı Varsayılan Değer
output_category_mask True olarak ayarlanırsa çıkışta segmentasyon maskesi bulunur. Bu bir uint8 resmi gibi, burada her bir piksel değeri pikselin alakalı bölgede bulunan nesne. {True, False} False
output_confidence_masks True olarak ayarlanırsa çıkışta segmentasyon maskesi bulunur. her kayan değerin güveni temsil ettiği bir kayan değer resmi olarak pikselin ilgili alanda bulunan nesnenin parçası olduğunu doğrulayın. {True, False} True
display_names_locale görev modelinin meta verileri (varsa). Şunun için varsayılan: en İngilizce. Özel bir modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz TensorFlow Lite Metadata Writer API'yi kullanarak Yerel ayar kodu en

Verileri hazırlama

Girişinizi bir görüntü dosyası veya Numpy dizisi olarak hazırlayın ve daha sonra bunu bir 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)
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ği hakkında daha fazla bilgi edinin.

Sonuçları işleme ve görüntüleme

Etkileşimli Resim Segmenteri için çıkış sonuçları, Image verilerinden oluşan bir listedir ve ayarlarınıza bağlı olarak bir kategori maskesi, güven maskesi veya her ikisini birden dahil edebilirsiniz Görevi yapılandırdığınızda. Mevcut output_category_mask dilinden True diline, çıkış tekli içeren bir liste segmentli maskeyi uint8 resmi olarak kullanabilirsiniz. Piksel değeri, bir nesne olacaktır. giriş resminin tanınan kategori dizinini oluşturur. Eğer output_confidence_masks değerini True olarak ayarlarsanız çıkış, kanalların bir listesi olur [0,1] aralığında güveni temsil eden piksel değerleri içeren ilgili alandaki nesneye ait pikselin puanı.

Aşağıdaki bölümlerde, bu görevden elde edilen çıkış verileri daha ayrıntılı olarak açıklanmaktadır:

Kategori maskesi

Aşağıdaki resimlerde, bir kategori için görev çıkışının görselleştirmesi gösterilmektedir değer maskesi oluşturmanız gerekir. Her piksel bir uint8 pikselin, alanında bulunan nesnenin bir parçası olup olmadığını gösteren değer ilgi alanı. İkinci resimdeki siyah beyaz daire, seçilen önemli bir noktadır.

Orijinal resim ve kategori maskesi çıktısı. Şuradaki kaynak resim: VOC 2012'nin Paskalası veri kümesiyle birlikte kullanılamaz.

Güven maskesi

Güven maskesinin çıktısı, şunlar için [0, 1] arasında kayan noktalı değerler içerir: her bir resim giriş kanalına bağlanır. Daha yüksek değerler, resim pikseli, ilgilenilen alanda bulunan nesnenin bir parçasıdır.