Jalankan segmentasi gambar dengan Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Jalankan segmentasi gambar dengan Amazon SageMaker JumpStart

Pada bulan Desember 2020, AWS mengumumkan ketersediaan umum Mulai Lompatan Amazon SageMaker, kemampuan Amazon SageMaker yang membantu Anda memulai machine learning (ML) dengan cepat dan mudah. JumpStart menyediakan penyetelan satu klik dan penerapan berbagai model terlatih di seluruh tugas ML populer, serta pilihan solusi ujung ke ujung yang memecahkan masalah bisnis umum. Fitur-fitur ini menghilangkan beban berat dari setiap langkah proses ML, membuatnya lebih mudah untuk mengembangkan model berkualitas tinggi dan mengurangi waktu penerapan.

Postingan ini adalah yang ketiga dari rangkaian penggunaan JumpStart untuk tugas ML tertentu. Dalam Pos pertama, kami menunjukkan bagaimana Anda dapat menjalankan kasus penggunaan klasifikasi gambar di JumpStart. Dalam pos kedua, kami menunjukkan bagaimana Anda dapat menjalankan kasus penggunaan klasifikasi teks di JumpStart. Dalam posting ini, kami memberikan panduan langkah demi langkah tentang cara menyempurnakan dan menerapkan model segmentasi gambar, menggunakan model terlatih dari MXNet. Kami mengeksplorasi dua cara untuk mendapatkan hasil yang sama: melalui antarmuka grafis JumpStart di Studio Amazon SageMaker, dan secara terprogram melalui API JumpStart.

Jika Anda ingin langsung masuk ke kode API JumpStart yang kami jelaskan di posting ini, Anda dapat merujuk ke contoh notebook Jupyter berikut:

Ikhtisar JumpStart

JumpStart membantu Anda memulai model ML untuk berbagai tugas tanpa menulis satu baris kode pun. Pada saat penulisan, JumpStart memungkinkan Anda untuk melakukan hal berikut:

  • Terapkan model terlatih untuk tugas ML umum โ€“ JumpStart memungkinkan Anda untuk menangani tugas ML umum tanpa upaya pengembangan dengan menyediakan penerapan model yang telah dilatih sebelumnya dengan mudah pada kumpulan data besar yang tersedia untuk umum. Komunitas riset ML telah berupaya keras untuk membuat sebagian besar model yang dikembangkan baru-baru ini tersedia untuk umum untuk digunakan. JumpStart menampung koleksi lebih dari 300 model, mencakup 15 tugas ML paling populer seperti deteksi objek, klasifikasi teks, dan pembuatan teks, sehingga memudahkan pemula untuk menggunakannya. Model ini diambil dari hub model populer seperti TensorFlow, PyTorch, Hugging Face, dan MXNet.
  • Sempurnakan model yang telah dilatih sebelumnya โ€“ JumpStart memungkinkan Anda untuk menyempurnakan model pra-latihan tanpa perlu menulis algoritme pelatihan Anda sendiri. Dalam ML, kemampuan untuk mentransfer pengetahuan yang dipelajari dalam satu domain ke domain lain disebut belajar transfer. Anda dapat menggunakan pembelajaran transfer untuk menghasilkan model yang akurat pada kumpulan data Anda yang lebih kecil, dengan biaya pelatihan yang jauh lebih rendah daripada yang terlibat dalam pelatihan model asli. JumpStart juga menyertakan algoritme pelatihan populer berdasarkan LightGBM, CatBoost, XGBoost, dan Scikit-learn, yang dapat Anda latih dari awal untuk regresi dan klasifikasi tabular.
  • Gunakan solusi yang dibuat sebelumnya โ€“ JumpStart menyediakan 17 solusi untuk kasus penggunaan ML umum, seperti perkiraan permintaan dan aplikasi industri dan keuangan, yang dapat Anda terapkan hanya dengan beberapa klik. Solusi adalah aplikasi ML ujung ke ujung yang menyatukan berbagai layanan AWS untuk menyelesaikan kasus penggunaan bisnis tertentu. Mereka menggunakan Formasi AWS Cloud template dan arsitektur referensi untuk penerapan cepat, yang berarti dapat disesuaikan sepenuhnya.
  • Lihat contoh buku catatan untuk algoritme SageMaker โ€“ SageMaker menyediakan rangkaian algoritme bawaan untuk membantu ilmuwan data dan praktisi ML memulai pelatihan dan penerapan model ML dengan cepat. JumpStart menyediakan contoh buku catatan yang dapat Anda gunakan untuk menggunakan algoritme ini dengan cepat.
  • Tinjau video dan blog pelatihan โ€“ JumpStart juga menyediakan banyak posting blog dan video yang mengajari Anda cara menggunakan berbagai fungsi dalam SageMaker.

JumpStart menerima pengaturan VPC khusus dan Layanan Manajemen Kunci AWS (AWS KMS) kunci enkripsi, sehingga Anda dapat menggunakan model dan solusi yang tersedia dengan aman dalam lingkungan perusahaan Anda. Anda dapat meneruskan pengaturan keamanan Anda ke JumpStart di dalam Studio atau melalui SageMaker Python SDK.

Segmentasi semantik

Segmentasi semantik menggambarkan setiap kelas objek yang muncul dalam gambar input. Ini menandai (mengklasifikasi) setiap piksel dari gambar input dengan label kelas dari kumpulan kelas yang telah ditentukan sebelumnya. Beberapa objek dari kelas yang sama dipetakan ke topeng yang sama.

Model yang tersedia untuk fine-tuning membangun jaringan konvolusi penuh (FCN) "kepala" di atas jaringan dasar. Langkah fine-tuning menyempurnakan FCNHead sambil menjaga parameter sisa model tetap beku, dan mengembalikan model fine-tuned. Tujuannya adalah untuk meminimalkan kehilangan entropi silang softmax per piksel untuk melatih FCN. Model yang dikembalikan oleh fine-tuning dapat digunakan lebih lanjut untuk inferensi.

Direktori input akan terlihat seperti kode berikut jika data pelatihan berisi dua gambar. Nama file .png bisa apa saja.

input_directory
    |--images
        |--abc.png
        |--def.png
    |--masks
        |--abc.png
        |--def.png
    class_label_to_prediction_index.json

File mask harus memiliki informasi label kelas untuk setiap piksel.

Segmentasi instance

Segmentasi instan mendeteksi dan menggambarkan setiap objek menarik yang berbeda yang muncul dalam sebuah gambar. Ini menandai setiap piksel dengan label instance. Sementara segmentasi semantik memberikan tag yang sama ke piksel beberapa objek dari kelas yang sama, segmentasi instance selanjutnya memberi label piksel yang sesuai dengan setiap kemunculan objek pada gambar dengan tag terpisah.

Saat ini, JumpStart menawarkan model inferensi-saja untuk segmentasi instan dan tidak mendukung fine-tuning.

Gambar berikut mengilustrasikan perbedaan antara inferensi dalam segmentasi semantik dan segmentasi instance. Gambar asli memiliki dua orang dalam gambar. Segmentasi semantik memperlakukan banyak orang dalam gambar sebagai satu entitas: Person. Namun, segmentasi instance mengidentifikasi orang-orang individual di dalam Person kategori.

Ikhtisar solusi

Bagian berikut memberikan demo langkah demi langkah untuk melakukan segmentasi semantik dengan JumpStart, baik melalui UI Studio maupun melalui API JumpStart.

Kami berjalan melalui langkah-langkah berikut:

  1. Akses JumpStart melalui UI Studio:
    1. Jalankan inferensi pada model yang telah dilatih sebelumnya.
    2. Sempurnakan model yang telah dilatih sebelumnya.
  2. Gunakan JumpStart secara terprogram dengan SageMaker Python SDK:
    1. Jalankan inferensi pada model yang telah dilatih sebelumnya.
    2. Sempurnakan model yang telah dilatih sebelumnya.

Kami juga membahas fitur lanjutan tambahan JumpStart.

Akses JumpStart melalui UI Studio

Di bagian ini, kami mendemonstrasikan cara melatih dan menerapkan model JumpStart melalui UI Studio.

Jalankan inferensi pada model yang telah dilatih sebelumnya

Video berikut menunjukkan cara menemukan model segmentasi semantik yang telah dilatih sebelumnya di JumpStart dan menerapkannya. Halaman model berisi informasi berharga tentang model, cara menggunakannya, format data yang diharapkan, dan beberapa detail penyempurnaan. Anda dapat menerapkan salah satu model terlatih yang tersedia di JumpStart. Untuk inferensi, kami memilih jenis instance ml.g4dn.xlarge. Ini memberikan akselerasi GPU yang diperlukan untuk latensi inferensi rendah, tetapi pada titik harga yang lebih rendah. Setelah Anda mengonfigurasi instans hosting SageMaker, pilih Menyebarkan. Mungkin diperlukan waktu 5-10 menit hingga titik akhir persisten Anda aktif dan berjalan.

Setelah beberapa menit, titik akhir Anda beroperasi dan siap untuk menanggapi permintaan inferensi.

Demikian pula, Anda dapat menerapkan model segmentasi instans yang telah dilatih sebelumnya dengan mengikuti langkah-langkah yang sama di video sebelumnya saat mencari segmentasi instans alih-alih segmentasi semantik di bilah pencarian JumpStart.

Sempurnakan model yang telah dilatih sebelumnya

Video berikut menunjukkan cara menemukan dan menyempurnakan model segmentasi semantik di JumpStart. Dalam video, kami menyempurnakan model menggunakan Kumpulan data PennFudanPed, disediakan secara default di JumpStart, yang dapat Anda unduh di bawah Lisensi Apache 2.0.

Penyesuaian dataset Anda sendiri melibatkan pemformatan data yang benar (seperti yang dijelaskan pada halaman model), mengunggahnya ke Layanan Penyimpanan Sederhana Amazon (Amazon S3), dan menentukan lokasinya di konfigurasi sumber data. Kami menggunakan nilai hyperparameter yang sama yang ditetapkan secara default (jumlah epoch, kecepatan pembelajaran, dan ukuran batch). Kami juga menggunakan ml.p3.2xlarge yang didukung GPU sebagai instance pelatihan SageMaker kami.

Anda dapat memantau pekerjaan pelatihan Anda berjalan langsung di konsol Studio, dan diberi tahu setelah selesai. Setelah pelatihan selesai, Anda dapat menerapkan model yang disesuaikan dari halaman yang sama yang menyimpan detail tugas pelatihan. Alur kerja penerapan sama dengan penerapan model yang telah dilatih sebelumnya.

Gunakan JumpStart secara terprogram dengan SageMaker SDK

Di bagian sebelumnya, kami menunjukkan bagaimana Anda dapat menggunakan UI JumpStart untuk menerapkan model yang telah dilatih sebelumnya dan menyempurnakannya secara interaktif, dalam beberapa klik. Namun, Anda juga dapat menggunakan model JumpStart dan penyetelan yang mudah secara terprogram dengan menggunakan API yang terintegrasi ke dalam SageMaker SDK. Kami sekarang membahas contoh cepat tentang bagaimana Anda dapat mereplikasi proses sebelumnya. Semua langkah dalam demo ini tersedia di buku catatan terlampir Pengantar JumpStart โ€“ Segmentasi Instance dan Pengantar JumpStart โ€“ Semantik Segmentasi.

Jalankan inferensi pada model yang telah dilatih sebelumnya

Di bagian ini, kami memilih model terlatih yang sesuai di JumpStart, menerapkan model ini ke titik akhir SageMaker, dan menjalankan inferensi pada titik akhir yang diterapkan.

SageMaker adalah platform berdasarkan wadah Docker. JumpStart menggunakan kerangka khusus yang tersedia Wadah Pembelajaran Mendalam SageMaker (DLC). Kami mengambil paket tambahan, serta skrip untuk menangani pelatihan dan inferensi untuk tugas yang dipilih. Akhirnya, artefak model yang telah dilatih sebelumnya diambil secara terpisah dengan model_uris, yang memberikan fleksibilitas pada platform. Anda dapat menggunakan sejumlah model yang telah dilatih sebelumnya untuk tugas yang sama dengan satu skrip pelatihan atau inferensi. Lihat kode berikut:

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Misalnya segmentasi, kita dapat mengatur model_id untuk mxnet-semseg-fcn-resnet50-ade. Yang ada di pengidentifikasi sesuai dengan segmentasi instance.

Selanjutnya, kami memasukkan sumber daya ke dalam a Model SageMaker contoh dan gunakan titik akhir:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

Setelah beberapa menit, model kami diterapkan dan kami bisa mendapatkan prediksi darinya secara real time!

Cuplikan kode berikut memberi Anda gambaran sekilas tentang seperti apa segmentasi semantik. Masker yang diprediksi untuk setiap piksel divisualisasikan. Untuk mendapatkan inferensi dari model yang diterapkan, gambar input perlu disediakan dalam format biner. Respons dari titik akhir adalah label yang diprediksi untuk setiap piksel dalam gambar. Kami menggunakan query_endpoint dan parse_response fungsi pembantu, yang didefinisikan dalam notebook terlampir:

query_response = query(base_model_predictor, pedestrian_img)
predictions, labels, image_labels = parse_response(query_response)
print("Objects present in the picture:", image_labels)

Sempurnakan model yang telah dilatih sebelumnya

Untuk menyempurnakan model yang dipilih, kita perlu mendapatkan URI model itu, serta skrip pelatihan dan gambar wadah yang digunakan untuk pelatihan. Untungnya, ketiga input ini hanya bergantung pada nama model, versi (untuk daftar model yang tersedia, lihat Tabel Model yang Tersedia JumpStart), dan jenis instans yang ingin Anda latih. Ini ditunjukkan dalam cuplikan kode berikut:

from sagemaker import image_uris, model_uris, script_uris

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"
training_instance_type = "ml.p3.2xlarge"
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=model_id,
    model_version=model_version,
    image_scope="training",
    instance_type=training_instance_type,)# 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 to further fine-tune

train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

Kami mengambil kembali model_id sesuai dengan model yang sama yang kami gunakan sebelumnya. Anda sekarang dapat menyempurnakan model JumpStart ini pada dataset kustom Anda sendiri menggunakan SageMaker SDK. Kami menggunakan kumpulan data yang dihosting secara publik di Amazon S3, yang dengan mudah difokuskan pada segmentasi semantik. Dataset harus terstruktur untuk fine-tuning seperti yang dijelaskan di bagian sebelumnya. Lihat contoh kode berikut:

# URI of your training dataset
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_SemSeg/"
training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning")# Create SageMaker Estimator instance
semseg_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,)# Launch a SageMaker Training job by passing s3 path of the training data
semseg_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Kami mendapatkan hyperparameter default yang sama untuk model yang kami pilih seperti yang kami lihat di bagian sebelumnya, menggunakan sagemaker.hyperparameters.retrieve_default(). Kami kemudian membuat estimator SageMaker dan memanggil .fit metode untuk mulai menyempurnakan model kami, meneruskannya ke URI Amazon S3 untuk data pelatihan kami. Itu entry_point skrip yang disediakan bernama transfer_learning.py (sama untuk tugas dan model lain), dan saluran data input diteruskan ke .fit harus diberi nama training.

Saat algoritme berjalan, Anda dapat memantau kemajuannya baik di notebook SageMaker tempat Anda menjalankan kode itu sendiri, atau di amazoncloudwatch. Saat pelatihan selesai, artefak model yang disempurnakan akan diunggah ke lokasi keluaran Amazon S3 yang ditentukan dalam konfigurasi pelatihan. Sekarang Anda dapat menerapkan model dengan cara yang sama seperti model yang telah dilatih sebelumnya.

Fitur lanjutan

Selain menyempurnakan dan menerapkan model yang telah dilatih sebelumnya, JumpStart menawarkan banyak fitur lanjutan.

Yang pertama adalah penyetelan model otomatis. Ini memungkinkan Anda untuk secara otomatis menyetel model ML Anda untuk menemukan nilai hyperparameter dengan akurasi tertinggi dalam rentang yang disediakan melalui SageMaker API.

Yang kedua adalah pelatihan tambahan. Hal ini memungkinkan Anda untuk melatih model yang telah Anda sempurnakan menggunakan kumpulan data yang diperluas yang berisi pola dasar yang tidak diperhitungkan dalam proses penyempurnaan sebelumnya, yang mengakibatkan kinerja model yang buruk. Pelatihan tambahan menghemat waktu dan sumber daya karena Anda tidak perlu melatih ulang model dari awal.

Kesimpulan

Dalam posting ini, kami menunjukkan cara menyempurnakan dan menerapkan model segmentasi semantik yang telah dilatih sebelumnya, dan cara mengadaptasinya untuk segmentasi instan menggunakan JumpStart. Anda dapat melakukannya tanpa perlu menulis kode. Cobalah solusinya sendiri dan kirimkan komentar Anda kepada kami.

Untuk mempelajari lebih lanjut tentang JumpStart dan bagaimana Anda dapat menggunakan model terlatih sumber terbuka untuk berbagai tugas ML lainnya, lihat yang berikut ini Video AWS re:Invent 2020.


Tentang Penulis

Jalankan segmentasi gambar dengan Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Dr Vivek Madan adalah Ilmuwan Terapan dengan tim JumpStart Amazon SageMaker. Dia mendapatkan 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.

Jalankan segmentasi gambar dengan Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Santosh Kulkarni adalah Arsitek Solusi Perusahaan di Amazon Web Services yang bekerja dengan pelanggan olahraga di Australia. Dia bersemangat membangun aplikasi terdistribusi skala besar untuk memecahkan masalah bisnis menggunakan pengetahuannya dalam AI/ML, data besar, dan pengembangan perangkat lunak.

Jalankan segmentasi gambar dengan Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Leonardo Bachega adalah ilmuwan senior dan manajer di tim JumpStart Amazon SageMaker. Dia bersemangat membangun layanan AI untuk visi komputer.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS