MediaPipe Etkileşimli Resim Segmenter görevi, bir görüntüdeki konumu alır ve bir nesneye döner ve nesne segmentasyonunu şu şekilde döndürür: resim verileri. Bu talimatlar, Etkileşimli Resim Segmenter'i kullanarak Android uygulamaları. Bu talimatlarda açıklanan kod örneğini şu adreste bulabilirsiniz: GitHub'a gidin. Özellikler, modeller ve yapılandırma seçenekleri hakkında daha fazla bilgi Bu görev hakkında daha fazla bilgi için Genel Bakış'ı inceleyin.
Kod örneği
MediaPipe Tasks kod örneği, bir Etkileşimli Resim Segmenterinin basit bir uygulamasıdır Android için uygulama. . Örnek, cihaz galerisinden seçilen resimlerle çalışır.
Uygulamayı kendi Android uygulamanız için başlangıç noktası olarak kullanabilir veya buna başvurabilirsiniz mevcut bir uygulamada değişiklik yaparken. Etkileşimli Resim Segmenter örnek kodu, GitHub'a gidin.
Kodu indirme
Aşağıdaki talimatlarda, örneğin yerel bir kopyasını nasıl oluşturacağınız gösterilmektedir kodu oluşturmak için git komut satırı aracını kullanın.
Örnek kodu indirmek için:
- Aşağıdaki komutu kullanarak git deposunu klonlayın:
git clone https://github.com/google-ai-edge/mediapipe-samples
- İsteğe bağlı olarak, git örneğinizi seyrek ödeme yöntemini kullanacak şekilde yapılandırın,
Böylece, yalnızca Etkileşimli Resim Segmenter örnek uygulamasına ait dosyaları kullanabilirsiniz:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/interactive_segmentation/android
Örnek kodun yerel sürümünü oluşturduktan sonra projeyi içe aktarabilirsiniz. Android Studio'ya gidip uygulamayı çalıştırın. Talimatlar için Android için Kurulum Kılavuzu.
Temel bileşenler
Aşağıdaki dosyalar bu resim için önemli kodu içeriyor segmentasyon örneği uygulaması:
- InteractiveSegmentationHelper.kt - Etkileşimli Resim Segmenter görevini başlatır, modeli ve yetki verme işlemini gerçekleştirir. seçim.
- OverlayView.kt - Segmentasyon sonuçlarını ele alır ve biçimlendirir.
Kurulum
Bu bölümde, geliştirme ortamınızı ve ayarlarınızı yönetmeyle ilgili kullanmak için projelerin kodlanması. Ş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 Android için kurulum kılavuzu.
Bağımlılıklar
Etkileşimli Resim Segmenter, com.google.mediapipe:tasks-vision
kitaplığını kullanır. Bunu ekle
dosyanızın build.gradle
dosyasına bağımlılığı
Android uygulama geliştirme projesi. Gerekli bağımlılıkları
şu kodu kullanın:
dependencies {
...
implementation 'com.google.mediapipe:tasks-vision:latest.release'
}
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ü.
Modeli seçin ve indirin, ardından proje dizininizde depolayın:
<dev-project-root>/src/main/assets
Yolu belirtmek için BaseOptions.Builder.setModelAssetPath()
yöntemini kullanın
modeli tarafından kullanılır. Bu yöntem,
bölümüne bakın.
Etkileşimli Resim Segmenter'de
örnek kod,
model, InteractiveSegmenterHelper.kt
sınıfını görüntülemek için setupInteractiveSegmenter()
işlevine ekleyin.
Görevi oluşturma
Görevi oluşturmak için createFromOptions
işlevini kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan
createFromOptions
işlevi, şunlar dahil yapılandırma seçeneklerini kabul eder:
maske çıkış türleri. Yapılandırma hakkında daha fazla bilgi için
Yapılandırmaya Genel Bakış bölümüne göz atın.
InteractiveSegmenterOptions options = InteractiveSegmenterOptions.builder() .setBaseOptions( BaseOptions.builder().setModelAssetPath("model.tflite").build()) .setOutputCategoryMask(true) .setOutputConfidenceMasks(false) .setResultListener((result, inputImage) -> { // Process the segmentation result here. }) .setErrorListener(exception -> { // Process the segmentation errors here. }) .build(); interactivesegmenter = InteractiveSegmenter.createFromOptions(context, options);
Bu görevi ayarlamayla ilgili daha ayrıntılı bir örnek için
InteractiveSegmenterHelper
setupInteractiveSegmenter()
sınıf işlevi.
Yapılandırma seçenekleri
Bu görev, Android 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 |
---|---|---|---|
outputCategoryMask |
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 |
outputConfidenceMasks |
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 |
displayNamesLocale |
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 |
errorListener |
İsteğe bağlı bir hata işleyici ayarlar. | Yok | Ayarlanmadı |
Verileri hazırlama
Etkileşimli Resim Segmenteri, resimlerle çalışır. Görev, veri girişini işler
yeniden boyutlandırma, döndürme ve değer normalleştirmesi dahil olmak üzere ön işlemeyi içerir.
Giriş resmini
com.google.mediapipe.framework.image.MPImage
nesnesini
görevi görebilir.
import com.google.mediapipe.framework.image.BitmapImageBuilder; import com.google.mediapipe.framework.image.MPImage; // Load an image on the user’s device as a Bitmap object using BitmapFactory. // Convert an Android’s Bitmap object to a MediaPipe’s Image object. MPImage mpImage = new BitmapImageBuilder(bitmap).build();
RegionOfInterest roi = RegionOfInterest.create( NormalizedKeypoint.create( normX * it.width, normY * it.height ) ); ImageSegmenterResult segmenterResult = interactivesegmenter.segment(image, roi);
Etkileşimli Resim Segmenter örnek kodunda, segment
işlevleri
InteractiveSegmenterHelper.kt
dosyası olarak kaydedebilirsiniz.
Sonuçları işleme ve görüntüleme
Çıkarım çalıştırıldığında, Etkileşimli Resim Segmenter görevi bir
ImageSegmenterResult
nesnesi
Segmentasyon görevi görebilir. Çıktının içeriğinde bir kategori maskesi,
güvenlik maskesi ya da her ikisi de
Görevi yapılandırmış demektir.
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.