Transfer pembelajaran untuk model deteksi objek 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.

Posting ini adalah yang kedua dari seri algoritma bawaan baru di SageMaker. Dalam Pos pertama, kami menunjukkan bagaimana SageMaker menyediakan algoritme bawaan untuk klasifikasi gambar. Hari ini, kami mengumumkan bahwa SageMaker menyediakan algoritme bawaan baru untuk deteksi objek menggunakan TensorFlow. Algoritme pembelajaran yang diawasi ini mendukung pembelajaran transfer untuk banyak model terlatih yang tersedia di TensorFlow. Dibutuhkan gambar sebagai masukan dan keluaran objek yang ada dalam gambar beserta kotak pembatasnya. Anda dapat menyempurnakan model terlatih ini menggunakan pembelajaran transfer bahkan ketika sejumlah besar gambar pelatihan tidak tersedia. Ini tersedia melalui SageMaker algoritme bawaan serta melalui UI JumpStart SageMaker in Studio Amazon SageMaker. Untuk informasi lebih lanjut, lihat Tensorflow Deteksi Objek dan contoh buku catatan Pengantar SageMaker Tensorflow โ€“ Deteksi Objek.

Deteksi objek dengan TensorFlow di SageMaker memberikan pembelajaran transfer pada banyak model terlatih yang tersedia di TensorFlow Hub. Berdasarkan jumlah label kelas dalam data pelatihan, kepala deteksi objek baru yang diinisialisasi secara acak menggantikan kepala model TensorFlow yang sudah ada. Baik seluruh jaringan, termasuk model yang telah dilatih sebelumnya, atau hanya lapisan atas (kepala deteksi objek) 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 algoritma deteksi objek TensorFlow yang baru

Bagian ini menjelaskan cara menggunakan algoritma deteksi objek 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 TensorFlow. Setiap model diidentifikasi dengan keunikan model_id. Kode berikut menunjukkan cara menyempurnakan model FPN ResNet50 V1 yang diidentifikasi oleh model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 pada set data pelatihan khusus. Untuk setiap model_id, untuk meluncurkan pekerjaan pelatihan SageMaker melalui Penilai kelas SageMaker Python SDK, Anda perlu mengambil URI gambar Docker, URI skrip pelatihan, dan URI model terlatih 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 dilatih untuk inferensi. URI model terlatih berisi definisi arsitektur model terlatih dan parameter model. Perhatikan bahwa URI gambar Docker dan URI skrip pelatihan sama untuk semua model deteksi objek TensorFlow. URI model terlatih khusus untuk model tertentu. Tarball model terlatih telah diunduh sebelumnya dari TensorFlow 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_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
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-tensorflow-od-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_od_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"

Kami menyediakan Kumpulan data PennFudanPed sebagai kumpulan data default untuk menyempurnakan model. Dataset terdiri dari gambar pejalan kaki. Kode berikut menyediakan himpunan data pelatihan default yang dihosting di bucket S3:

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

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_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Untuk informasi selengkapnya tentang cara menggunakan algoritme deteksi objek SageMaker TensorFlow yang baru untuk mentransfer pembelajaran pada kumpulan data khusus, menerapkan model yang telah disempurnakan, menjalankan inferensi pada model yang diterapkan, dan menerapkan model yang telah dilatih sebelumnya sebagaimana adanya tanpa melakukan penyesuaian terlebih dahulu pada himpunan data khusus, lihat contoh buku catatan berikut: Pengantar SageMaker TensorFlow โ€“ Deteksi Objek.

Antarmuka input/output untuk algoritma deteksi objek TensorFlow

Anda dapat menyempurnakan setiap model pra-latihan yang tercantum di Model 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 gambar subdirektori dan file annotations.json.
  • Keluaran โ€“ Ada dua keluaran. Yang pertama adalah model yang telah disempurnakan, yang dapat diterapkan untuk inferensi atau dilatih lebih lanjut menggunakan pelatihan tambahan. Kedua adalah file yang memetakan indeks kelas ke label kelas; ini disimpan bersama dengan modelnya.

Direktori masukan akan terlihat seperti contoh berikut:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

Grafik annotations.json file harus memiliki informasi untuk bounding_boxes dan label kelas mereka. Itu harus memiliki kamus dengan kuncinya "images" dan "annotations". Nilai untuk "images" kuncinya harus berupa daftar entri, satu untuk setiap gambar formulir {"file_name": image_name, "height": height, "width": width, "id": image_id}. Nilai dari "annotations" kuncinya harus berupa daftar entri, satu untuk setiap kotak pembatas formulir {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

Inferensi dengan algoritma deteksi objek 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 masukan diubah ukurannya secara otomatis. Outputnya berisi kotak, kelas prediksi, dan skor untuk setiap prediksi. Model deteksi objek TensorFlow memproses satu gambar per permintaan dan hanya menghasilkan satu baris di JSON. Berikut ini contoh respon di JSON:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept diatur ke application/json, maka model hanya mengeluarkan kotak, kelas, dan skor yang diprediksi. Untuk detail selengkapnya tentang pelatihan dan inferensi, lihat contoh buku catatan Pengantar SageMaker TensorFlow โ€“ Deteksi Objek.

Gunakan algoritme bawaan SageMaker melalui UI JumpStart

Anda juga dapat menggunakan deteksi objek SageMaker TensorFlow dan algoritma bawaan lainnya hanya dengan beberapa klik melalui JumpStart UI. 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. Hal ini juga memungkinkan Anda untuk menerapkan solusi ML lengkap yang menyatukan model ML dan berbagai layanan AWS lainnya untuk menyelesaikan kasus penggunaan yang ditargetkan.

Berikut adalah dua video yang menunjukkan bagaimana Anda dapat mereplikasi proses penyempurnaan dan penerapan yang sama yang baru saja kami lalui dengan beberapa klik melalui UI JumpStart.

Sempurnakan model yang telah dilatih sebelumnya

Berikut adalah proses untuk menyempurnakan model deteksi objek terlatih yang sama.

Deploy model yang telah disempurnakan

Setelah pelatihan model selesai, Anda dapat langsung men-deploy model ke endpoint real-time yang persisten dengan satu klik.

Kesimpulan

Dalam postingan ini, kami mengumumkan peluncuran algoritma bawaan deteksi objek SageMaker TensorFlow. Kami memberikan contoh kode tentang cara melakukan pembelajaran transfer pada kumpulan data khusus menggunakan model terlatih dari TensorFlow menggunakan algoritme ini.

Untuk informasi lebih lanjut, lihat dokumentasi dan contoh notebook.


Tentang penulis

Pembelajaran transfer untuk model deteksi objek TensorFlow di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Dr Vivek Madan adalah Ilmuwan Terapan dengan Tim JumpStart Amazon SageMaker. Ia memperoleh gelar PhD dari University of Illinois di 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.

Pembelajaran transfer untuk model deteksi objek 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.

Pembelajaran transfer untuk model deteksi objek 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. Dia 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.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS