Tugas mengidentifikasi apa yang diwakili oleh suatu gambar disebut klasifikasi gambar . Model klasifikasi gambar dilatih untuk mengenali berbagai kelas gambar. Misalnya, Anda dapat melatih model untuk mengenali foto yang mewakili tiga jenis hewan: kelinci, hamster, dan anjing. TensorFlow Lite menyediakan model terlatih yang dioptimalkan yang dapat Anda terapkan di aplikasi seluler Anda. Pelajari lebih lanjut tentang klasifikasi gambar menggunakan TensorFlow di sini .
Gambar berikut menunjukkan keluaran dari model klasifikasi gambar di Android.
Memulai
Jika Anda baru mengenal TensorFlow Lite dan bekerja dengan Android atau iOS, sebaiknya jelajahi aplikasi contoh berikut yang dapat membantu Anda memulai.
Anda dapat memanfaatkan API out-of-box dari TensorFlow Lite Task Library untuk mengintegrasikan model klasifikasi gambar hanya dalam beberapa baris kode. Anda juga dapat membuat pipeline inferensi kustom Anda sendiri menggunakan Support Library TensorFlow Lite .
Contoh Android di bawah ini mendemonstrasikan implementasi untuk kedua metode sebagai lib_task_api dan lib_support .
Jika Anda menggunakan platform selain Android / iOS, atau jika Anda sudah terbiasa dengan TensorFlow Lite API , download model awal dan file pendukung (jika ada).
Deskripsi model
Bagaimana itu bekerja
Selama pelatihan, model klasifikasi gambar diberi makan gambar dan label yang terkait. Setiap label adalah nama dari konsep atau kelas yang berbeda, yang akan dipelajari oleh model untuk dikenali.
Dengan data pelatihan yang memadai (seringkali ratusan atau ribuan gambar per label), model klasifikasi gambar dapat mempelajari untuk memprediksi apakah gambar baru termasuk dalam salah satu kelas yang telah dilatihnya. Proses prediksi ini disebut inferensi . Perhatikan bahwa Anda juga dapat menggunakan pembelajaran transfer untuk mengidentifikasi kelas gambar baru dengan menggunakan model yang sudah ada sebelumnya. Pembelajaran transfer tidak membutuhkan set data pelatihan yang sangat besar.
Saat Anda kemudian memberikan gambar baru sebagai masukan untuk model, itu akan menampilkan probabilitas gambar yang mewakili setiap jenis hewan yang dilatihnya. Contoh keluarannya mungkin seperti berikut:
Jenis hewan | Kemungkinan |
---|---|
kelinci | 0,07 |
Hamster | 0,02 |
Anjing | 0.91 |
Setiap angka di keluaran sesuai dengan label di data pelatihan. Dengan mengaitkan keluaran dengan tiga label tempat model dilatih, Anda dapat melihat bahwa model telah memprediksi probabilitas tinggi bahwa gambar tersebut mewakili seekor anjing.
Anda mungkin memperhatikan bahwa jumlah semua probabilitas (untuk kelinci, hamster, dan anjing) sama dengan 1. Ini adalah tipe keluaran umum untuk model dengan beberapa kelas (lihat Softmax untuk informasi lebih lanjut).
Hasil yang ambigu
Karena probabilitas keluaran akan selalu berjumlah 1, jika sebuah gambar tidak dengan yakin dikenali sebagai milik salah satu kelas tempat model dilatih, Anda mungkin melihat probabilitas didistribusikan ke seluruh label tanpa ada satu nilai yang secara signifikan lebih besar.
Misalnya, berikut ini mungkin menunjukkan hasil yang ambigu:
Label | Kemungkinan |
---|---|
kelinci | 0.31 |
hamster | 0.35 |
anjing | 0.34 |
Memilih arsitektur model
TensorFlow Lite memberi Anda berbagai model klasifikasi gambar yang semuanya dilatih pada kumpulan data asli. Arsitektur model seperti MobileNet, Inception, dan NASNet tersedia di halaman model yang dihosting . Untuk memilih model terbaik untuk kasus penggunaan Anda, Anda perlu mempertimbangkan arsitektur individual serta beberapa pengorbanan antara berbagai model. Beberapa pengorbanan model ini didasarkan pada metrik seperti kinerja, akurasi, dan ukuran model. Misalnya, Anda mungkin memerlukan model yang lebih cepat untuk membuat pemindai kode batang sementara Anda mungkin lebih memilih model yang lebih lambat dan lebih akurat untuk aplikasi pencitraan medis. Perhatikan bahwa model klasifikasi gambar yang disediakan menerima berbagai ukuran input. Untuk beberapa model, ini ditunjukkan dalam nama file. Misalnya, model Mobilenet_V1_1.0_224 menerima masukan 224x224 piksel. Semua model membutuhkan tiga saluran warna per piksel (merah, hijau, dan biru). Model terkuantisasi membutuhkan 1 byte per saluran, dan model float membutuhkan 4 byte per saluran. Contoh kode Android dan iOS menunjukkan cara memproses gambar kamera berukuran penuh ke dalam format yang diperlukan untuk setiap model.Kegunaan dan batasan
Model klasifikasi gambar TensorFlow Lite berguna untuk klasifikasi label tunggal; yaitu, memprediksi label tunggal mana yang paling mungkin diwakili oleh gambar. Mereka dilatih untuk mengenali 1000 kelas gambar. Untuk daftar lengkap kelas, lihat file label di zip model . Jika Anda ingin melatih model untuk mengenali kelas baru, lihat Menyesuaikan model . Untuk kasus penggunaan berikut, Anda harus menggunakan jenis model yang berbeda:- Memprediksi tipe dan posisi satu atau lebih objek dalam gambar (lihat Deteksi objek )
- Memprediksi komposisi gambar, misalnya subjek versus latar belakang (lihat Segmentasi )
Sesuaikan model
Model terlatih yang disediakan dilatih untuk mengenali 1000 kelas gambar. Untuk daftar lengkap kelas, lihat file label di zip model . Anda juga dapat menggunakan pembelajaran transfer untuk melatih kembali model untuk mengenali kelas yang tidak ada di set aslinya. Misalnya, Anda dapat melatih ulang model untuk membedakan spesies pohon yang berbeda, meskipun tidak ada pohon dalam data pelatihan asli. Untuk melakukan ini, Anda memerlukan sekumpulan gambar pelatihan untuk setiap label baru yang ingin Anda latih. Pelajari cara melakukan pembelajaran transfer di Mengenali bunga dengan codelab TensorFlow, atau dengan library Model Maker .Tolok ukur kinerja
Performa model diukur dalam hal jumlah waktu yang diperlukan model untuk menjalankan inferensi pada perangkat keras tertentu. Semakin rendah waktunya, semakin cepat modelnya. Kinerja yang Anda butuhkan bergantung pada aplikasi Anda. Performa dapat menjadi penting untuk aplikasi seperti video real-time, di mana mungkin penting untuk menganalisis setiap frame dalam waktu sebelum frame berikutnya diambil (misalnya, inferensi harus lebih cepat dari 33ms untuk melakukan inferensi waktu nyata pada streaming video 30fps) . Performa model MobileNet terkuantisasi TensorFlow Lite berkisar dari 3,7 md hingga 80,3 md. Angka tolok ukur kinerja dihasilkan dengan alat benchmarking .Nama model | Ukuran model | Alat | NNAPI | CPU |
---|---|---|---|---|
Mobilenet_V1_1.0_224_quant | 4.3 Mb | Pixel 3 (Android 10) | 6 md | 13 md * |
Pixel 4 (Android 10) | 3,3 md | 5 md * | ||
iPhone XS (iOS 12.4.1) | 11 md ** |
* 4 utas digunakan.
** 2 utas digunakan di iPhone untuk hasil kinerja terbaik.
Akurasi model
Akurasi diukur dalam hal seberapa sering model mengklasifikasikan gambar dengan benar. Misalnya, model dengan akurasi 60% diharapkan dapat mengklasifikasikan gambar dengan benar rata-rata 60%.
Daftar model yang dihosting memberikan statistik akurasi Top-1 dan Top-5. Top-1 mengacu pada seberapa sering label yang benar muncul sebagai label dengan probabilitas tertinggi dalam keluaran model. Top-5 mengacu pada seberapa sering label yang benar muncul dalam 5 probabilitas tertinggi dalam keluaran model.
Rentang akurasi Top-5 model MobileNet terkuantisasi TensorFlow Lite dari 64,4 hingga 89,9%.
Ukuran model
Ukuran model pada disk bervariasi dengan kinerja dan akurasinya. Ukuran mungkin penting untuk pengembangan seluler (jika mungkin memengaruhi ukuran unduhan aplikasi) atau saat bekerja dengan perangkat keras (jika penyimpanan yang tersedia mungkin terbatas).
Ukuran model MobileNet terkuantisasi TensorFlow Lite berkisar antara 0,5 hingga 3,4 MB.
Bacaan dan sumber lebih lanjut
Gunakan sumber daya berikut untuk mempelajari lebih lanjut tentang konsep yang berkaitan dengan klasifikasi gambar: