1. Sebelum memulai
Dalam codelab sebelumnya, Anda membuat aplikasi untuk Android dan iOS yang menggunakan model pelabelan gambar dasar yang mengenali beberapa ratus kelas gambar. Model ini mengenali gambar bunga secara umum – melihat kelopak, bunga, tanaman, dan langit.
Untuk memperbarui aplikasi agar dapat mengenali bunga tertentu, misalnya bunga aster atau mawar, Anda memerlukan model kustom yang dilatih dengan banyak contoh setiap jenis bunga yang ingin Anda kenali.
Prasyarat
- Codelab sebelumnya dalam jalur pembelajaran ini.
Yang akan Anda bangun dan pelajari
- Cara melatih model kustom Pengklasifikasi Gambar menggunakan TensorFlow Lite Model Maker.
Yang Anda butuhkan
- Tidak ada hardware khusus yang diperlukan – semuanya dapat diselesaikan menggunakan Google Colab di browser.
2. Mulai
Semua kode yang akan diikuti telah disiapkan untuk Anda dan tersedia untuk dieksekusi menggunakan Google Colab di sini. Jika Anda tidak memiliki akses ke Google Colab, Anda dapat meng-clone repo dan menggunakan notebook bernama CustomImageClassifierModel.ipynb yang dapat ditemukan di direktori ImageClassificationMobile->colab.
Jika Anda memiliki banyak contoh bunga tertentu, Anda dapat melatih model dengan TensorFlow Lite Model Maker untuk mengenalinya dengan relatif mudah.
Cara termudah untuk melakukannya adalah dengan membuat file .zip atau .tgz yang berisi gambar, yang diurutkan ke dalam direktori. Misalnya, jika Anda menggunakan gambar aster, dandelion, mawar, bunga matahari, dan tulip, Anda dapat mengaturnya ke dalam direktori seperti ini:

Zip file tersebut dan host di server, lalu Anda dapat melatih model dengannya. Anda akan menggunakan salah satu yang telah disiapkan untuk Anda di bagian selanjutnya dalam lab ini.
Lab ini mengasumsikan bahwa Anda menggunakan Google Colab untuk melatih model. Anda dapat menemukan colab di colab.research.google.com. Jika Anda menggunakan lingkungan lain, Anda mungkin harus menginstal banyak dependensi, termasuk TensorFlow.
3. Menginstal dan mengimpor dependensi
- Instal TensorFlow Lite Model Maker. Anda dapat melakukannya dengan penginstalan pip. &> /dev/null di bagian akhir hanya menekan output. Model Maker menghasilkan banyak hal yang tidak langsung relevan. Notifikasi telah disembunyikan agar Anda dapat fokus pada tugas yang sedang dikerjakan.
# Install Model maker
!pip install -q tflite-model-maker &> /dev/null
- Selanjutnya, Anda perlu mengimpor library yang perlu digunakan dan memastikan bahwa Anda menggunakan TensorFlow 2.x:
# Imports and check that we are using TF2.x
import numpy as np
import os
from tflite_model_maker import configs
from tflite_model_maker import ExportFormat
from tflite_model_maker import model_spec
from tflite_model_maker import image_classifier
from tflite_model_maker.image_classifier import DataLoader
import tensorflow as tf
assert tf.__version__.startswith('2')
tf.get_logger().setLevel('ERROR')
Setelah lingkungan siap, saatnya mulai membuat model Anda.
4. Mendownload dan Menyiapkan Data Anda
Jika gambar Anda disusun ke dalam folder, dan folder tersebut di-zip, maka jika Anda mendownload zip dan mengekstraknya, Anda akan otomatis mendapatkan gambar yang diberi label berdasarkan folder tempat gambar tersebut berada. Direktori ini akan dirujuk sebagai data_path.
data_path = tf.keras.utils.get_file(
'flower_photos',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
untar=True)
Jalur data ini kemudian dapat dimuat ke dalam model jaringan saraf untuk pelatihan dengan class ImageClassifierDataLoader TensorFlow Lite Model Maker. Cukup arahkan ke folder dan Anda siap menggunakannya.
Salah satu elemen penting dalam melatih model dengan machine learning adalah tidak menggunakan semua data Anda untuk pelatihan. Tahan sedikit untuk menguji model dengan data yang belum pernah dilihat sebelumnya. Hal ini mudah dilakukan dengan metode pemisahan set data yang ditampilkan dari ImageClassifierDataLoader. Dengan meneruskan 0, 9 ke dalamnya, Anda akan mendapatkan 90% sebagai data pelatihan dan 10% sebagai data pengujian:
data = DataLoader.from_folder(data_path)
train_data, test_data = data.split(0.9)
Setelah data Anda disiapkan, Anda dapat membuat model menggunakan data tersebut.
5. Membuat Model Pengklasifikasi Gambar
Model Maker mengabstraksi banyak spesifikasi desain jaringan neural sehingga Anda tidak perlu menangani desain jaringan, dan hal-hal seperti konvolusi, padat, relu, meratakan, fungsi kerugian, dan pengoptimal. Untuk model default, Anda cukup menggunakan satu baris kode untuk membuat model dengan melatih jaringan neural menggunakan data yang disediakan:
model = image_classifier.create(train_data)
Saat menjalankannya, Anda akan melihat output yang terlihat seperti berikut:
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
hub_keras_layer_v1v2_2 (HubK (None, 1280) 3413024
_________________________________________________________________
dropout_2 (Dropout) (None, 1280) 0
_________________________________________________________________
dense_2 (Dense) (None, 5) 6405
=================================================================
Total params: 3,419,429
Trainable params: 6,405
Non-trainable params: 3,413,024
_________________________________________________________________
None
Epoch 1/5
103/103 [===] - 15s 129ms/step - loss: 1.1169 - accuracy: 0.6181
Epoch 2/5
103/103 [===] - 13s 126ms/step - loss: 0.6595 - accuracy: 0.8911
Epoch 3/5
103/103 [===] - 13s 127ms/step - loss: 0.6239 - accuracy: 0.9133
Epoch 4/5
103/103 [===] - 13s 128ms/step - loss: 0.5994 - accuracy: 0.9287
Epoch 5/5
103/103 [===] - 13s 126ms/step - loss: 0.5836 - accuracy: 0.9385
Bagian pertama menunjukkan arsitektur model Anda. Yang dilakukan Model Maker di balik layar disebut Transfer Learning, yang menggunakan model terlatih yang sudah ada sebagai titik awal, dan hanya mengambil hal-hal yang dipelajari model tersebut tentang cara gambar dibuat dan menerapkannya untuk memahami 5 bunga ini. Anda dapat melihatnya di baris pertama yang berbunyi:
hub_keras_layer_v1v2_2 (HubK (None, 1280) 3413024
Kuncinya adalah kata 'Hub', yang memberi tahu kita bahwa model ini berasal dari TensorFlow Hub. Secara default, TensorFlow Lite Model Maker menggunakan model yang disebut 'MobileNet' yang dirancang untuk mengenali 1.000 jenis gambar. Logikanya di sini adalah bahwa metodologi yang digunakannya, dengan mempelajari 'fitur' untuk membedakan antara 1.000 class, dapat digunakan kembali. ‘Fitur' yang sama dapat dipetakan ke 5 kelas bunga kami, sehingga tidak perlu dipelajari dari awal.
Model ini melalui 5 epoch – dengan satu epoch adalah siklus pelatihan penuh saat jaringan neural mencoba mencocokkan gambar dengan labelnya. Setelah melalui 5 epoch, dalam waktu sekitar 1 menit, akurasinya mencapai 93,85% pada data pelatihan. Mengingat ada 5 kelas, tebakan acak akan akurat 20%, jadi itu adalah kemajuan. (Laporan ini juga melaporkan jumlah 'kerugian', tetapi Anda dapat mengabaikannya untuk saat ini.)
Sebelumnya, Anda membagi data menjadi data pelatihan dan pengujian, sehingga Anda bisa mendapatkan gambaran tentang performa jaringan pada data yang belum pernah dilihat sebelumnya – indikator yang lebih baik tentang performanya di dunia nyata dengan menggunakan model.evaluate pada data pengujian:
loss, accuracy = model.evaluate(test_data)
Perintah ini akan menghasilkan output seperti ini:
12/12 [===] - 5s 115ms/step - loss: 0.6622 - accuracy: 0.8801
Perhatikan akurasinya di sini. Akurasi modelnya adalah 88,01%, jadi penggunaan model default di dunia nyata akan menghasilkan tingkat akurasi tersebut. Hasilnya cukup bagus untuk model default yang Anda latih dalam waktu sekitar satu menit. Tentu saja, Anda mungkin dapat melakukan banyak penyesuaian untuk meningkatkan kualitas model, dan itu adalah sains tersendiri.
6. Mengekspor Model
Setelah model dilatih, langkah berikutnya adalah mengekspornya dalam format .tflite yang dapat digunakan oleh aplikasi seluler. Pembuat model menyediakan metode ekspor yang mudah digunakan — cukup tentukan direktori yang akan menjadi output.
Berikut kodenya:
model.export(export_dir='/mm_flowers')
Jika menjalankan ini di Google Colab, Anda dapat melihat model dengan mengklik ikon folder di sebelah kiri layar:

Dari sini, Anda akan mendapatkan daftar direktori saat ini. Gunakan tombol yang ditunjukkan untuk berpindah "naik" satu direktori:

Dalam kode, Anda menentukan untuk mengekspor ke direktori mm_flowers. Buka, dan Anda akan melihat file bernama'model.tflite'. Ini adalah model terlatih Anda.

Pilih file dan Anda akan melihat 3 titik muncul di sebelah kanan. Klik ini untuk mendapatkan menu konteks, dan Anda dapat mendownload model dari sana.

Setelah beberapa saat, model Anda akan didownload ke folder download Anda.
7. Selamat
Anda kini siap mengintegrasikannya ke dalam aplikasi seluler Anda. Anda akan melakukannya di lab berikutnya.