Bergabunglah dengan TensorFlow di Google I/O, 11-12 Mei Daftar sekarang

Klasifikasi gambar

Tugas mengidentifikasi apa yang diwakili oleh suatu citra disebut klasifikasi citra . Model klasifikasi citra dilatih untuk mengenali berbagai kelas citra. Misalnya, Anda dapat melatih seorang model untuk mengenali foto yang mewakili tiga jenis hewan yang berbeda: 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 output dari model klasifikasi gambar di Android.

Tangkapan layar contoh Android

Memulai

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

Anda dapat memanfaatkan API siap pakai dari TensorFlow Lite Task Library untuk mengintegrasikan model klasifikasi gambar hanya dalam beberapa baris kode. Anda juga dapat membuat saluran inferensi khusus Anda sendiri menggunakan Pustaka Dukungan TensorFlow Lite .

Contoh Android di bawah ini menunjukkan implementasi untuk kedua metode masing-masing sebagai lib_task_api dan lib_support .

Lihat contoh Android

Lihat contoh iOS

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

Unduh model pemula

Deskripsi model

Bagaimana itu bekerja

Selama pelatihan, model klasifikasi gambar diberi 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 belajar 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. Transfer learning tidak memerlukan dataset pelatihan yang sangat besar.

Ketika Anda kemudian memberikan gambar baru sebagai input ke model, itu akan menampilkan probabilitas gambar yang mewakili masing-masing jenis hewan yang dilatihnya. Contoh output mungkin sebagai berikut:

Jenis hewan Kemungkinan
kelinci 0,07
Hamster 0,02
Anjing 0,91

Setiap angka dalam output sesuai dengan label dalam data pelatihan. 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 banyak kelas (lihat Softmax untuk informasi lebih lanjut).

Hasil yang ambigu

Karena probabilitas keluaran akan selalu berjumlah 1, jika sebuah gambar tidak dikenali dengan pasti sebagai milik salah satu kelas yang dilatih oleh model, Anda mungkin melihat probabilitas didistribusikan ke seluruh label tanpa satu nilai menjadi lebih besar secara signifikan.

Misalnya, berikut ini 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 yang berbeda dan lebih akurat.

Memilih arsitektur model

TensorFlow Lite memberi Anda berbagai model klasifikasi gambar yang semuanya dilatih pada dataset asli. Arsitektur model seperti MobileNet, Inception, dan NASNet tersedia di TensorFlow Hub . Untuk memilih model terbaik untuk kasus penggunaan Anda, Anda perlu mempertimbangkan arsitektur individu 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 suka 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 input 224x224 piksel. Semua model memerlukan 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.

Penggunaan 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 model zip . Jika Anda ingin melatih model untuk mengenali kelas baru, lihat Menyesuaikan model . Untuk kasus penggunaan berikut, Anda harus menggunakan tipe model yang berbeda:
  • Memprediksi jenis dan posisi satu atau lebih objek dalam gambar (lihat Deteksi objek )
  • Memprediksi komposisi gambar, misalnya subjek versus latar belakang (lihat Segmentasi )
Setelah model starter berjalan di perangkat target, Anda dapat bereksperimen dengan model yang berbeda untuk menemukan keseimbangan optimal antara kinerja, akurasi, dan ukuran model.

Sesuaikan model

Model pra-pelatihan 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 kembali model untuk mengenali kelas yang tidak ada di set aslinya. Misalnya, Anda dapat melatih ulang model untuk membedakan antara spesies pohon yang berbeda, meskipun tidak ada pohon dalam data pelatihan asli. Untuk melakukan ini, Anda memerlukan satu set 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 dalam jumlah waktu yang dibutuhkan model untuk menjalankan inferensi pada perangkat keras tertentu. Semakin rendah waktunya, semakin cepat modelnya. Kinerja yang Anda butuhkan tergantung pada aplikasi Anda. Kinerja dapat menjadi penting untuk aplikasi seperti video real-time, di mana mungkin penting untuk menganalisis setiap frame dalam waktu sebelum frame berikutnya digambar (misalnya inferensi harus lebih cepat dari 33ms untuk melakukan inferensi real-time pada aliran video 30fps) . TensorFlow Lite mengukur rentang kinerja model MobileNet dari 3,7 md hingga 80,3 md. Angka benchmark kinerja dihasilkan dengan alat benchmarking .
Nama model Ukuran model Perangkat NNAPI CPU
Mobilenet_V1_1.0_224_quant 4.3 Mb Piksel 3 (Android 10) 6ms 13ms*
Piksel 4 (Android 10) 3.3ms 5ms*
iPhone XS (iOS 12.4.1) 11ms**

* 4 benang digunakan.

** 2 utas digunakan pada iPhone untuk hasil kinerja terbaik.

Akurasi model

Akurasi diukur dari seberapa sering model mengklasifikasikan gambar dengan benar. Misalnya, model dengan akurasi 60% dapat diharapkan untuk mengklasifikasikan gambar dengan benar rata-rata 60% dari 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 di 5 probabilitas tertinggi dalam output model.

Akurasi Top-5 model MobileNet dari TensorFlow Lite terkuantisasi dari 64,4 hingga 89,9%.

Ukuran model

Ukuran model pada disk bervariasi dengan kinerja dan akurasinya. Ukuran mungkin penting untuk pengembangan seluler (yang dapat memengaruhi ukuran unduhan aplikasi) atau saat bekerja dengan perangkat keras (jika penyimpanan yang tersedia mungkin terbatas).

Ukuran model MobileNet terkuantisasi TensorFlow Lite berkisar dari 0,5 hingga 3,4 MB.

Bacaan lebih lanjut dan sumber daya

Gunakan sumber daya berikut untuk mempelajari lebih lanjut tentang konsep yang terkait dengan klasifikasi gambar:

,

Tugas mengidentifikasi apa yang diwakili oleh suatu citra disebut klasifikasi citra . Model klasifikasi citra dilatih untuk mengenali berbagai kelas citra. Misalnya, Anda dapat melatih seorang model untuk mengenali foto yang mewakili tiga jenis hewan yang berbeda: 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 output dari model klasifikasi gambar di Android.

Tangkapan layar contoh Android

Memulai

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

Anda dapat memanfaatkan API siap pakai dari TensorFlow Lite Task Library untuk mengintegrasikan model klasifikasi gambar hanya dalam beberapa baris kode. Anda juga dapat membuat saluran inferensi khusus Anda sendiri menggunakan Pustaka Dukungan TensorFlow Lite .

Contoh Android di bawah ini menunjukkan implementasi untuk kedua metode masing-masing sebagai lib_task_api dan lib_support .

Lihat contoh Android

Lihat contoh iOS

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

Unduh model pemula

Deskripsi model

Bagaimana itu bekerja

Selama pelatihan, model klasifikasi gambar diberi 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 belajar 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. Transfer learning tidak memerlukan dataset pelatihan yang sangat besar.

Ketika Anda kemudian memberikan gambar baru sebagai input ke model, itu akan menampilkan probabilitas gambar yang mewakili masing-masing jenis hewan yang dilatihnya. Contoh output mungkin sebagai berikut:

Jenis hewan Kemungkinan
kelinci 0,07
Hamster 0,02
Anjing 0,91

Setiap angka dalam output sesuai dengan label dalam data pelatihan. 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 banyak kelas (lihat Softmax untuk informasi lebih lanjut).

Hasil yang ambigu

Karena probabilitas keluaran akan selalu berjumlah 1, jika sebuah gambar tidak dikenali dengan pasti sebagai milik salah satu kelas yang dilatih oleh model, Anda mungkin melihat probabilitas didistribusikan ke seluruh label tanpa satu nilai menjadi lebih besar secara signifikan.

Misalnya, berikut ini 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 yang berbeda dan lebih akurat.

Memilih arsitektur model

TensorFlow Lite memberi Anda berbagai model klasifikasi gambar yang semuanya dilatih pada dataset asli. Arsitektur model seperti MobileNet, Inception, dan NASNet tersedia di TensorFlow Hub . Untuk memilih model terbaik untuk kasus penggunaan Anda, Anda perlu mempertimbangkan arsitektur individu 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 suka 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 input 224x224 piksel. Semua model memerlukan 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.

Penggunaan 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 model zip . Jika Anda ingin melatih model untuk mengenali kelas baru, lihat Menyesuaikan model . Untuk kasus penggunaan berikut, Anda harus menggunakan tipe model yang berbeda:
  • Memprediksi jenis dan posisi satu atau lebih objek dalam gambar (lihat Deteksi objek )
  • Memprediksi komposisi gambar, misalnya subjek versus latar belakang (lihat Segmentasi )
Setelah model starter berjalan di perangkat target, Anda dapat bereksperimen dengan model yang berbeda untuk menemukan keseimbangan optimal antara kinerja, akurasi, dan ukuran model.

Sesuaikan model

Model pra-pelatihan 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 kembali model untuk mengenali kelas yang tidak ada di set aslinya. Misalnya, Anda dapat melatih ulang model untuk membedakan antara spesies pohon yang berbeda, meskipun tidak ada pohon dalam data pelatihan asli. Untuk melakukan ini, Anda memerlukan satu set 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 dalam jumlah waktu yang dibutuhkan model untuk menjalankan inferensi pada perangkat keras tertentu. Semakin rendah waktunya, semakin cepat modelnya. Kinerja yang Anda butuhkan tergantung pada aplikasi Anda. Kinerja dapat menjadi penting untuk aplikasi seperti video real-time, di mana mungkin penting untuk menganalisis setiap frame dalam waktu sebelum frame berikutnya digambar (misalnya inferensi harus lebih cepat dari 33ms untuk melakukan inferensi real-time pada aliran video 30fps) . TensorFlow Lite mengukur rentang kinerja model MobileNet dari 3,7 md hingga 80,3 md. Angka benchmark kinerja dihasilkan dengan alat benchmarking .
Nama model Ukuran model Perangkat NNAPI CPU
Mobilenet_V1_1.0_224_quant 4.3 Mb Piksel 3 (Android 10) 6ms 13ms*
Piksel 4 (Android 10) 3.3ms 5ms*
iPhone XS (iOS 12.4.1) 11ms**

* 4 benang digunakan.

** 2 utas digunakan pada iPhone untuk hasil kinerja terbaik.

Akurasi model

Akurasi diukur dari seberapa sering model mengklasifikasikan gambar dengan benar. Misalnya, model dengan akurasi 60% dapat diharapkan untuk mengklasifikasikan gambar dengan benar rata-rata 60% dari 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 di 5 probabilitas tertinggi dalam output model.

Akurasi Top-5 model MobileNet dari TensorFlow Lite terkuantisasi dari 64,4 hingga 89,9%.

Ukuran model

Ukuran model pada disk bervariasi dengan kinerja dan akurasinya. Ukuran mungkin penting untuk pengembangan seluler (yang dapat memengaruhi ukuran unduhan aplikasi) atau saat bekerja dengan perangkat keras (jika penyimpanan yang tersedia mungkin terbatas).

Ukuran model MobileNet terkuantisasi TensorFlow Lite berkisar dari 0,5 hingga 3,4 MB.

Bacaan lebih lanjut dan sumber daya

Gunakan sumber daya berikut untuk mempelajari lebih lanjut tentang konsep yang terkait dengan klasifikasi gambar: