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. Secara umum, alat ini mengenali gambar bunga – melihat kelopak, bunga, tanaman, dan langit.

Untuk mengupdate aplikasi agar dapat mengenali bunga, aster, atau mawar tertentu, misalnya, Anda memerlukan model kustom yang dilatih dengan banyak contoh dari 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 diperlukan hardware tertentu – semuanya dapat diselesaikan menggunakan Google Colab di browser.

2. Mulai

Semua kode yang harus diikuti telah disiapkan untuk Anda dan dapat dijalankan menggunakan Google Colab di sini. Jika 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 memiliki banyak contoh bunga tertentu, akan mudah bagi Anda untuk melatih model dengan TensorFlow Lite Model maker agar dapat 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 bunga aster, dandelion, mawar, bunga matahari, dan tulip, Anda dapat menyusunnya ke dalam direktori seperti ini:

4ee12554e75b103f.pngS

Siapkan dan hosting di server, dan Anda akan dapat melatih model dengannya. Anda akan menggunakan salah satu yang telah disiapkan untuk Anda selama sisa lab ini.

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

3. Menginstal dan mengimpor dependensi

  1. Instal TensorFlow Lite Model Maker. Anda dapat melakukan ini dengan instalasi pip. &> /dev/null at the end just suppresses the output. Model Maker menghasilkan banyak hal yang tidak langsung relevan. Fitur ini telah disembunyikan sehingga Anda dapat berfokus 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')

Setelah lingkungan 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 mengunduh zip dan mendekompresinya, gambar Anda akan secara otomatis diberi label berdasarkan folder tempat gambar tersebut berada. Direktori ini akan direferensikan 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 kursor ke folder tersebut dan Anda siap menggunakannya.

Salah satu elemen penting dalam melatih model dengan machine learning adalah tidak menggunakan semua data Anda untuk pelatihan. Tahan sebentar 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, dan 10% sebagai data pengujian:

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 mengabstraksikan banyak hal spesifik dalam merancang jaringan neural sehingga Anda tidak perlu berurusan dengan 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 dengan data yang disediakan:

model = image_classifier.create(train_data)

Saat menjalankan ini, Anda akan melihat output yang mirip 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 menampilkan arsitektur model Anda. Hal yang dilakukan Model Maker di balik layar disebut Pembelajaran Transfer,yang menggunakan model terlatih yang sudah ada sebagai titik awal, dan mengambil hal-hal yang dipelajari model tersebut tentang bagaimana gambar dibuat 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 1000 jenis gambar. Logikanya di sini adalah metodologi yang digunakan, dengan mempelajari 'fitur' untuk membedakan antara 1.000 class, dapat digunakan kembali. 'Fitur' yang sama dapat dipetakan ke 5 kelas bunga, jadi tidak perlu dipelajari dari awal.

Model melalui 5 epoch – dalam hal ini, epoch adalah siklus pelatihan penuh di mana jaringan neural mencoba mencocokkan gambar dengan labelnya. Pada saat melewati 5 epoch, dalam waktu sekitar 1 menit, akurasinya 93,85% pada data pelatihan. Mengingat ada 5 class, tebakan acak akan 20% akurat, jadi itulah progresnya! (Aplikasi ini juga melaporkan nomor ‘kerugian', tetapi untuk saat ini Anda aman mengabaikannya.)

Sebelumnya, Anda membagi data menjadi data pelatihan dan pengujian, sehingga Anda bisa mendapatkan ukuran tentang performa jaringan pada data yang belum pernah dilihat sebelumnya – indikator yang lebih baik tentang kemungkinan performanya di dunia nyata dengan menggunakan model.evaluate pada data pengujian:

loss, accuracy = model.evaluate(test_data)

Output yang dihasilkan akan seperti ini:

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

Perhatikan akurasinya di sini. Nilainya 88,01%, jadi menggunakan model default di dunia nyata akan mencapai tingkat akurasi tersebut. Hal itu tidak buruk untuk model default yang Anda latih dalam waktu sekitar satu menit. Tentu saja Anda dapat melakukan banyak penyesuaian untuk meningkatkan kualitas modelnya, dan itu adalah suatu ilmu pengetahuan.

6. Mengekspor Model

Setelah model dilatih, langkah berikutnya adalah mengekspornya dalam format .tflite yang dapat digunakan aplikasi seluler. Model maker menyediakan metode ekspor yang mudah digunakan — cukup tentukan direktori yang akan menjadi tujuan output.

Berikut kodenya:

model.export(export_dir='/mm_flowers')

Jika Anda menjalankannya di Google Colab, Anda dapat melihat model ini 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 "ke atas" direktori:

51e6ac47c992142a.pngS

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

57bad87f294fd189.pngS

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

aee14ad10c4a8a1a.png

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

7. Selamat

Sekarang Anda siap untuk mengintegrasikannya ke dalam aplikasi seluler! Anda akan melakukannya di lab berikutnya.