MediaPipe Resim Segmenter görevi, görüntüleri önceden tanımlanmış öğelere göre bölgelere bölmenizi sağlar. kategorilerden en iyi şekilde yararlanabilirsiniz. Bu talimatları uygulayarak Resim Segmenter'i Python diliyle nasıl kullanacağınızı öğrenebilirsiniz. Örneğin, özellikleri, modelleri ve yapılandırma seçenekleri hakkında Bu görev için Genel Bakış'ı inceleyin.
Kod örneği
Resim Segmenter'ın örnek kodu, bu etiketin eksiksiz bir şekilde uygulanmasını sağlar. görevi görebilir. Bu kod, görevi test etmenize ve kendi resim segment uygulamanızı oluşturmaya başladınız. Bu dosyaları görüntüleyebilir, çalıştırabilir Resim Segmenter'ı 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 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
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 Resim Segmenter görevi bu görevi görebilir. Resim Segmenter için eğitilmiş mevcut modeller hakkında daha fazla bilgi için 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 Adı parametresi içinde modelin yolunu belirtin:
base_options = BaseOptions(model_asset_path=model_path)
Görevi oluşturma
MediaPipe 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. Görev yapılandırması hakkında daha fazla bilgi için
Yapılandırma seçenekleri başlıklı makaleyi inceleyin.
Bu örnekler ayrıca resimler için görev yapısı, video dosyaları ve canlı video akışları kullanılabilir.
Resim
BaseOptions = mp.tasks.BaseOptions ImageSegmenter = mp.tasks.vision.ImageSegmenter ImageSegmenterOptions = mp.tasks.vision.ImageSegmenterOptions VisionRunningMode = mp.tasks.vision.RunningMode # Create a image segmenter instance with the image mode: options = ImageSegmenterOptions( base_options=BaseOptions(model_asset_path='/path/to/model.task'), running_mode=VisionRunningMode.IMAGE, output_category_mask=True) with ImageSegmenter.create_from_options(options) as segmenter:
Video
BaseOptions = mp.tasks.BaseOptions ImageSegmenter = mp.tasks.vision.ImageSegmenter ImageSegmenterOptions = mp.tasks.vision.ImageSegmenterOptions VisionRunningMode = mp.tasks.vision.RunningMode # Create a image segmenter instance with the video mode: options = ImageSegmenterOptions( base_options=BaseOptions(model_asset_path='/path/to/model.task'), running_mode=VisionRunningMode.VIDEO, output_category_mask=True) with ImageSegmenter.create_from_options(options) as segmenter:
Canlı yayın
BaseOptions = mp.tasks.BaseOptions ImageSegmenter = mp.tasks.vision.ImageSegmenter ImageSegmenterOptions = mp.tasks.vision.ImageSegmenterOptions VisionRunningMode = mp.tasks.vision.RunningMode # Create a image segmenter instance with the live stream mode: def print_result(result: List[Image], output_image: Image, timestamp_ms: int): print('segmented masks size: {}'.format(len(result))) options = ImageSegmenterOptions( base_options=BaseOptions(model_asset_path='/path/to/model.task'), running_mode=VisionRunningMode.VIDEO, output_category_mask=True) with ImageSegmenter.create_from_options(options) as segmenter:
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 |
---|---|---|---|
running_mode |
Görev için çalışma modunu ayarlar. Üç tane var
modlar: . IMAGE: Tek resimli giriş modu. . . VIDEO: Bir videonun kodu çözülmüş karelerine yönelik mod. . . LIVE_STREAM: Giriş canlı yayını modu kameradan alınan veriler gibi. Bu modda, resultListener, sonuçları almak üzere bir dinleyici ayarlamak için çağrıldı eşzamansız olarak ayarlayabilirsiniz. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
output_category_mask |
True olarak ayarlanırsa çıkışta segmentasyon maskesi bulunur.
her piksel değeri kazanan kategoriyi gösteren bir uint8 resmi olarak
değer. |
{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
ve puan eşlemesini seçin. |
{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 |
result_callback |
Sonuç işleyiciyi segmentasyon sonuçlarını alacak şekilde ayarlar
Resim segmentleyici LIVE_STREAM modundayken eşzamansız olarak.
Yalnızca koşu modu LIVE_STREAM olarak ayarlandığında kullanılabilir |
Yok | Yok |
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. Girişiniz bir video dosyasıysa
bir web kamerasından canlı yayın yapmak için
Giriş çerçevelerinizi numpy olarak yüklemek için OpenCV
dizi'dir.
Resim
# 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)
Video
# Use OpenCV’s VideoCapture to load the input video. # Load the frame rate of the video using OpenCV’s CV_CAP_PROP_FPS # You need the frame rate to calculate the timestamp for each frame. # Loop through each frame in the video using VideoCapture#read() # Convert the frame received from OpenCV to a MediaPipe’s Image object. mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_frame_from_opencv)
Canlı yayın
# Use OpenCV’s VideoCapture to start capturing from the webcam. # Create a loop to read the latest frame from the camera using VideoCapture#read() # Convert the frame received from OpenCV to a MediaPipe’s Image object. mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_frame_from_opencv)
Resim Segmenter için verilerin hazırlanmasını gösteren bir kod örneği için kod örneği hakkında daha fazla bilgi edinin.
Görevi çalıştırma
Resim Segmenter, segment
, segment_for_video
ve segment_async
kullanır.
fonksiyonları kullanmaktır. Görüntü segmentasyonu için,
giriş verilerinin ön işlemesi, segmentasyon modelini çalıştırma ve işleme sonrası
segmentlere ayrılmış maskelere ham model çıktı verir.
Aşağıdaki kod örnekleri, görev modeliyle işlemenin nasıl yürütüleceğini gösterir.
Resim
# Perform image segmentation on the provided single image. # The image segmenter must be created with the image mode. segmented_masks = segmenter.segment(mp_image)
Video
# Perform image segmentation on the provided single image. # The image segmenter must be created with the video mode. segmented_masks = segmenter.segment_for_video(mp_image, frame_timestamp_ms)
Canlı yayın
# Send live image data to perform image segmentation. # The results are accessible via the `result_callback` provided in # the `ImageSegmenterOptions` object. # The image segmenter must be created with the live stream mode. segmenter.segment_async(mp_image, frame_timestamp_ms)
Aşağıdakileri göz önünde bulundurun:
- Video modunda veya canlı yayın modunda çalışırken şunları da yapmanız gerekir: Resim Segmenter görevine giriş çerçevesinin zaman damgasını sağlar.
- Resim veya video modelinde çalışırken Resim Segmenter görevi giriş resmini işlemeyi bitirene kadar geçerli iş parçacığını engeller veya çerçeve.
Resim Segmenter çıkarımlarının çalıştırılmasıyla 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
Resim Segmenter, Image
verilerinden oluşan bir liste oluşturur. Eğer
output_type
CATEGORY_MASK
, çıkış bir liste
uint8 resmi olarak tek segmentlere ayrılmış bir maske içerir. Piksel,
giriş resminin tanınan kategori dizinini oluşturur. output_type
ise
CONFIDENCE_MASK
ise çıkış, kategori numarası boyutunda bir vektördür. Her biri
segmentlere ayrılmış maske, [0,1]
aralığında bulunan ve
kategoriye ait pikselin güven puanı.
Aşağıdaki bölümlerde, bu görevden elde edilen çıkış verilerine örnekler gösterilmektedir:
Kategori güveni
Aşağıdaki resimlerde, bir kategori için görev çıkışının görselleştirmesi gösterilmektedir
güven maskesi oluşturabilirsiniz. Güven maskesi çıkışı,
[0, 1]
Orijinal resim ve kategori güven maskesi çıktısı. Şuradaki kaynak resim: VOC 2012'nin Paskalası veri kümesiyle birlikte kullanılamaz.
Kategori değeri
Aşağıdaki resimlerde, bir kategori için görev çıkışının görselleştirmesi gösterilmektedir
ve değer maskeniz olsun. Kategori maskesi aralığı [0, 255]
ve her piksel değeri
model çıkışının kazanan kategori dizinini temsil eder. Kazanan kategori
indeks, modelin tanıyabileceği kategoriler arasında en yüksek puana sahiptir.
Orijinal resim ve kategori maskesi çıktısı. Şuradaki kaynak resim: VOC 2012'nin Paskalası veri kümesiyle birlikte kullanılamaz.