Tugas MediaPipe Object Detector memungkinkan Anda mendeteksi kehadiran dan lokasi beberapa class objek dalam gambar atau video. Misalnya, detector objek dapat menemukan dalam gambar. Tugas ini beroperasi pada data gambar dengan model machine learning (ML), menerima data statis atau streaming video kontinu sebagai input dan menghasilkan daftar hasil deteksi. Setiap hasil deteksi mewakili objek yang muncul dalam gambar atau video.
Mulai
Mulai gunakan tugas ini dengan mengikuti salah satu panduan penerapan berikut untuk platform yang Anda gunakan:
- Android - Contoh kode - Panduan
- Python - Contoh kode - Panduan
- Web - Contoh kode - Panduan
- iOS - Contoh kode - Panduan
Panduan khusus platform ini akan memandu Anda melakukan implementasi 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.
- Label map locale - Menetapkan bahasa yang digunakan untuk nama tampilan
- Batas skor - Memfilter hasil berdasarkan skor prediksi.
- Deteksi top-k - Memfilter hasil deteksi angka.
- Daftar yang diizinkan dan ditolak label - Tentukan 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: 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 |
display_names |
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 |
max_results |
Menetapkan jumlah maksimum opsional hasil deteksi dengan skor tertinggi yang akan ditampilkan. | Angka positif apa pun | -1 (semua hasil ditampilkan) |
score_threshold |
Menetapkan nilai minimum skor prediksi yang menggantikan nilai yang diberikan dalam metadata model (jika ada). Hasil di bawah nilai ini akan 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 dikenal akan diabaikan.
Opsi ini saling 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 set ini akan difilter
keluar. Nama kategori duplikat atau tidak dikenal akan diabaikan. Opsi ini saling
eksklusif dengan category_allowlist dan menggunakan keduanya akan menyebabkan error. |
String apa pun | Tidak ditetapkan |
Model
Object Detector API memerlukan model deteksi objek untuk didownload dan disimpan di direktori project Anda. Jika Anda belum memiliki model, mulai dengan model default yang direkomendasikan. Model lain yang disajikan di bagian ini membuat 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 berskala 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. Metode ini cukup akurat dan ringan untuk banyak kasus penggunaan.
Nama model | Bentuk input | Jenis kuantisasi | Versi |
---|---|---|---|
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 berskala 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 lebih intensif memori. Model ini sesuai untuk kasus penggunaan saat akurasi lebih diprioritaskan daripada kecepatan dan ukuran.
Nama model | Bentuk input | Jenis kuantisasi | Versi |
---|---|---|---|
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 berskala 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 sesuai untuk kasus penggunaan yang memerlukan model cepat dan ringan yang mengorbankan beberapa akurasi.
Nama model | Bentuk input | Jenis kuantisasi | Versi |
---|---|---|---|
SSDMobileNet-V2 (int8) | 256 x 256 | int8 | Terbaru |
SSDMobileNet-V2 (float 32) | 256 x 256 | Tidak ada (float32) | Terbaru |
Persyaratan dan metadata model
Bagian ini menjelaskan persyaratan untuk model kustom jika Anda memutuskan untuk mem-build model yang akan digunakan dengan tugas ini. Model kustom harus dalam format TensorFlow Lite dan harus menyertakan metadata yang menjelaskan parameter pengoperasian model.
Persyaratan desain
Input | Bentuk | Deskripsi |
---|---|---|
Gambar input | Tensor float32 dengan bentuk [1, tinggi, lebar, 3] | Gambar input yang dinormalisasi. |
Output | Bentuk | Deskripsi |
---|---|---|
detection_boxes |
Tensor float32 dengan bentuk [1, num_boxes, 4] | Lokasi kotak setiap objek yang terdeteksi. |
detection_classes |
Tensor float32 dengan bentuk [1, num_boxes] | Indeks nama class untuk setiap objek yang terdeteksi. |
detection_scores |
Tensor float32 dengan bentuk [1, num_boxes] | Skor prediksi untuk setiap objek yang terdeteksi. |
num_boxes |
Tensor float32 berukuran 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 kolom 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 dalam tensor klasifikasi. Parameter ini tidak diperlukan jika model tidak menggunakan kalibrasi score . |
Skor prediksi untuk setiap objek yang terdeteksi. |
num_boxes |
Tensor float32 berukuran 1 | Jumlah kotak yang terdeteksi. |
Tolok ukur tugas
Berikut adalah tolok ukur 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 SSD MobileNetV2 float32 | 36,30 md | 24,01 md |
Model SSD MobileNetV2 float16 | 37,35 md | 28,16 md |