Tugas MediaPipe Image Segmenter memungkinkan Anda membagi gambar menjadi beberapa area berdasarkan kategori yang telah ditentukan. Anda dapat menggunakan fungsi ini untuk mengidentifikasi objek atau tekstur tertentu, lalu menerapkan efek visual seperti pemburaman latar belakang. Tugas ini mencakup beberapa model yang dilatih secara khusus untuk menyegmentasikan orang dan fitur mereka dalam data gambar, termasuk:
- Orang dan latar belakang
- Hanya rambut orang
- Rambut, wajah, kulit, pakaian, dan aksesori orang
Tugas ini beroperasi pada data gambar dengan model machine learning (ML) dengan gambar tunggal atau streaming video berkelanjutan. Fungsi ini menghasilkan daftar area yang tersegmentasi, yang mewakili objek atau area dalam gambar, bergantung pada model yang Anda pilih.
Mulai
Mulai gunakan tugas ini dengan mengikuti salah satu panduan penerapan ini untuk platform target Anda. Panduan khusus platform ini akan memandu Anda dalam penerapan dasar tugas ini, termasuk model yang direkomendasikan, dan contoh kode dengan opsi konfigurasi yang direkomendasikan:
- Android - Contoh kode - Panduan
- Python - Panduan Contoh kode
- Web - Contoh kode - Panduan
Detail tugas
Bagian ini menjelaskan kemampuan, input, output, dan opsi konfigurasi tugas ini.
Fitur
- Pemrosesan gambar input - Pemrosesan mencakup rotasi gambar, pengubahan ukuran, normalisasi, dan konversi ruang warna.
Input tugas | Output tugas |
---|---|
Input dapat berupa salah satu jenis data berikut:
|
Image Segmenter menghasilkan data gambar yang tersegmentasi, yang dapat mencakup satu atau
dua hal berikut, bergantung pada opsi konfigurasi yang Anda tetapkan:
|
Opsi konfigurasi
Tugas ini memiliki opsi konfigurasi berikut:
Nama Opsi | Deskripsi | Rentang Nilai | Nilai Default |
---|---|---|---|
running_mode |
Menetapkan mode berjalan untuk tugas. Ada tiga
mode: GAMBAR: Mode untuk input gambar tunggal. VIDEO: Mode untuk frame video yang didekode. LIVE_STREAM: Mode untuk live stream data input, seperti dari kamera. Dalam mode ini, resultListener harus dipanggil untuk menyiapkan pemroses guna menerima hasil secara asinkron. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
output_category_mask |
Jika ditetapkan ke True , output akan menyertakan mask segmentasi
sebagai gambar uint8, dengan setiap nilai piksel menunjukkan nilai kategori
pemenang. |
{True, False } |
False |
output_confidence_masks |
Jika ditetapkan ke True , output akan menyertakan mask segmentasi
sebagai gambar nilai float, dengan setiap nilai float mewakili peta skor
keyakinan kategori. |
{True, False } |
True |
display_names_locale |
Menetapkan bahasa label yang akan digunakan untuk nama tampilan yang diberikan dalam
metadata model tugas, jika tersedia. Default-nya adalah en untuk
bahasa Inggris. Anda dapat menambahkan label yang dilokalkan ke metadata model kustom
menggunakan TensorFlow Lite Metadata Writer API |
Kode lokalitas | id |
result_callback |
Menetapkan pemroses hasil untuk menerima hasil segmentasi
secara asinkron saat pemisah gambar berada dalam mode LIVE_STREAM .
Hanya dapat digunakan jika mode berjalan disetel ke LIVE_STREAM |
T/A | T/A |
Model
Image Segmenter dapat digunakan dengan lebih dari satu model ML. Sebagian besar model segmentasi berikut dibuat dan dilatih untuk melakukan segmentasi dengan gambar manusia. Namun, model DeepLab-v3 dibuat sebagai segmentator gambar umum. Pilih model yang paling sesuai untuk aplikasi Anda.
Model segmentasi selfie
Model ini dapat menyegmentasikan potret seseorang, dan dapat digunakan untuk mengganti atau memodifikasi latar belakang dalam gambar. Model menghasilkan dua kategori, latar belakang pada indeks 0 dan orang pada indeks 1. Model ini memiliki versi dengan bentuk input yang berbeda, termasuk versi persegi dan versi lanskap yang mungkin lebih efisien untuk aplikasi dengan input yang selalu berbentuk seperti itu, seperti panggilan video.
Nama model | Bentuk input | Jenis kuantisasi | Kartu Model | Versi |
---|---|---|---|---|
SelfieSegmenter (persegi) | 256 x 256 | float 16 | info | Terbaru |
SelfieSegmenter (lanskap) | 144 x 256 | float 16 | info | Terbaru |
Model segmentasi rambut
Model ini mengambil gambar seseorang, menemukan rambut di kepalanya, dan menghasilkan peta segmentasi gambar untuk rambutnya. Anda dapat menggunakan model ini untuk mengubah warna rambut atau menerapkan efek rambut lainnya. Model menghasilkan kategori segmentasi berikut:
0 - background
1 - hair
Nama model | Bentuk input | Jenis kuantisasi | Kartu Model | Versi |
---|---|---|---|---|
HairSegmenter | 512 x 512 | Tidak ada (float32) | info | Terbaru |
Model segmentasi selfie multi-class
Model ini mengambil gambar seseorang, menemukan area untuk berbagai area seperti rambut, kulit, dan pakaian, serta menghasilkan peta segmentasi gambar untuk item ini. Anda dapat menggunakan model ini untuk menerapkan berbagai efek pada orang dalam gambar atau video. Model menghasilkan kategori segmentasi berikut:
0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Nama model | Bentuk input | Jenis kuantisasi | Kartu Model | Versi |
---|---|---|---|---|
SelfieMulticlass (256 x 256) | 256 x 256 | Tidak ada (float32) | info | Terbaru |
Model DeepLab-v3
Model ini mengidentifikasi segmen untuk sejumlah kategori, termasuk latar belakang, orang, kucing,, dan tanaman dalam pot. Model ini menggunakan pooling piramida spasial atrous untuk menangkap informasi rentang yang lebih panjang. Untuk informasi selengkapnya, lihat DeepLab-v3.
Nama model | Bentuk input | Jenis kuantisasi | Versi |
---|---|---|---|
DeepLab-V3 | 257 x 257 | Tidak ada (float32) | Terbaru |
Tolok ukur tugas
Berikut adalah benchmark tugas untuk seluruh pipeline berdasarkan model pre-trained di atas. Hasil latensi adalah latensi rata-rata di Pixel 6 yang menggunakan CPU / GPU.
Nama Model | Latensi CPU | Latensi GPU |
---|---|---|
SelfieSegmenter (persegi) | 33,46 md | 35,15 md |
SelfieSegmenter (lanskap) | 34,19 md | 33,55 md |
HairSegmenter | 57,90 md | 52,14 md |
SelfieMulticlass (256 x 256) | 217,76 mdtk | 71,24 md |
DeepLab-V3 | 123,93 md | 103,30 md |