Dengan adanya gambar atau aliran video, model deteksi objek dapat mengidentifikasi kumpulan objek yang diketahui yang mungkin ada dan memberikan informasi tentang posisinya dalam gambar.
Misalnya, tangkapan layar dari aplikasi contoh ini menunjukkan bagaimana dua objek telah dikenali dan posisinya dianotasi:
Memulai
Untuk mempelajari cara menggunakan deteksi objek di aplikasi seluler, jelajahi Contoh aplikasi dan panduan .
Jika Anda menggunakan platform selain Android atau iOS, atau jika Anda sudah terbiasa dengan TensorFlow Lite API , Anda dapat mendownload model deteksi objek awal kami dan label yang menyertainya.
Unduh model pemula dengan Metadata
Untuk informasi lebih lanjut tentang Metadata dan bidang terkait (misalnya: labels.txt
) lihat Membaca metadata dari model
Jika Anda ingin melatih model deteksi kustom untuk tugas Anda sendiri, lihat Kustomisasi model .
Untuk kasus penggunaan berikut, Anda harus menggunakan jenis model yang berbeda:
- Memprediksi label tunggal mana yang paling mungkin diwakili oleh gambar (lihat klasifikasi gambar )
- Memprediksi komposisi gambar, misalnya subjek versus latar belakang (lihat segmentasi )
Contoh aplikasi dan panduan
Jika Anda baru mengenal TensorFlow Lite dan bekerja dengan Android atau iOS, sebaiknya jelajahi aplikasi contoh berikut yang dapat membantu Anda memulai.
Android
Anda dapat memanfaatkan API out-of-box dari TensorFlow Lite Task Library untuk mengintegrasikan model deteksi objek hanya dalam beberapa baris kode. Anda juga dapat membuat pipeline inferensi kustom Anda sendiri menggunakan TensorFlow Lite Interpreter Java API .
Contoh Android di bawah ini mendemonstrasikan implementasi untuk kedua metode tersebut sebagai lib_task_api dan lib_interpreter .
iOS
Anda dapat mengintegrasikan model menggunakan TensorFlow Lite Interpreter Swift API . Lihat contoh iOS di bawah.
Deskripsi model
Bagian ini menjelaskan tanda tangan untuk model Single-Shot Detector yang dikonversi ke TensorFlow Lite dari TensorFlow Object Detection API .
Model deteksi objek dilatih untuk mendeteksi keberadaan dan lokasi beberapa kelas objek. Misalnya, model mungkin dilatih dengan gambar yang berisi berbagai potongan buah, bersama dengan label yang menentukan kelas buah yang mereka wakili (misalnya apel, pisang, atau stroberi), dan data yang menentukan di mana setiap objek muncul. foto.
Ketika sebuah gambar kemudian diberikan ke model, itu akan menampilkan daftar objek yang dideteksi, lokasi kotak pembatas yang berisi setiap objek, dan skor yang menunjukkan keyakinan bahwa pendeteksian itu benar.
Masukan Tanda Tangan
Model mengambil gambar sebagai input.
Mari kita asumsikan gambar yang diharapkan adalah 300x300 piksel, dengan tiga saluran (merah, biru, dan hijau) per piksel. Ini harus diumpankan ke model sebagai buffer yang diratakan dengan nilai 270.000 byte (300x300x3). Jika model dikuantisasi , setiap nilai harus berupa byte tunggal yang mewakili nilai antara 0 dan 255.
Anda dapat melihatkode aplikasi contoh kami untuk memahami cara melakukan pemrosesan awal ini di Android.
Output Signature
Model mengeluarkan empat larik, dipetakan ke indeks 0-4. Larik 0, 1, dan 2 mendeskripsikan N
objek yang terdeteksi, dengan satu elemen di setiap larik sesuai dengan setiap objek.
Indeks | Nama | Deskripsi |
---|---|---|
0 | Lokasi | Array multidimensi nilai floating point [N] [4] antara 0 dan 1, array dalam mewakili kotak pembatas dalam bentuk [atas, kiri, bawah, kanan] |
1 | Kelas | Array bilangan bulat N (keluaran sebagai nilai floating point) masing-masing menunjukkan indeks label kelas dari file label |
2 | Skor | Array nilai floating point N antara 0 dan 1 mewakili probabilitas bahwa kelas terdeteksi |
3 | Jumlah deteksi | Nilai bilangan bulat dari N |
Misalnya, bayangkan seorang model telah dilatih untuk mendeteksi apel, pisang, dan stroberi. Gambar yang disediakan akan menampilkan sejumlah hasil deteksi - dalam contoh ini, 5.
Kelas | Skor | Lokasi |
---|---|---|
apel | 0.92 | [18, 21, 57, 63] |
pisang | 0.88 | [100, 30, 180, 150] |
Stroberi | 0.87 | [7, 82, 89, 163] |
pisang | 0.23 | [42, 66, 57, 83] |
apel | 0.11 | [6, 42, 31, 58] |
Skor kepercayaan
Untuk menginterpretasikan hasil tersebut, kita dapat melihat skor dan lokasi untuk setiap objek yang terdeteksi. Skor tersebut berupa angka antara 0 dan 1 yang menunjukkan keyakinan bahwa objek benar-benar terdeteksi. Semakin dekat angkanya dengan 1, semakin yakin modelnya.
Bergantung pada aplikasi Anda, Anda dapat menentukan ambang batas di bawah ini yang akan Anda buang hasil deteksi. Untuk contoh saat ini, cut-off yang masuk akal adalah skor 0,5 (artinya probabilitas 50% bahwa pendeteksian itu valid). Dalam kasus tersebut, dua objek terakhir dalam larik akan diabaikan karena skor keyakinan tersebut di bawah 0,5:
Kelas | Skor | Lokasi |
---|---|---|
apel | 0.92 | [18, 21, 57, 63] |
pisang | 0.88 | [100, 30, 180, 150] |
Stroberi | 0.87 | [7, 82, 89, 163] |
pisang | 0.23 | [42, 66, 57, 83] |
apel | 0.11 | [6, 42, 31, 58] |
Batas yang Anda gunakan harus didasarkan pada apakah Anda lebih nyaman dengan positif palsu (objek yang salah diidentifikasi, atau area gambar yang secara keliru diidentifikasi sebagai objek padahal bukan), atau negatif palsu (objek asli yang rindu karena kepercayaan diri mereka rendah).
Misalnya, pada gambar berikut, buah pir (yang bukan merupakan objek yang dideteksi oleh model) telah salah diidentifikasi sebagai "orang". Ini adalah contoh positif palsu yang dapat diabaikan dengan memilih batas waktu yang sesuai. Dalam kasus ini, batas 0,6 (atau 60%) akan mengecualikan positif palsu dengan nyaman.
Lokasi
Untuk setiap objek yang terdeteksi, model akan mengembalikan array empat angka yang mewakili persegi panjang pembatas yang mengelilingi posisinya. Untuk model starter yang disediakan, angkanya diurutkan sebagai berikut:
[ | puncak, | kiri, | bawah, | Baik | ] |
Nilai teratas mewakili jarak tepi atas persegi panjang dari bagian atas gambar, dalam piksel. Nilai kiri mewakili jarak tepi kiri dari kiri gambar masukan. Nilai-nilai lainnya mewakili tepi bawah dan kanan dengan cara yang sama.
Tolok ukur kinerja
Nomor tolok ukur kinerja untuk model pemula kami dibuat dengan alat yang dijelaskan di sini .
Nama model | Ukuran model | Alat | GPU | CPU |
---|---|---|---|---|
COCO SSD MobileNet v1.0 | 27 Mb | Pixel 3 (Android 10) | 22 md | 46 md * |
Pixel 4 (Android 10) | 20 md | 29 md * | ||
iPhone XS (iOS 12.4.1) | 7,6 md | 11 md ** |
* 4 utas digunakan.
** 2 utas digunakan di iPhone untuk hasil kinerja terbaik.
Model Kustomisasi
Model terlatih
Model deteksi yang dioptimalkan untuk seluler dengan berbagai latensi dan karakteristik presisi dapat ditemukan di Detection Zoo . Masing-masing mengikuti tanda tangan input dan output yang dijelaskan di bagian berikut.
Sebagian besar zip unduhan berisi file model.tflite
. Jika tidak ada, flatbuffer TensorFlow Lite dapat dibuat menggunakan petunjuk ini . Model SSD dari TF2 Object Detection Zoo juga dapat dikonversi ke TensorFlow Lite menggunakan petunjuk di sini . Penting untuk diperhatikan bahwa model deteksi tidak dapat dikonversi secara langsung menggunakan TensorFlow Lite Converter , karena memerlukan langkah perantara untuk menghasilkan model sumber yang ramah seluler. Skrip yang ditautkan di atas melakukan langkah ini.
Baik skrip pengekspor TF1 & TF2 memiliki parameter yang dapat mengaktifkan lebih banyak objek keluaran atau pemrosesan pasca yang lebih lambat dan lebih akurat. Harap gunakan --help
dengan skrip untuk melihat daftar lengkap argumen yang didukung.
Saat ini, inferensi di perangkat hanya dioptimalkan dengan model SSD. Dukungan yang lebih baik untuk arsitektur lain seperti CenterNet dan EfficientDet sedang diselidiki.
Bagaimana cara memilih model untuk disesuaikan?
Setiap model hadir dengan presisi (diukur dengan nilai mAP) dan karakteristik latensi sendiri. Anda harus memilih model yang bekerja paling baik untuk kasus penggunaan dan perangkat keras yang Anda maksud. Misalnya, model Edge TPU ideal untuk inferensi pada Edge TPU Google pada Pixel 4.
Anda dapat menggunakan alat tolok ukur kami untuk mengevaluasi model dan memilih opsi paling efisien yang tersedia.
Menyempurnakan model pada data kustom
Model terlatih yang kami sediakan dilatih untuk mendeteksi 90 kelas objek. Untuk daftar lengkap kelas, lihat file label di metadata model .
Anda dapat menggunakan teknik yang dikenal sebagai pembelajaran transfer untuk melatih kembali model untuk mengenali kelas yang tidak ada di set aslinya. Misalnya, Anda dapat melatih ulang model untuk mendeteksi beberapa jenis sayuran, meskipun hanya ada satu sayuran di data pelatihan asli. Untuk melakukan ini, Anda memerlukan sekumpulan gambar pelatihan untuk setiap label baru yang ingin Anda latih. Silakan lihat Colab deteksi Beberapa bidikan kami sebagai contoh menyempurnakan model terlatih dengan beberapa contoh.
Untuk menyempurnakan set data yang lebih besar, lihat panduan berikut untuk melatih model Anda sendiri dengan TensorFlow Object Detection API: TF1 , TF2 . Setelah dilatih, mereka dapat diubah ke format ramah TFLite dengan petunjuk di sini: TF1 , TF2