Farih.co.id
Home Programming Cara Meningkatkan Model Pembelajaran Mesin Anda Dengan Augmentasi Data TensorFlow

Cara Meningkatkan Model Pembelajaran Mesin Anda Dengan Augmentasi Data TensorFlow

how to improve machine learning models using data augmentation featured image

Augmentasi data adalah proses menerapkan berbagai transformasi ke data pelatihan. Ini membantu meningkatkan keragaman dataset dan mencegah overfitting. Overfitting sebagian besar terjadi saat Anda memiliki data terbatas untuk melatih model Anda.


Di sini, Anda akan mempelajari cara menggunakan modul augmentasi data TensorFlow untuk mendiversifikasi kumpulan data Anda. Ini akan mencegah overfitting dengan menghasilkan titik data baru yang sedikit berbeda dari data aslinya.


Sampel Dataset Yang Akan Anda Gunakan

Anda akan menggunakan kumpulan data kucing dan anjing dari Kaggle. Kumpulan data ini berisi sekitar 3.000 gambar kucing dan anjing. Gambar-gambar ini dibagi menjadi set pelatihan, pengujian, dan validasi.

Kumpulan data kucing dan anjing dengan label

Label 1.0 mewakili seekor anjing sedangkan label 0.0 mewakili seekor kucing.

Kode sumber lengkap yang menerapkan teknik augmentasi data dan yang tidak tersedia di a repositori GitHub.

Menginstal dan Mengimpor TensorFlow

Untuk menindaklanjuti, Anda harus memiliki pemahaman dasar tentang Python. Anda juga harus memiliki pengetahuan dasar tentang pembelajaran mesin. Jika Anda memerlukan penyegaran, Anda mungkin ingin mempertimbangkan untuk mengikuti beberapa tutorial tentang pembelajaran mesin.

Membuka Google Colab. Ubah jenis runtime ke GPU. Kemudian, jalankan perintah ajaib berikut pada sel kode pertama untuk menginstal TensorFlow ke lingkungan Anda.

 !pip install tensorflow 

Impor TensorFlow serta modul dan kelasnya yang relevan.

 import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout

Itu tensorflow.keras.preprocessing.image akan memungkinkan Anda untuk melakukan augmentasi data pada kumpulan data Anda.

Membuat Instance dari Kelas ImageDataGenerator

Buat contoh dari ImageDataGenerator kelas untuk data kereta api. Anda akan menggunakan objek ini untuk melakukan prapemrosesan data pelatihan. Ini akan menghasilkan kumpulan data gambar yang diperbesar secara real time selama pelatihan model.

Dalam tugas mengklasifikasikan apakah suatu gambar adalah kucing atau anjing, Anda dapat menggunakan teknik pembalikan, lebar acak, tinggi acak, kecerahan acak, dan pembesaran data. Teknik ini akan menghasilkan data baru yang berisi variasi data asli yang mewakili skenario dunia nyata.

 
train_datagen = ImageDataGenerator(rescale=1./255,
                                   horizontal_flip=True,
                                   width_shift_range=0.2,
                                   height_shift_range=0.2,
                                   brightness_range=[0.2,1.0],
                                   zoom_range=0.2)

Buat instance lain dari ImageDataGenerator kelas untuk data uji. Anda akan membutuhkan skala ulang parameter. Ini akan menormalkan nilai piksel dari gambar uji agar sesuai dengan format yang digunakan selama pelatihan.

 
test_datagen = ImageDataGenerator(rescale=1./255)

Buat instance terakhir dari ImageDataGenerator kelas untuk data validasi. Skala ulang data validasi dengan cara yang sama seperti data uji.

 
validation_datagen = ImageDataGenerator(rescale=1./255)

Anda tidak perlu menerapkan teknik augmentasi lainnya pada data pengujian dan validasi. Ini karena model menggunakan data tes dan validasi untuk tujuan evaluasi saja. Mereka harus mencerminkan distribusi data asli.

Memuat Data Anda

Membuat DirectoryIterator objek dari direktori pelatihan. Ini akan menghasilkan kumpulan gambar yang diperbesar. Kemudian tentukan direktori yang menyimpan data pelatihan. Ubah ukuran gambar menjadi ukuran tetap sebesar 64×64 piksel. Tentukan jumlah gambar yang akan digunakan setiap batch. Terakhir, tentukan jenis label yang akan dibuat biner (yaitu, kucing atau anjing).

 
train_data = train_datagen.flow_from_directory(directory=r'/content/drive/MyDrive/cats_and_dogs_filtered/train',
                                               target_size=(64, 64),
                                               batch_size=32,
                                               class_mode='binary')
                                               

Buat yang lain DirectoryIterator objek dari direktori pengujian. Tetapkan parameter ke nilai yang sama dengan data pelatihan.

 
test_data = test_datagen.flow_from_directory(directory='/content/drive/MyDrive/cats_and_dogs_filtered/test',
                                             target_size=(64, 64),
                                             batch_size=32,
                                             class_mode='binary')

Buat final DirectoryIterator objek dari direktori validasi. Parameternya tetap sama dengan data pelatihan dan pengujian.

 
validation_data = validation_datagen.flow_from_directory(directory='/content/drive/MyDrive/cats_and_dogs_filtered/validation',
                                                         target_size=(64, 64),
                                                         batch_size=32,
                                                         class_mode='binary')

Iterator direktori tidak menambah dataset validasi dan pengujian.

Menentukan Model Anda

Tentukan arsitektur jaringan saraf Anda. Gunakan Convolutional Neural Network (CNN). CNN dirancang untuk mengenali pola dan fitur dalam gambar.

 model = Sequential()


model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)))


model.add(MaxPooling2D(pool_size=(2, 2)))


model.add(Conv2D(64, (3, 3), activation='relu'))


model.add(MaxPooling2D(pool_size=(2, 2)))


model.add(Flatten())


model.add(Dense(128, activation='relu'))


model.add(Dropout(0.5))


model.add(Dense(1, activation='sigmoid'))

Kompilasi model dengan menggunakan biner lintas-entropi fungsi kerugian. Masalah klasifikasi biner biasanya menggunakan Ini. Untuk pengoptimal, gunakan Pengoptimal Adam. Ini adalah algoritme pengoptimalan laju pembelajaran adaptif. Akhirnya, evaluasi model dalam hal akurasi.

 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 

Cetak ringkasan arsitektur model ke konsol.

 model.summary() 

Tangkapan layar berikut menunjukkan visualisasi arsitektur model.

Ringkasan model machine learning yang dicetak di konsol

Ini memberi Anda gambaran tentang bagaimana desain model Anda terlihat.

Latih Model Anda

Latih model menggunakan bugar() metode. Tetapkan jumlah langkah per epoch menjadi jumlah sampel pelatihan dibagi dengan batch_size. Juga, atur data validasi dan jumlah langkah validasi.

 
history = model.fit(train_data,
                    steps_per_epoch=train_data.n // train_data.batch_size,
                    epochs=50,
                    validation_data=validation_data,
                    validation_steps=validation_data.n // validation_data.batch_size)

Itu ImageDataGenerator kelas menerapkan augmentasi data ke data pelatihan secara real time. Hal ini membuat proses pelatihan model menjadi lebih lambat.

Mengevaluasi Model Anda

Evaluasi kinerja model Anda pada data uji menggunakan evaluasi() metode. Juga, cetak kerugian dan akurasi pengujian ke konsol.

 test_loss, test_acc = model.evaluate(test_data,
                                     steps=test_data.n // test_data.batch_size)
print(f'Test loss: {test_loss}')
print(f'Test accuracy: {test_acc}')

Tangkapan layar berikut menunjukkan kinerja model.

Hasil evaluasi model pembelajaran mesin

Model berperforma cukup baik pada data yang belum pernah dilihat.

Saat Anda menjalankan kode yang tidak mengimplementasikan teknik augmentasi data, akurasi pelatihan model adalah 1. Artinya overfits. Itu juga berkinerja buruk pada data yang belum pernah dilihatnya sebelumnya. Ini karena ia mempelajari kekhasan dataset.

Kapan Augmentasi Data Tidak Membantu?

  • Padahal datasetnya sudah beragam dan besar: Augmentasi data meningkatkan ukuran dan keragaman kumpulan data. Jika dataset sudah besar dan beragam, augmentasi data tidak akan berguna.
  • Ketika dataset terlalu kecil: Penambahan data tidak dapat membuat fitur baru yang tidak ada dalam kumpulan data asli. Oleh karena itu, ini tidak dapat mengkompensasi set data kecil yang tidak memiliki sebagian besar fitur yang perlu dipelajari oleh model.
  • Ketika jenis augmentasi data tidak sesuai: Misalnya, memutar gambar mungkin tidak membantu jika orientasi objek penting.

Apa Kemampuan TensorFlow

TensorFlow adalah perpustakaan yang beragam dan kuat. Itu mampu melatih model pembelajaran mendalam yang kompleks dan dapat berjalan di berbagai perangkat dari ponsel cerdas hingga kelompok server. Ini telah membantu perangkat komputasi canggih yang memanfaatkan pembelajaran mesin.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad