Klasifikasi gambar

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 berbeda: kelinci, hamster, dan anjing. TensorFlow Lite menyediakan model terlatih yang dioptimalkan yang dapat Anda terapkan di aplikasi seluler Anda. Pelajari lebih lanjut klasifikasi gambar menggunakan TensorFlow di sini .

Gambar berikut menunjukkan keluaran model klasifikasi gambar di Android.

Tangkapan layar contoh Android

Memulai

Jika Anda baru menggunakan TensorFlow Lite dan menggunakan Android atau iOS, sebaiknya Anda menjelajahi contoh aplikasi berikut yang dapat membantu Anda memulai.

Anda dapat memanfaatkan API bawaan 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 kedua metode sebagai lib_task_api dan lib_support .

Lihat contoh Android

Lihat contoh iOS

Jika Anda menggunakan platform selain Android/iOS, atau jika Anda sudah familiar dengan TensorFlow Lite API , download model starter dan file pendukung (jika ada).

Unduh model pemula

Deskripsi model

Bagaimana itu bekerja

Selama pelatihan, model klasifikasi gambar diberi gambar dan label terkaitnya. Setiap label adalah nama konsep, atau kelas berbeda, yang akan dipelajari oleh model untuk dikenali.

Dengan data pelatihan yang memadai (seringkali ratusan atau ribuan gambar per label), model klasifikasi gambar dapat belajar 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 memerlukan kumpulan data pelatihan yang sangat besar.

Saat Anda selanjutnya memberikan gambar baru sebagai masukan ke model, ini akan menampilkan probabilitas gambar yang mewakili setiap jenis hewan yang dilatihnya. Contoh keluarannya mungkin sebagai berikut:

Tipe binatang Kemungkinan
kelinci 0,07
Hamster 0,02
Anjing 0,91

Setiap angka pada keluaran sesuai dengan label pada data pelatihan. Dengan mengaitkan keluaran dengan tiga label tempat model dilatih, Anda dapat melihat bahwa model tersebut memperkirakan kemungkinan besar bahwa gambar tersebut mewakili seekor anjing.

Anda mungkin memperhatikan bahwa jumlah semua probabilitas (untuk kelinci, hamster, dan anjing) sama dengan 1. Ini adalah jenis keluaran umum untuk model dengan banyak kelas (lihat Softmax untuk informasi lebih lanjut).

Hasil yang ambigu

Karena probabilitas keluaran akan selalu berjumlah 1, jika suatu gambar tidak dikenali dengan pasti sebagai milik salah satu kelas tempat model dilatih, Anda mungkin melihat probabilitas didistribusikan ke seluruh label tanpa ada nilai yang jauh lebih besar.

Misalnya, hal berikut mungkin menunjukkan hasil yang ambigu:

Label Kemungkinan
kelinci 0,31
hamster 0,35
anjing 0,34
Jika model Anda sering memberikan hasil yang ambigu, Anda mungkin memerlukan model lain yang lebih akurat.

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 TensorFlow Hub . Untuk memilih model terbaik untuk kasus penggunaan Anda, Anda perlu mempertimbangkan masing-masing arsitektur serta beberapa trade-off antara berbagai model. Beberapa pengorbanan model ini didasarkan pada metrik seperti performa, 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 masukan. Untuk beberapa model, hal ini ditunjukkan dalam nama file. Misalnya, model Mobilenet_V1_1.0_224 menerima masukan berukuran 224x224 piksel. Semua model memerlukan tiga saluran warna per piksel (merah, hijau, dan biru). Model terkuantisasi memerlukan 1 byte per saluran, dan model float memerlukan 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 mana yang paling mungkin diwakili oleh gambar tersebut. Mereka dilatih untuk mengenali 1000 kelas gambar. Untuk daftar lengkap kelas, lihat file label di model zip . Jika Anda ingin melatih model untuk mengenali kelas baru, lihat Menyesuaikan model . Untuk kasus penggunaan berikut, Anda harus menggunakan jenis model yang berbeda:
  • Memprediksi jenis dan posisi satu atau lebih objek dalam suatu gambar (lihat Deteksi objek )
  • Memprediksi komposisi suatu gambar, misalnya subjek versus latar belakang (lihat Segmentasi )
Setelah model awal berjalan di perangkat target, Anda dapat bereksperimen dengan model yang berbeda untuk menemukan keseimbangan optimal antara performa, akurasi, dan ukuran model.

Sesuaikan modelnya

Model terlatih yang disediakan dilatih untuk mengenali 1000 kelas gambar. Untuk daftar lengkap kelas, lihat file label di model zip . Anda juga dapat menggunakan pembelajaran transfer untuk melatih ulang model agar dapat mengenali kelas yang tidak ada dalam rangkaian aslinya. Misalnya, Anda dapat melatih ulang model untuk membedakan spesies pohon yang berbeda, meskipun tidak ada pohon di data pelatihan asli. Untuk melakukan ini, Anda memerlukan sekumpulan gambar pelatihan untuk setiap label baru yang ingin Anda latih. Pelajari cara melakukan pembelajaran transfer dengan TFLite Model Maker , atau di codelab Mengenali bunga dengan TensorFlow .

Tolok ukur kinerja

Performa model diukur berdasarkan jumlah waktu yang diperlukan model untuk menjalankan inferensi pada perangkat keras tertentu. Semakin rendah waktunya, semakin cepat modelnya. Performa yang Anda perlukan bergantung pada aplikasi Anda. Kinerja dapat menjadi penting untuk aplikasi seperti video real-time, yang mungkin penting untuk menganalisis setiap frame dalam waktu sebelum frame berikutnya diambil (misalnya inferensi harus lebih cepat dari 33ms untuk melakukan inferensi real-time pada streaming video 30fps) . TensorFlow Lite mengkuantisasi rentang performa model MobileNet dari 3,7 md hingga 80,3 md. Angka tolok ukur kinerja dihasilkan dengan alat tolok ukur .
Nama model Ukuran model Perangkat NNAPI CPU
Mobilenet_V1_1.0_224_quant 4,3 Mb Piksel 3 (Android 10) 6 ms 13 md*
Piksel 4 (Android 10) 3,3 md 5 md*
iPhone XS (iOS 12.4.1) 11 md**

* 4 benang digunakan.

** 2 thread digunakan di iPhone untuk hasil performa terbaik.

Akurasi model

Akurasi diukur berdasarkan seberapa sering model mengklasifikasikan gambar dengan benar. Misalnya, model dengan akurasi yang dinyatakan sebesar 60% diharapkan dapat mengklasifikasikan gambar dengan benar rata-rata 60% dari keseluruhan waktu.

Metrik akurasi yang paling relevan adalah 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.

TensorFlow Lite mengkuantisasi rentang akurasi Top-5 model MobileNet dari 64,4 hingga 89,9%.

Ukuran model

Ukuran model pada disk bervariasi menurut performa dan akurasinya. Ukuran mungkin penting untuk pengembangan seluler (yang 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: