Görüntü segmentasyon kılavuzu

Bir adamın yakın çekim fotoğrafının, adamın şeklini gösteren resim maskesinin yanında yer aldığı yan yana örnekler

MediaPipe Resim Segmentleyici görevi, önceden tanımlanmış kategorilere göre resimleri bölgelere ayırmanıza olanak tanır. Belirli nesneleri veya dokuları tanımlamak için bu işlevi kullanabilir, ardından arka plan bulanıklaştırma gibi görsel efektler uygulayabilirsiniz. Bu görev, resim verilerindeki kişileri ve özelliklerini segmentlere ayırmak için özel olarak eğitilmiş çeşitli modelleri içerir. Örneğin:

  • Kişi ve arka plan
  • Yalnızca kişinin saçları
  • Kişinin saçları, yüzü, cildi, kıyafetleri ve aksesuarları

Bu görev, tek resim veya sürekli video akışı içeren bir makine öğrenimi (ML) modeliyle görüntü verilerinde çalışır. Seçtiğiniz modele bağlı olarak, bir resimdeki nesneleri veya alanları temsil eden segmentlere ayrılmış bölgelerin listesini döndürür.

Deneyin.

Başlayın

Hedef platformunuzla ilgili bu uygulama kılavuzlarından birini uygulayarak bu görevi kullanmaya başlayın. Platforma özel bu kılavuzlar, önerilen bir model ve önerilen yapılandırma seçenekleriyle birlikte kod örneği de dahil olmak üzere bu görevin temel uygulama sürecinde size yol gösterir:

Görev ayrıntıları

Bu bölümde, bu görevin özellikleri, girişleri, çıkışları ve yapılandırma seçenekleri açıklanmaktadır.

Özellikler

  • Giriş resmi işleme: İşleme, resim döndürme, yeniden boyutlandırma, normalleştirme ve renk alanı dönüştürme işlemlerini içerir.
Görev girişleri Görev çıkışları
Giriş aşağıdaki veri türlerinden biri olabilir:
  • Sabit resimler
  • Kodu çözülmüş video kareleri
  • Canlı video feed'i
Resim Segmentleyici, belirlediğiniz yapılandırma seçeneklerine bağlı olarak aşağıdakilerden birini veya ikisini birden içerebilen segmentlere ayrılmış resim verileri döndürür:
  • CATEGORY_MASK: uint8 biçiminde resim olarak segmentlere ayrılmış bir maske içeren bir liste. Her piksel değeri, model tarafından desteklenen belirli bir segment kategorisinin parçası olup olmadığını belirtir.
  • CONFIDENCE_MASK: float32 biçiminde piksel değerlerine sahip segmentlere ayrılmış bir maske içeren kanalların listesi. Her piksel değeri, model tarafından desteklenen belirli bir kategorinin parçası olma güven düzeyini gösterir.

Yapılandırma seçenekleri

Bu görev için aşağıdaki yapılandırma seçenekleri vardır:

Seçenek Adı Açıklama Değer Aralığı Varsayılan değer
running_mode Görevin çalışma modunu ayarlar. Üç mod vardır:

RESİM: Tek resim girişleri için kullanılan mod.

VIDEO: Bir videonun kod çözülmüş karelerinin modu.

LIVE_STREAM: Kameradan alınan giriş verilerinin canlı yayını için kullanılan mod. Bu modda, sonuçları asenkron olarak alacak bir dinleyici oluşturmak için resultListener çağrılmalıdır.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask True olarak ayarlanırsa çıkış, her piksel değerinin kazanan kategori değerini gösterdiği uint8 görüntü olarak bir segmentasyon maskesi içerir. {True, False} False
output_confidence_masks True olarak ayarlanırsa çıkış, her kayan nokta değerinin kategorinin güven puanı haritasını 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
result_callback Sonuç dinleyiciyi, resim segmentörü LIVE_STREAM modundayken segmentasyon sonuçlarını asenkron olarak alacak şekilde ayarlar. Yalnızca çalışma modu LIVE_STREAM olarak ayarlandığında kullanılabilir. Yok Yok

Modeller

Resim Segmentleyici, birden fazla ML modeliyle kullanılabilir. Aşağıdaki segmentasyon modellerinin çoğu, insanların resimleriyle segmentasyon yapmak için oluşturulur ve eğitilir. Ancak DeepLab-v3 modeli, genel amaçlı bir görüntü segmentleyici olarak tasarlanmıştır. Uygulamanıza en uygun modeli seçin.

Selfie segmentasyon modeli

Bu model, bir kişinin portresini segmentlere ayırabilir ve bir resimdeki arka planı değiştirmek veya değiştirmek için kullanılabilir. Model, 0. dizinde arka plan ve 1. dizinde kişi olmak üzere iki kategori çıktısı verir. Bu modelin kare ve yatay sürümleri gibi farklı giriş şekillerine sahip sürümleri vardır. Bu sürümler, girişin her zaman aynı şekilde olduğu uygulamalar (ör. görüntülü görüşmeler) için daha verimli olabilir.

Model adı Giriş şekli Kesirli sayılaştırma türü Model Kartı Sürümler
SelfieSegmenter (kare) 256 x 256 float 16 info En son
SelfieSegmenter (yatay) 144 x 256 float 16 info En son

Saç segmentasyonu modeli

Bu model, bir kişinin resmini alır, kafasında saçların yerini tespit eder ve saçlarının görüntü segmentasyon haritasını oluşturur. Saçları yeniden renklendirmek veya başka saç efektleri uygulamak için bu modeli kullanabilirsiniz. Model aşağıdaki segmentasyon kategorilerini döndürür:

0 - background
1 - hair
Model adı Giriş şekli Kesirli sayılaştırma türü Model Kartı Sürümler
HairSegmenter 512 x 512 Yok (float32) info En son

Çok sınıflı selfie segmentasyonu modeli

Bu model, bir kişinin resmini alır, saç, cilt ve giysi gibi farklı alanlar için bölgeleri tespit eder ve bu öğeler için bir resim segmentasyon haritası oluşturur. Bu modeli, resim veya videolardaki kişilere çeşitli efektler uygulamak için kullanabilirsiniz. Model aşağıdaki segmentasyon kategorilerini döndürür:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Model adı Giriş şekli Kesirli sayılaştırma türü Model Kartı Sürümler
SelfieMulticlass (256 x 256) 256 x 256 Yok (float32) info En son

DeepLab-v3 modeli

Bu model; arka plan, kişi, kedi, köpek ve saksı bitkisi gibi çeşitli kategoriler için segmentleri tanımlar. Model, daha uzun menzilli bilgileri yakalamak için atrous spatial pyramid pooling kullanır. Daha fazla bilgi için DeepLab-v3 başlıklı makaleyi inceleyin.

Model adı Giriş şekli Kesirli sayılaştırma türü Sürümler
DeepLab-V3 257 x 257 Yok (float32) En son

Görev karşılaştırmaları

Yukarıdaki önceden eğitilmiş modellere dayalı olarak tüm ardışık düzenin görev karşılaştırmalarını aşağıda bulabilirsiniz. Gecikme sonucu, CPU / GPU kullanan Pixel 6'taki ortalama gecikmedir.

Model Adı CPU Gecikmesi GPU Gecikmesi
SelfieSegmenter (kare) 33,46 ms 35,15 ms
SelfieSegmenter (yatay) 34,19 ms 33,55 ms
HairSegmenter 57,90 ms 52,14 ms
SelfieMulticlass (256 x 256) 217,76 ms 71,24 ms
DeepLab-V3 123,93 ms 103,30 ms