Transfer pembelajaran untuk model klasifikasi gambar TensorFlow di Amazon SageMaker

Amazon SageMaker menyediakan serangkaian algoritme bawaan, model pra-terlatih, dan templat solusi yang dibuat sebelumnya untuk membantu ilmuwan data dan praktisi pembelajaran mesin (ML) memulai pelatihan dan menerapkan model ML dengan cepat. Anda dapat menggunakan algoritme dan model ini untuk pembelajaran terawasi dan tidak terawasi. Mereka dapat memproses berbagai jenis data input, termasuk tabular, gambar, dan teks.

Mulai hari ini, SageMaker menyediakan algoritme bawaan baru untuk klasifikasi gambar: Klasifikasi Gambar โ€“ TensorFlow. Ini adalah algoritme pembelajaran terawasi yang mendukung pembelajaran transfer untuk banyak model pra-terlatih yang tersedia di Pusat TensorFlow. Dibutuhkan gambar sebagai probabilitas input dan output untuk setiap label kelas. Anda dapat menyempurnakan model pra-latihan ini menggunakan pembelajaran transfer bahkan ketika sejumlah besar gambar pelatihan tidak tersedia. Ini tersedia melalui SageMaker algoritme bawaan serta melalui UI JumpStart SageMaker dalam Studio Amazon SageMaker. Untuk informasi lebih lanjut, lihat dokumentasinya Klasifikasi Gambar โ€“ TensorFlow dan contoh buku catatan Pengantar SageMaker TensorFlow โ€“ Klasifikasi Gambar.

Klasifikasi gambar dengan TensorFlow di SageMaker memberikan pembelajaran transfer pada banyak model terlatih yang tersedia di TensorFlow Hub. Menurut jumlah label kelas dalam data pelatihan, lapisan klasifikasi dilampirkan ke model TensorFlow Hub yang telah dilatih sebelumnya. Lapisan klasifikasi terdiri dari lapisan putus sekolah dan lapisan padat, yang merupakan lapisan yang terhubung penuh dengan regularizer 2-norma yang diinisialisasi dengan bobot acak. Pelatihan model memiliki hyperparameter untuk laju dropout layer dropout dan faktor regularisasi L2 untuk layer padat. Kemudian seluruh jaringan, termasuk model pra-pelatihan, atau hanya lapisan klasifikasi teratas yang dapat disesuaikan pada data pelatihan baru. Dalam mode pembelajaran transfer ini, Anda dapat mencapai pelatihan bahkan dengan kumpulan data yang lebih kecil.

Cara menggunakan algoritme klasifikasi gambar TensorFlow baru

Bagian ini menjelaskan cara menggunakan algoritme klasifikasi gambar TensorFlow dengan SDK Python SageMaker. Untuk informasi tentang cara menggunakannya dari UI Studio, lihat SageMaker JumpStart.

Algoritme mendukung pembelajaran transfer untuk model pra-terlatih yang tercantum dalam Model Hub TensorFlow. Setiap model diidentifikasi dengan keunikan model_id. Kode berikut menunjukkan cara menyempurnakan MobileNet V2 1.00 224 yang diidentifikasi oleh model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 pada set data pelatihan khusus. Untuk setiap model_id, untuk meluncurkan pekerjaan pelatihan SageMaker melalui Penilai kelas SageMaker Python SDK, Anda perlu mengambil URI image Docker, URI skrip pelatihan, dan URI model yang telah dilatih sebelumnya melalui fungsi utilitas yang disediakan di SageMaker. URI skrip pelatihan berisi semua kode yang diperlukan untuk pemrosesan data, memuat model yang telah dilatih sebelumnya, pelatihan model, dan menyimpan model yang telah dilatih untuk inferensi. Model URI pra-terlatih berisi definisi arsitektur model pra-terlatih dan parameter model. Perhatikan bahwa URI gambar Docker dan URI skrip pelatihan sama untuk semua model klasifikasi gambar TensorFlow. Model URI pra-terlatih khusus untuk model tertentu. Tarball model yang telah dilatih sebelumnya telah diunduh sebelumnya dari TensorFlow Hub dan disimpan dengan tanda tangan model yang sesuai di Layanan Penyimpanan Sederhana Amazon (Amazon S3), sehingga tugas pelatihan berjalan dalam isolasi jaringan. Lihat kode berikut:

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")

# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Dengan artefak pelatihan khusus model ini, Anda dapat membuat objek dari Penilai kelas:

# Create SageMaker Estimator instance
tf_ic_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
)

Selanjutnya, untuk mentransfer pembelajaran pada dataset kustom, Anda mungkin perlu mengubah nilai default dari hyperparameter pelatihan, yang tercantum di Hyperparameter. Anda dapat mengambil kamus Python dari hyperparameter ini dengan nilai defaultnya dengan memanggil hyperparameters.retrieve_default, perbarui sesuai kebutuhan, lalu teruskan ke kelas Estimator. Perhatikan bahwa nilai default dari beberapa hyperparameter berbeda untuk model yang berbeda. Untuk model besar, ukuran batch default lebih kecil dan train_only_top_layer hyperparameter diatur ke True. hiperparameter Train_only_top_layer mendefinisikan parameter model mana yang berubah selama proses fine-tuning. Jika train_only_top_layer is True, parameter lapisan klasifikasi berubah dan parameter lainnya tetap konstan selama proses fine-tuning. Di sisi lain, jika train_only_top_layer is False, semua parameter model disetel dengan baik. Lihat kode berikut:

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Kode berikut menyediakan set data pelatihan default yang dihosting di bucket S3. Kami menyediakan tf_flowers dataset sebagai dataset default untuk menyempurnakan model. Dataset terdiri dari gambar lima jenis bunga. Kumpulan data telah diunduh dari TensorFlow bawah Lisensi Apache 2.0.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Terakhir, untuk meluncurkan tugas pelatihan SageMaker untuk menyempurnakan model, hubungi .fit pada objek kelas Estimator, saat melewati lokasi S3 dari dataset pelatihan:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Untuk informasi selengkapnya tentang cara menggunakan algoritme klasifikasi gambar SageMaker TensorFlow baru untuk pembelajaran transfer pada kumpulan data kustom, terapkan model yang disempurnakan, jalankan inferensi pada model yang diterapkan, dan terapkan model yang telah dilatih sebelumnya tanpa penyesuaian terlebih dahulu pada kumpulan data khusus, lihat buku catatan contoh berikut: Pengantar SageMaker TensorFlow โ€“ Klasifikasi Gambar.

Antarmuka input/output untuk algoritme klasifikasi gambar TensorFlow

Anda dapat menyempurnakan setiap model pra-latihan yang tercantum di Model Hub TensorFlow untuk setiap dataset tertentu yang terdiri dari gambar milik sejumlah kelas. Tujuannya adalah untuk meminimalkan kesalahan prediksi pada data input. Model yang dikembalikan oleh fine-tuning dapat digunakan lebih lanjut untuk inferensi. Berikut ini adalah instruksi tentang bagaimana data pelatihan harus diformat untuk input ke model:

  • Memasukkan โ€“ Direktori dengan sub-direktori sebanyak jumlah kelas. Setiap sub-direktori harus memiliki gambar milik kelas tersebut dalam format .jpg, .jpeg, atau .png.
  • Keluaran โ€“ Model yang disesuaikan yang dapat digunakan untuk inferensi atau dapat dilatih lebih lanjut menggunakan pelatihan tambahan. Tanda tangan prapemrosesan dan pascapemrosesan ditambahkan ke model yang disesuaikan sedemikian rupa sehingga mengambil gambar .jpg mentah sebagai input dan mengembalikan probabilitas kelas. Sebuah indeks kelas pemetaan file ke label kelas disimpan bersama dengan model.

Direktori input akan terlihat seperti contoh berikut jika data pelatihan berisi gambar dari dua kelas: roses dan dandelion. Jalur S3 akan terlihat seperti s3://bucket_name/input_directory/. Perhatikan jejaknya / Dibutuhkan. Nama folder dan roses, dandelion, dan nama file .jpg bisa apa saja. File pemetaan label yang disimpan bersama dengan model terlatih pada ember S3 memetakan nama folder mawar dan dandelion ke indeks dalam daftar probabilitas kelas keluaran model. Pemetaan mengikuti urutan abjad nama folder. Dalam contoh berikut, indeks 0 dalam daftar keluaran model sesuai dengan: dandelion, dan indeks 1 sesuai dengan roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

Inferensi dengan algoritma klasifikasi gambar TensorFlow

Model yang dihasilkan dapat dihosting untuk inferensi dan mendukung format gambar .jpg, .jpeg, dan .png yang dikodekan sebagai application/x-image Jenis konten. Gambar input diubah ukurannya secara otomatis. Keluaran berisi nilai probabilitas, label kelas untuk semua kelas, dan label prediksi yang sesuai dengan indeks kelas dengan probabilitas tertinggi, dikodekan dalam format JSON. Model klasifikasi gambar TensorFlow memproses satu gambar per permintaan dan hanya menghasilkan satu baris di JSON. Berikut ini adalah contoh respons di JSON:

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If accept diatur ke application/json, maka model hanya menampilkan probabilitas. Untuk detail lebih lanjut tentang pelatihan dan inferensi, lihat contoh buku catatan Pengantar SageMaker TensorFlow โ€“ Klasifikasi Gambar.

Gunakan algoritme bawaan SageMaker melalui UI JumpStart

Anda juga dapat menggunakan klasifikasi gambar SageMaker TensorFlow dan algoritme bawaan lainnya dengan beberapa klik melalui UI JumpStart. JumpStart adalah fitur SageMaker yang memungkinkan Anda melatih dan menerapkan algoritme bawaan dan model terlatih dari berbagai kerangka kerja ML dan hub model melalui antarmuka grafis. Ini juga memungkinkan Anda untuk menerapkan solusi ML lengkap yang menyatukan model ML dan berbagai layanan AWS lainnya untuk menyelesaikan kasus penggunaan yang ditargetkan. Periksa Jalankan klasifikasi teks dengan Amazon SageMaker JumpStart menggunakan TensorFlow Hub dan model Hugging Face untuk mengetahui cara menggunakan JumpStart untuk melatih algoritme atau model yang telah dilatih sebelumnya dalam beberapa klik.

Kesimpulan

Dalam postingan ini, kami mengumumkan peluncuran algoritma bawaan klasifikasi gambar SageMaker TensorFlow. Kami memberikan kode contoh tentang cara melakukan pembelajaran transfer pada kumpulan data khusus menggunakan model yang telah dilatih sebelumnya dari TensorFlow Hub menggunakan algoritme ini. Untuk informasi lebih lanjut, periksa dokumentasi dan contoh notebook.


Tentang penulis

Transfer pembelajaran untuk model klasifikasi gambar TensorFlow di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Dr Ashish Khetan adalah Ilmuwan Terapan Senior dengan Algoritme bawaan Amazon SageMaker dan membantu mengembangkan algoritme pembelajaran mesin. Ia mendapatkan gelar PhD dari University of Illinois Urbana-Champaign. Dia adalah peneliti aktif dalam pembelajaran mesin dan inferensi statistik, dan telah menerbitkan banyak makalah di konferensi NeurIPS, ICML, ICLR, JMLR, ACL, dan EMNLP.

Transfer pembelajaran untuk model klasifikasi gambar TensorFlow di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Dr Vivek Madan adalah Ilmuwan Terapan dengan Tim JumpStart Amazon SageMaker. Ia mendapatkan gelar PhD dari University of Illinois Urbana-Champaign dan merupakan Peneliti Pasca Doktoral di Georgia Tech. Dia adalah peneliti aktif dalam pembelajaran mesin dan desain algoritma, dan telah menerbitkan makalah di konferensi EMNLP, ICLR, COLT, FOCS, dan SODA.

Transfer pembelajaran untuk model klasifikasi gambar TensorFlow di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Joรฃo Moura adalah Arsitek Solusi Spesialis AI/ML di Amazon Web Services. Dia sebagian besar berfokus pada kasus penggunaan NLP dan membantu pelanggan mengoptimalkan pelatihan dan penerapan model pembelajaran mendalam. Dia juga merupakan pendukung aktif solusi ML kode rendah dan perangkat keras khusus ML.

Transfer pembelajaran untuk model klasifikasi gambar TensorFlow di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Raju Penmatcha adalah Arsitek Solusi Spesialis AI/ML Senior di AWS. Dia bekerja dengan pelanggan pendidikan, pemerintah, dan nirlaba pada pembelajaran mesin dan proyek terkait kecerdasan buatan, membantu mereka membangun solusi menggunakan AWS. Saat tidak membantu pelanggan, dia suka bepergian ke tempat baru.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS