Membuat model kustom untuk pengklasifikasi gambar Anda

1. Sebelum memulai

Pada codelab sebelumnya, Anda membuat aplikasi untuk Android dan iOS yang menggunakan model pelabelan gambar dasar yang mengenali beberapa ratus class gambar. Karya ini mengenali gambar bunga sangat umum – melihat kelopak, bunga, tanaman, dan langit.

Untuk memperbarui aplikasi agar mengenali bunga, aster, atau mawar tertentu, misalnya, Anda memerlukan model khusus yang dilatih pada banyak contoh setiap jenis bunga yang ingin Anda kenali.

Prasyarat

  • Codelab sebelumnya di jalur pembelajaran ini.

Yang akan Anda buat dan pelajari

  • Cara melatih model kustom Pengklasifikasi Gambar menggunakan TensorFlow Lite Model Maker.

Yang Anda butuhkan

  • Tidak diperlukan hardware tertentu. Semuanya dapat diselesaikan menggunakan Google Colab di browser.

2. Mulai

Semua kode yang harus diikuti telah disiapkan untuk Anda dan tersedia untuk dijalankan menggunakan Google Colab di sini. Jika tidak memiliki akses ke Google Colab, Anda dapat meng-clone repo dan menggunakan notebook yang disebut CustomImageClassifierModel.ipynb yang dapat ditemukan di direktori ImageClassificationMobile->colab.

Jika Anda memiliki banyak contoh bunga tertentu, akan sangat mudah bagi Anda untuk melatih model dengan pembuat Model TensorFlow Lite untuk mengenalinya.

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:

4ee12554e75b103f.png

Gunakan zip dan hosting file tersebut di server, lalu Anda dapat melatih model dengan model tersebut. Anda akan menggunakan modul yang telah disiapkan untuk Anda di lab ini.

Lab ini akan menganggap Anda menggunakan Google Colab untuk melatih model. Anda dapat menemukan kolaborasi di colab.research.google.com. Jika menggunakan lingkungan lain, Anda mungkin harus menginstal banyak dependensi, terutama TensorFlow.

3 Menginstal dan mengimpor dependensi

  1. Instal TensorFlow Lite Model Maker. Anda dapat melakukannya dengan menginstal pipeline. &> /dev/null di akhir hanya akan menyembunyikan output. Model Maker menghasilkan banyak hal yang tidak langsung relevan. Tombol tersebut telah disembunyikan sehingga Anda dapat fokus pada tugas yang sedang dikerjakan.
# Install Model maker
!pip install -q tflite-model-maker &> /dev/null
  1. Selanjutnya, Anda harus 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')

Karena lingkungan sudah siap, saatnya untuk mulai membuat model Anda.

4. Mendownload dan Menyiapkan Data Anda

Jika gambar diatur ke dalam folder, dan folder tersebut di-zip, maka jika Anda mendownload zip dan membuka kompresinya, Anda akan secara otomatis diberi label gambar berdasarkan folder tempatnya. 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 neural untuk pelatihan dengan class ImageClassifierDataLoader TensorFlow Lite Model Maker. Cukup arahkan ke folder dan Anda siap memulai.

Salah satu elemen penting dalam model pelatihan dengan machine learning adalah tidak menggunakan semua data Anda untuk pelatihan. Tahan sedikit pengujian untuk menguji model dengan data yang belum pernah dilihat sebelumnya. Hal ini mudah dilakukan dengan metode pemisahan set data yang berasal dari ImageClassifierDataLoader. Dengan meneruskan 0,9 ke dalamnya, Anda akan mendapatkan 90% sebagai data pelatihan Anda, dan 10% sebagai data pengujian Anda:

data = DataLoader.from_folder(data_path)
train_data, test_data = data.split(0.9)

Setelah data siap, Anda dapat membuat model menggunakan data tersebut.

5. Membuat Model Pengklasifikasi Gambar

Model Maker memisahkan banyak hal spesifik dalam mendesain jaringan neural, sehingga Anda tidak perlu menangani desain jaringan, dan hal-hal seperti konvolusi, padat, relu, diratakan, fungsi kerugian, dan pengoptimal. Untuk model default, Anda cukup menggunakan satu baris kode untuk membuat model dengan melatih jaringan neural dengan data yang disediakan:

model = image_classifier.create(train_data)

Saat menjalankan ini, 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 adalah menunjukkan arsitektur model Anda. Apa yang dilakukan Model Maker di balik layar disebut Transfer Learning,yang menggunakan model terlatih yang ada sebagai titik awal, dan hanya mengambil hal-hal yang dipelajari model tersebut tentang cara membuat dan menerapkannya untuk memahami 5 bunga ini. Anda dapat melihatnya di baris pertama yang bertuliskan:

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. Logika di sini adalah metodologi yang digunakannya, dengan mempelajari 'fitur' untuk membedakan antara 1.000 class, dapat digunakan kembali. 'Fitur' yang sama dapat dipetakan ke 5 class 'bunga', sehingga tidak perlu dipelajari dari awal.

Model ini melalui 5 epoch – dengan epoch adalah siklus penuh pelatihan dengan jaringan neural mencoba mencocokkan gambar ke labelnya. Pada saat melewati 5 iterasi pelatihan, dalam waktu sekitar 1 menit, data pelatihannya 93,85% akurat. Mengingat ada 5 kelas, tebakan acak akan 20% akurat, jadi itu adalah kemajuan! (Ini juga melaporkan angka 'kerugian', tetapi Anda mengabaikannya dengan aman untuk saat ini.)

Sebelumnya Anda memisahkan data ke dalam data pelatihan dan pengujian, sehingga Anda bisa mendapatkan pengukuran tentang performa jaringan pada data yang belum pernah dilihat sebelumnya - indikator yang lebih baik tentang kemungkinan performanya di dunia nyata dengan menggunakan model.evaluate di data pengujian:

loss, accuracy = model.evaluate(test_data)

Perintah ini akan menampilkan output seperti ini:

12/12 [===] - 5s 115ms/step - loss: 0.6622 - accuracy: 0.8801

Perhatikan keakuratannya di sini. Ini adalah 88,01%, jadi menggunakan model default di dunia nyata harus mengharapkan tingkat akurasi tersebut. Hal ini tidak buruk untuk model default yang Anda latih sekitar satu menit. Tentu saja Anda mungkin dapat melakukan banyak penyesuaian untuk meningkatkan model tersebut, dan itu adalah ilmu pengetahuan itu sendiri.

6. Mengekspor Model

Setelah model dilatih, langkah berikutnya adalah mengekspornya dalam format .tflite yang dapat digunakan aplikasi seluler. Pembuat model menyediakan metode ekspor yang mudah yang dapat Anda gunakan — cukup tentukan direktori tempat output akan dihasilkan.

Berikut kodenya:

model.export(export_dir='/mm_flowers')

Jika menjalankan ini di Google Colab, Anda dapat melihat model tersebut dengan mengklik ikon folder di sebelah kiri layar:

cc5b9988775633b4.png

Dari sini, Anda akan mendapatkan daftar direktori saat ini. Gunakan tombol yang ditunjukkan untuk memindahkan "atas" direktori:

51e6ac47c992142a.png

Dalam kode yang Anda tentukan untuk diekspor ke direktori mm_flowers. Buka file tersebut, dan Anda akan melihat file bernama'model.tflite'. Ini adalah model terlatih Anda.

57bad87f294fd189.png

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

aee14ad10c4a8a1a.png

Setelah beberapa saat, model Anda akan didownload ke folder download.

7. Selamat

Kini Anda siap mengintegrasikannya ke aplikasi seluler. Anda akan melakukannya di lab berikutnya.