Amazon SageMaker'da TensorFlow nesne algılama 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.

Bu gönderi, SageMaker'daki yeni yerleşik algoritmalar hakkındaki serinin ikincisidir. İçinde ilk yazıSageMaker'ın görüntü sınıflandırma için nasıl yerleşik bir algoritma sağladığını gösterdik. Bugün, SageMaker'ın TensorFlow kullanarak nesne tespiti için yeni bir yerleşik algoritma sağladığını duyuruyoruz. Bu denetimli öğrenme algoritması, TensorFlow'da bulunan birçok önceden eğitilmiş model için transfer öğrenmeyi destekler. Giriş olarak bir görüntüyü alır ve görüntüde bulunan nesneleri sınırlayıcı kutularla birlikte çıktı olarak verir. Çok sayıda eğitim görüntüsü mevcut olmadığında bile transfer öğrenmeyi kullanarak bu önceden eğitilmiş modellere ince ayar yapabilirsiniz. SageMaker aracılığıyla kullanılabilir yerleşik algoritmalar yanı sıra SageMaker Hızlı Başlangıç ​​Kullanıcı Arayüzü in Amazon SageMaker Stüdyosu. Daha fazla bilgi için bkz. Nesne Algılama Tensor Akışı ve örnek defter SageMaker Tensorflow'a Giriş – Nesne Algılama.

SageMaker'da TensorFlow ile nesne algılama, TensorFlow Hub'da bulunan birçok önceden eğitilmiş modelde transfer öğrenimi sağlar. Eğitim verilerindeki sınıf etiketi sayısına göre, rastgele başlatılan yeni bir nesne algılama kafası, TensorFlow modelinin mevcut kafasının yerini alır. Önceden eğitilmiş model de dahil olmak üzere ağın tamamı veya yalnızca üst katman (nesne algılama kafası) yeni eğitim verilerine göre ince ayar yapılabilir. Bu transfer öğrenme modunda, daha küçük bir veri kümesiyle bile eğitim elde edebilirsiniz.

Yeni TensorFlow nesne algılama algoritması nasıl kullanılır?

Bu bölümde TensorFlow nesne algılama algoritmasının aşağıdakilerle nasıl kullanılacağı açıklanmaktadır: 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 modelleri. Her model benzersiz bir model_id. Aşağıdaki kod, şu şekilde tanımlanan bir ResNet50 V1 FPN modeline nasıl ince ayar yapılacağını gösterir: model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 ö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ının SageMaker görüntü URI'sini, eğitim komut dosyası URI'sini ve önceden eğitilmiş model URI'sini SageMaker'da sağlanan yardımcı program işlevleri aracılığıyla getirmeniz gerekir. Eğitim komut dosyası URI'si, veri işleme, önceden eğitilmiş modelin yüklenmesi, model eğitimi ve eğitilen modelin çıkarım için kaydedilmesi 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 nesne algılama modelleri için aynı olduğunu unutmayın. Önceden eğitilmiş model URI'si belirli modele özeldir. Önceden eğitilmiş model tarball'ları TensorFlow'dan önceden indirilmiş ve uygun model imzasıyla kaydedilmiştir. 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_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"

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

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

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"

Biz sağlıyoruz PennFudanPed veri kümesi modellere ince ayar yapmak için varsayılan veri kümesi olarak. Veri seti yayaların görüntülerini içermektedir. Aşağıdaki kod, S3 paketlerinde barındırılan varsayılan eğitim veri kümesini sağlar:

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

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

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

TensorFlow nesne algılama algoritması için giriş/çıkış arayüzü

Listelenen önceden eğitilmiş modellerin her birine ince ayar yapabilirsiniz. TensorFlow 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ş – Alt dizin görüntüleri ve bir dosya içeren bir dizin annotations.json.
  • Çıktı – İki çıkış var. Birincisi, çıkarım için kullanılabilen veya artımlı eğitim kullanılarak daha fazla eğitilebilen, ince ayarlı bir modeldir. İkincisi, sınıf indekslerini sınıf etiketleriyle eşleştiren bir dosyadır; bu modelle birlikte kaydedilir.

Giriş dizini aşağıdaki örnekteki gibi görünmelidir:

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

The annotations.json dosya için bilgi içermelidir bounding_boxes ve sınıf etiketleri. Anahtarların bulunduğu bir sözlüğe sahip olmalı "images" ve "annotations". Değeri "images" anahtar, formun her görüntüsü için bir giriş listesi olmalıdır {"file_name": image_name, "height": height, "width": width, "id": image_id}. Değeri "annotations" anahtar, formun her sınırlayıcı kutusu için bir giriş listesi olmalıdır {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

TensorFlow nesne algılama 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ı, her tahmin için kutuları, tahmin edilen sınıfları ve puanları içerir. TensorFlow nesne algılama modeli, istek başına tek bir görüntüyü işler ve JSON'da yalnızca bir satırın çıktısını alır. Aşağıda JSON'daki bir yanıt örneği verilmiştir:

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 ayarlandı application/json, bu durumda model yalnızca tahmin edilen kutuların, sınıfların ve puanların çıktısını verir. Eğitim ve çıkarım hakkında daha fazla ayrıntı için örnek not defterine bakın SageMaker TensorFlow'a Giriş – Nesne Algılama.

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

JumpStart kullanıcı arayüzü aracılığıyla SageMaker TensorFlow nesne algılamayı ve diğer yerleşik algoritmalardan herhangi birini birkaç tıklamayla da kullanabilirsiniz. JumpStart, grafiksel bir arayüz aracılığıyla çeşitli ML çerçevelerinden ve model merkezlerinden yerleşik algoritmaları ve önceden eğitilmiş modelleri eğitmenize ve dağıtmanıza olanak tanıyan bir SageMaker özelliğidir. Ayrıca, hedeflenen bir kullanım senaryosunu çözmek için ML modellerini ve diğer çeşitli AWS hizmetlerini bir araya getiren tam donanımlı ML çözümlerini dağıtmanıza da olanak tanır.

Aşağıda, JumpStart Kullanıcı Arayüzü aracılığıyla birkaç tıklamayla gerçekleştirdiğimiz aynı ince ayar ve dağıtım sürecini nasıl tekrarlayabileceğinizi gösteren iki video bulunmaktadır.

Önceden eğitilmiş modelde ince ayar yapın

Burada aynı önceden eğitilmiş nesne algılama modeline ince ayar yapma süreci anlatılmaktadır.

İnce ayarlanmış modeli dağıtın

Model eğitimi tamamlandıktan sonra, modeli tek tıklamayla kalıcı, gerçek zamanlı bir uç noktaya doğrudan dağıtabilirsiniz.

Sonuç

Bu yazıda SageMaker TensorFlow nesne algılama yerleşik algoritmasının lansmanını duyurduk. Bu algoritmayı kullanarak TensorFlow'un önceden eğitilmiş bir modelini kullanarak özel bir veri kümesinde transfer öğreniminin nasıl yapılacağına dair örnek kod sağladık.

Daha fazla bilgi için göz atın belgeleme ve örnek not defteri.


yazarlar hakkında

Amazon SageMaker PlatoBlockchain Data Intelligence'da TensorFlow nesne algılama modelleri için öğrenimi aktarın. Dikey Arama. Ai.Dr.Vivek Madan Uygulamalı Bilim Adamıdır Amazon SageMaker Hızlı Başlangıç ​​ekibi. Doktora derecesini Urbana-Champaign'deki Illinois Üniversitesi'nden aldı ve Georgia Tech'te Doktora Sonrası Araştırmacı olarak görev yaptı. Makine öğrenimi ve algoritma tasarımı alanında aktif bir araştırmacıdır ve EMNLP, ICLR, COLT, FOCS ve SODA konferanslarında makaleleri yayınlanmıştır.

Amazon SageMaker PlatoBlockchain Data Intelligence'da TensorFlow nesne algılama 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'da TensorFlow nesne algılama 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.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi