Tugas MediaPipe Object Detector memungkinkan Anda mendeteksi keberadaan dan lokasi beberapa class objek dalam gambar atau video. Misalnya, pendeteksi objek dapat menemukan dalam gambar. Tugas ini beroperasi pada data gambar dengan model machine learning (ML), yang menerima data statis atau streaming video berkelanjutan sebagai input dan mengirimkan daftar hasil deteksi. Setiap hasil deteksi mewakili objek yang muncul dalam gambar atau video.
Mulai
Mulailah menggunakan tugas ini dengan mengikuti salah satu panduan penerapan ini untuk platform yang sedang Anda kerjakan:
- Android - Contoh kode - Panduan
- Python - Contoh kode - Panduan
- Web - Contoh kode - Panduan
- iOS - Contoh kode - Panduan
Panduan khusus platform ini akan memandu Anda dalam menerapkan dasar tugas ini, termasuk model yang direkomendasikan, dan contoh kode dengan opsi konfigurasi yang direkomendasikan.
Detail tugas
Bagian ini menjelaskan kemampuan, input, dan output tugas ini.
Fitur
- Pemrosesan gambar input - Pemrosesan mencakup rotasi gambar, pengubahan ukuran, normalisasi, dan konversi ruang warna.
- Lokalitas peta label - Menyetel bahasa yang digunakan untuk nama tampilan
- Batas skor - Memfilter hasil berdasarkan skor prediksi.
- Deteksi top-k - Memfilter hasil deteksi angka.
- Daftar label dan daftar tolak yang diizinkan - Menentukan kategori yang terdeteksi.
Input tugas | Output tugas |
---|---|
Object Detector API menerima input dari salah satu jenis data berikut:
|
Object Detector API menampilkan hasil berikut untuk objek yang terdeteksi:
|
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: IMAGE: Mode untuk input gambar tunggal. VIDEO: Mode untuk frame video yang didekode. LIVE_STREAM: Mode untuk livestream data input, seperti dari kamera. Dalam mode ini, resultListener harus dipanggil untuk menyiapkan pemroses yang menerima hasil secara asinkron. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names |
Menetapkan bahasa label yang akan digunakan untuk nama tampilan yang diberikan dalam
metadata model tugas, jika tersedia. Defaultnya adalah en untuk bahasa Inggris. Anda dapat menambahkan label yang dilokalkan ke metadata model kustom menggunakan TensorFlow Lite Metadata Writer API
|
Kode lokal | id |
max_results |
Menetapkan jumlah maksimum opsional hasil deteksi dengan skor teratas yang akan ditampilkan. | Semua bilangan positif | -1 (semua hasil ditampilkan) |
score_threshold |
Menetapkan nilai minimum skor prediksi yang menggantikan skor yang diberikan dalam metadata model (jika ada). Hasil di bawah nilai ini ditolak. | Semua float | Tidak ditetapkan |
category_allowlist |
Menetapkan daftar opsional nama kategori yang diizinkan. Jika tidak kosong, hasil deteksi yang nama kategorinya tidak ada dalam kumpulan ini akan difilter. Nama kategori duplikat atau tidak diketahui akan diabaikan.
Opsi ini sama-sama bersifat eksklusif dengan category_denylist dan menggunakan
keduanya akan menghasilkan error. |
String apa pun | Tidak ditetapkan |
category_denylist |
Menetapkan daftar opsional nama kategori yang tidak diizinkan. Jika tidak kosong, hasil deteksi yang nama kategorinya ada dalam kumpulan ini akan difilter. Nama kategori duplikat atau tidak diketahui akan diabaikan. Opsi ini sama-sama bersifat eksklusif dengan category_allowlist dan menggunakan keduanya akan menghasilkan error. |
String apa pun | Tidak ditetapkan |
Model
Object Detector API mengharuskan model deteksi objek untuk didownload dan disimpan di direktori project Anda. Jika Anda belum memiliki model, mulailah dengan model default yang direkomendasikan. Model lain yang disajikan di bagian ini menimbulkan kompromi antara latensi dan akurasi.
Model EfficientDet-Lite0 (Direkomendasikan)
Model EfficientDet-Lite0 menggunakan backbone EfficientNet-Lite0 dengan ukuran input 320x320 dan jaringan fitur BiFPN. Model ini dilatih dengan set data COCO, set data deteksi objek skala besar yang berisi 1,5 juta instance objek dan 80 label objek. Lihat daftar lengkap label yang didukung. EfficientDet-Lite0 tersedia sebagai int8, float16, atau float32. Model ini direkomendasikan karena mencapai keseimbangan antara latensi dan akurasi. Keduanya cukup akurat dan ringan untuk banyak kasus penggunaan.
Nama model | Bentuk input | Jenis kuantisasi | Versions |
---|---|---|---|
EfficientDet-Lite0 (int8) | 320 x 320 | int8 | Terbaru |
EfficientDet-Lite0 (float 16) | 320 x 320 | float 16 | Terbaru |
EfficientDet-Lite0 (float 32) | 320 x 320 | Tidak ada (float32) | Terbaru |
Model EfficientDet-Lite2
Model EfficientDet-Lite2 menggunakan backbone EfficientNet-Lite2 dengan ukuran input 448x448 dan jaringan fitur BiFPN. Model ini dilatih dengan set data COCO, set data deteksi objek skala besar yang berisi 1,5 juta instance objek dan 80 label objek. Lihat daftar lengkap label yang didukung. EfficientDet-Lite2 tersedia sebagai model int8, float16, atau float32. Model ini umumnya lebih akurat daripada EfficientDet-Lite0, tetapi juga lebih lambat dan memerlukan lebih banyak memori. Model ini cocok untuk kasus penggunaan ketika akurasi merupakan prioritas yang lebih besar untuk kecepatan dan ukuran.
Nama model | Bentuk input | Jenis kuantisasi | Versions |
---|---|---|---|
EfficientDet-Lite2 (int8) | 448 x 448 | int8 | Terbaru |
EfficientDet-Lite2 (float 16) | 448 x 448 | float 16 | Terbaru |
EfficientDet-Lite2 (float 32) | 448 x 448 | Tidak ada (float32) | Terbaru |
Model SSD MobileNetV2
Model SSD MobileNetV2 menggunakan backbone MobileNetV2 dengan ukuran input 256x256 dan jaringan fitur SSD. Model ini dilatih dengan set data COCO, set data deteksi objek skala besar yang berisi 1,5 juta instance objek dan 80 label objek. Lihat daftar lengkap label yang didukung. SSD MobileNetV2 tersedia sebagai model int8 dan float 32. Model ini lebih cepat dan lebih ringan daripada EfficientDet-Lite0, tetapi juga umumnya kurang akurat. Model ini cocok untuk kasus penggunaan yang memerlukan model yang cepat dan ringan yang mengorbankan beberapa akurasi.
Nama model | Bentuk input | Jenis kuantisasi | Versions |
---|---|---|---|
SSDMobileNet-V2 (int8) | 256 x 256 | int8 | Terbaru |
SSDMobileNet-V2 (float 32) | 256 x 256 | Tidak ada (float32) | Terbaru |
Metadata dan persyaratan model
Bagian ini menjelaskan persyaratan untuk model kustom jika Anda memutuskan untuk membangun model yang akan digunakan dengan tugas ini. Model kustom harus dalam format TensorFlow Lite dan harus menyertakan metadata yang menjelaskan parameter operasi model.
Persyaratan desain
Input | Bentuk | Deskripsi |
---|---|---|
Gambar input | Tensor float32 dari bentuk[1, tinggi, lebar, 3] | Gambar input yang dinormalisasi. |
Output | Bentuk | Deskripsi |
---|---|---|
detection_boxes |
Tensor float32 dari bentuk [1, num_boxes, 4] | Lokasi kotak setiap objek yang terdeteksi. |
detection_classes |
Tensor float32 dari bentuk [1, num_boxes] | Indeks nama class untuk setiap objek yang terdeteksi. |
detection_scores |
Tensor float32 dari bentuk [1, num_boxes] | Skor prediksi untuk setiap objek yang terdeteksi. |
num_boxes |
Tensor float32 ukuran 1 | Jumlah kotak yang terdeteksi. |
Persyaratan metadata
Parameter | Deskripsi | Deskripsi |
---|---|---|
input_norm_mean |
Nilai rata-rata yang digunakan dalam normalisasi tensor input. | Gambar input yang dinormalisasi. |
input_norm_std |
Norma medan yang digunakan dalam normalisasi tensor input. | Lokasi kotak setiap objek yang terdeteksi. |
label_file_paths |
Jalur ke file label tensor kategori. Jika model tidak memiliki file label, teruskan daftar kosong. | Indeks nama class untuk setiap objek yang terdeteksi. |
score_calibration_md |
Informasi tentang operasi kalibrasi skor pada tensor klasifikasi. Parameter ini tidak diperlukan jika model tidak menggunakan kalibrasi skor. |
Skor prediksi untuk setiap objek yang terdeteksi. |
num_boxes |
Tensor float32 ukuran 1 | Jumlah kotak yang terdeteksi. |
Tolok ukur tugas
Berikut adalah benchmark tugas untuk model terlatih di atas. Hasil latensi adalah latensi rata-rata di Pixel 6 yang menggunakan CPU / GPU.
Nama Model | Latensi CPU | Latensi GPU |
---|---|---|
Model float32 EfficientDet-Lite0 | 61,30 md | 27,83 md |
Model float16 EfficientDet-Lite0 | 53,97 md | 27,97 md |
Model int8 EfficientDet-Lite0 | 29,31 md | - |
Model float32 EfficientDet-Lite2 | 197,98 md | 41,15 md |
Model float16 EfficientDet-Lite2 | 198,77 md | 47,31 md |
Model int8 EfficientDet-Lite2 | 70,91 md | - |
Model float32 SSD MobileNetV2 | 36,30 md | 24,01 md |
Model float16 SSD MobileNetV2 | 37,35 md | 28,16 md |