Amazon SageMaker'da TensorFlow görüntü sınıflandırma modelleri için öğrenimi aktarın

Amazon Adaçayı Yapıcı bir süit sağlar yerleşik algoritmalar, önceden eğitilmiş modeller, ve önceden oluşturulmuş çözüm şablonları veri bilimcilerin ve makine öğrenimi (ML) pratisyenlerinin makine öğrenimi modellerini hızla eğitmeye ve dağıtmaya başlamalarına yardımcı olmak. Bu algoritmaları ve modelleri hem denetimli hem de denetimsiz öğrenme için kullanabilirsiniz. Tablo, resim ve metin dahil olmak üzere çeşitli girdi verilerini işleyebilirler.

Bugünden itibaren SageMaker, görüntü sınıflandırması için yeni bir yerleşik algoritma sunuyor: Görüntü Sınıflandırma – TensorFlow. Mevcut birçok önceden eğitilmiş model için transfer öğrenmeyi destekleyen denetimli bir öğrenme algoritmasıdır. TensorFlow Merkezi. Girdi olarak bir görüntü alır ve her sınıf etiketi için olasılık verir. Çok sayıda eğitim görüntüsü olmadığında bile aktarım öğrenimini kullanarak bu önceden eğitilmiş modellerde ince ayar yapabilirsiniz. SageMaker aracılığıyla kullanılabilir yerleşik algoritmalar yanı sıra SageMaker Hızlı Başlangıç ​​Kullanıcı Arayüzü içeride Amazon SageMaker Stüdyosu. Daha fazla bilgi için belgelerine bakın Görüntü Sınıflandırma – TensorFlow ve örnek defter SageMaker TensorFlow'a Giriş – Görüntü Sınıflandırma.

SageMaker'da TensorFlow ile görüntü sınıflandırması, TensorFlow Hub'da bulunan önceden eğitilmiş birçok modelde transfer öğrenimi sağlar. Eğitim verilerindeki sınıf etiketlerinin sayısına göre, önceden eğitilmiş TensorFlow Hub modeline bir sınıflandırma katmanı eklenir. Sınıflandırma katmanı, bir bırakma katmanından ve rastgele ağırlıklarla başlatılan 2-norm düzenleyici ile tam bağlantılı bir katman olan yoğun bir katmandan oluşur. Model eğitimi, bırakma katmanının bırakma oranı için hiperparametrelere ve yoğun katman için L2 düzenleme faktörüne sahiptir. Ardından, önceden eğitilmiş model de dahil olmak üzere tüm ağ veya yalnızca en üst sınıflandırma katmanı, yeni eğitim verileri üzerinde ince ayar yapılabilir. Bu aktarım öğrenme modunda, daha küçük bir veri kümesiyle bile eğitim alabilirsiniz.

Yeni TensorFlow görüntü sınıflandırma algoritması nasıl kullanılır?

Bu bölüm, TensorFlow görüntü sınıflandırma algoritmasının aşağıdakilerle nasıl kullanılacağını açıklar. SageMaker Python SDK'sı. Studio kullanıcı arayüzünden nasıl kullanılacağı hakkında bilgi için bkz. Adaçayı Yapıcı Hızlı Başlangıç.

Algoritma, aşağıda listelenen önceden eğitilmiş modeller için transfer öğrenimini destekler. TensorFlow Hub Modelleri. Her model benzersiz bir model_id. Aşağıdaki kod, tarafından tanımlanan MobileNet V2 1.00 224'ün nasıl ince ayar yapılacağını gösterir. model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 özel bir eğitim veri kümesinde. Her biri için model_idaracılığıyla bir SageMaker eğitim işi başlatmak için Tahminci SageMaker Python SDK sınıfı için, SageMaker'da sağlanan yardımcı işlevler aracılığıyla Docker görüntü URI'sini, eğitim komut dosyası URI'sini ve önceden eğitilmiş model URI'sini getirmeniz gerekir. Eğitim komut dosyası URI'si, veri işleme, önceden eğitilmiş modeli yükleme, model eğitimi ve eğitilmiş modeli çıkarım için kaydetme için gerekli tüm kodu içerir. Önceden eğitilmiş model URI'si, önceden eğitilmiş model mimarisi tanımını ve model parametrelerini içerir. Docker görüntü URI'sinin ve eğitim komut dosyası URI'sinin tüm TensorFlow görüntü sınıflandırma modelleri için aynı olduğunu unutmayın. Önceden eğitilmiş model URI, belirli modele özeldir. Önceden eğitilmiş model tarball'ları TensorFlow Hub'dan önceden indirilmiş ve uygun model imzasıyla Amazon Basit Depolama Hizmeti (Amazon S3) paketleri, eğitim işi ağ yalıtımında çalışacak şekilde. Aşağıdaki koda bakın:

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"

Bu modele özgü eğitim yapıtlarıyla, bir nesneyi oluşturabilirsiniz. Tahminci sınıf:

# 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,
)

Daha sonra, özel veri kümenizde öğrenimi aktarmak için, şurada listelenen eğitim hiperparametrelerinin varsayılan değerlerini değiştirmeniz gerekebilir. Hiperparametreler. Bu hiperparametrelerin Python sözlüğünü arayarak varsayılan değerleriyle getirebilirsiniz. hyperparameters.retrieve_default, bunları gerektiği gibi güncelleyin ve ardından bunları Estimator sınıfına iletin. Bazı hiperparametrelerin varsayılan değerlerinin farklı modeller için farklı olduğunu unutmayın. Büyük modeller için varsayılan parti boyutu daha küçüktür ve train_only_top_layer hiperparametre olarak ayarlandı True. hiperparametre Train_only_top_layer ince ayar işlemi sırasında hangi model parametrelerinin değiştiğini tanımlar. Eğer train_only_top_layer is True, sınıflandırma katmanlarının parametreleri değişir ve ince ayar işlemi sırasında parametrelerin geri kalanı sabit kalır. Öte yandan, eğer train_only_top_layer is False, modelin tüm parametreleri ince ayarlıdır. Aşağıdaki koda bakın:

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"

Aşağıdaki kod, S3 paketlerinde barındırılan varsayılan bir eğitim veri kümesi sağlar. biz sağlamak tf_flowers modellerde ince ayar yapmak için varsayılan veri kümesi olarak veri kümesi. Veri seti, beş çiçek türünün görüntülerini içermektedir. Veri seti şuradan indirildi: TensorFlow altında Apache 2.0 Lisansı.

# 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}"

Son olarak, modelde ince ayar yapmak üzere SageMaker eğitim işini başlatmak için .fit Eğitim veri kümesinin S3 konumunu geçerken Estimator sınıfının nesnesinde:

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

Özel bir veri kümesinde aktarım öğrenimi için yeni SageMaker TensorFlow görüntü sınıflandırma algoritmasının nasıl kullanılacağı hakkında daha fazla bilgi için ince ayarlanmış modeli dağıtın, dağıtılan model üzerinde çıkarım çalıştırın ve ilk ince ayar olmadan önceden eğitilmiş modeli olduğu gibi dağıtın özel bir veri kümesinde aşağıdaki örnek not defterine bakın: SageMaker TensorFlow'a Giriş – Görüntü Sınıflandırma.

TensorFlow görüntü sınıflandırma algoritması için giriş/çıkış arayüzü

Listelenen önceden eğitilmiş modellerin her birine ince ayar yapabilirsiniz. TensorFlow Hub Modelleri herhangi bir sayıda sınıfa ait görüntüleri içeren herhangi bir veri kümesine. Amaç, giriş verilerindeki tahmin hatasını en aza indirmektir. İnce ayar ile döndürülen model, çıkarım için daha fazla konuşlandırılabilir. Aşağıdakiler, modele giriş için eğitim verilerinin nasıl biçimlendirilmesi gerektiğine ilişkin talimatlardır:

  • Giriş – Sınıf sayısı kadar alt dizine sahip bir dizin. Her alt dizinde o sınıfa ait .jpg, .jpeg veya .png formatında resimler bulunmalıdır.
  • Çıktı – Çıkarım için dağıtılabilen veya artımlı eğitim kullanılarak daha fazla eğitilebilen ince ayarlanmış bir model. İnce ayarlı modele, girdi olarak ham .jpg görüntüsünü alacak ve sınıf olasılıklarını döndürecek şekilde bir ön işleme ve son işleme imzası eklenir. Modellerle birlikte, sınıf dizinlerini sınıf etiketlerine eşleyen bir dosya kaydedilir.

Eğitim verileri iki sınıftan görüntüler içeriyorsa, giriş dizini aşağıdaki örnekteki gibi görünmelidir: roses ve dandelion. S3 yolu şöyle görünmelidir s3://bucket_name/input_directory/. Sondaki not / gereklidir. Klasörlerin adları ve roses, dandelion.jpg dosya adları herhangi bir şey olabilir. S3 kovasında eğitilmiş modelle birlikte kaydedilen etiket eşleme dosyası, güller ve karahindiba klasör adlarını modelin çıktıları sınıf olasılıkları listesindeki dizinlerle eşler. Eşleme, klasör adlarının alfabetik sırasını takip eder. Aşağıdaki örnekte, model çıktı listesindeki 0 indeksi şuna karşılık gelir: dandelion, ve dizin 1 şuna karşılık gelir: roses.

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

TensorFlow görüntü sınıflandırma algoritmasıyla çıkarım

Oluşturulan modeller, çıkarım için barındırılabilir ve kodlanmış .jpg, .jpeg ve .png resim biçimlerini aşağıdaki gibi destekler: application/x-image içerik türü. Giriş görüntüsü otomatik olarak yeniden boyutlandırılır. Çıktı, olasılık değerlerini, tüm sınıflar için sınıf etiketlerini ve JSON formatında kodlanmış en yüksek olasılığa sahip sınıf indeksine karşılık gelen tahmini etiketi içerir. TensorFlow görüntü sınıflandırma modeli, istek başına tek bir görüntüyü işler ve JSON'da yalnızca bir satır çıkarır. Aşağıdaki, JSON'daki bir yanıt örneğidir:

accept: application/json;verbose

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

If accept ayarlandı application/json, o zaman model yalnızca olasılıkları verir. Eğitim ve çıkarım hakkında daha fazla ayrıntı için örnek not defterine bakın SageMaker TensorFlow'a Giriş – Görüntü Sınıflandırma.

JumpStart UI aracılığıyla SageMaker yerleşik algoritmalarını kullanın

Ayrıca SageMaker TensorFlow görüntü sınıflandırmasını ve diğer yerleşik algoritmalardan herhangi birini JumpStart UI aracılığıyla birkaç tıklamayla kullanabilirsiniz. JumpStart, çeşitli ML çerçevelerinden ve model hub'larından yerleşik algoritmaları ve önceden eğitilmiş modelleri bir grafik arabirim aracılığıyla eğitmenize ve dağıtmanıza olanak tanıyan bir SageMaker özelliğidir. Ayrıca, hedeflenen bir kullanım senaryosunu çözmek için makine öğrenimi modellerini ve diğer çeşitli AWS hizmetlerini bir araya getiren tam teşekküllü makine öğrenimi çözümlerini dağıtmanıza olanak tanır. Ödeme TensorFlow Hub ve Hugging Face modellerini kullanarak Amazon SageMaker JumpStart ile metin sınıflandırması çalıştırın Birkaç tıklamayla bir algoritmayı veya önceden eğitilmiş modeli eğitmek için JumpStart'ın nasıl kullanılacağını öğrenmek için.

Sonuç

Bu gönderide, SageMaker TensorFlow görüntü sınıflandırma yerleşik algoritmasının kullanıma sunulduğunu duyurduk. Bu algoritmayı kullanarak TensorFlow Hub'dan önceden eğitilmiş bir model kullanarak özel bir veri kümesinde aktarım öğreniminin nasıl yapılacağına ilişkin örnek kod sağladık. Daha fazla bilgi için, kontrol edin belgeleme ve örnek not defteri.


yazarlar hakkında

Amazon SageMaker PlatoBlockchain Data Intelligence'daki TensorFlow görüntü sınıflandırma modelleri için öğrenimi aktarın. Dikey Arama. Ai.Ashish Khetan Kıdemli Uygulamalı Bilim Adamıdır Amazon SageMaker yerleşik algoritmaları ve makine öğrenimi algoritmalarının geliştirilmesine yardımcı olur. Doktorasını University of Illinois Urbana-Champaign'den aldı. Makine öğrenimi ve istatistiksel çıkarım konularında aktif bir araştırmacıdır ve NeurIPS, ICML, ICLR, JMLR, ACL ve EMNLP konferanslarında birçok makale yayınlamıştır.

Amazon SageMaker PlatoBlockchain Data Intelligence'daki TensorFlow görüntü sınıflandırma modelleri için öğrenimi aktarın. Dikey Arama. Ai.Dr.Vivek Madan Uygulamalı Bilim Adamıdır Amazon SageMaker Hızlı Başlangıç ​​ekibi. Doktorasını University of Illinois Urbana-Champaign'den aldı ve Georgia Tech'de Doktora Sonrası Araştırmacıydı. Makine öğrenimi ve algoritma tasarımında aktif bir araştırmacıdır ve EMNLP, ICLR, COLT, FOCS ve SODA konferanslarında makaleler yayınlamıştır.

Amazon SageMaker PlatoBlockchain Data Intelligence'daki TensorFlow görüntü sınıflandırma modelleri için öğrenimi aktarın. Dikey Arama. Ai.Joao Moura Amazon Web Services'de AI/ML Uzman Çözüm Mimarıdır. Çoğunlukla NLP kullanım örneklerine odaklanıyor ve müşterilerin derin öğrenme modeli eğitimini ve dağıtımını optimize etmesine yardımcı oluyor. Ayrıca, düşük kodlu ML çözümlerinin ve ML'ye özel donanımın aktif bir savunucusudur.

Amazon SageMaker PlatoBlockchain Data Intelligence'daki TensorFlow görüntü sınıflandırma modelleri için öğrenimi aktarın. Dikey Arama. Ai.Raju Penmatcha AWS'de Kıdemli Yapay Zeka / Makine Öğrenimi Uzmanı Çözüm Mimarıdır. Makine öğrenimi ve yapay zeka ile ilgili projelerde eğitim, devlet ve kar amacı gütmeyen müşterilerle birlikte çalışarak AWS'yi kullanarak çözümler oluşturmalarına yardımcı oluyor. Müşterilere yardım etmediği zamanlarda yeni yerlere seyahat etmeyi sever.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi