Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ile görüntü segmentasyonunu çalıştırın. Dikey Arama. Ai.

Amazon SageMaker JumpStart ile görüntü segmentasyonunu çalıştırın

Aralık ayında 2020 AWS duyuruldu genel kullanılabilirliği Amazon SageMaker Hızlı Başlangıç, yeteneği Amazon Adaçayı Yapıcı bu, makine öğrenimine (ML) hızlı ve kolay bir şekilde başlamanıza yardımcı olur. JumpStart, popüler makine öğrenimi görevlerinde çok çeşitli önceden eğitilmiş modellerin tek tıkla ince ayarını ve dağıtımını ve ayrıca yaygın iş sorunlarını çözen bir dizi uçtan uca çözüm sunar. Bu özellikler, makine öğrenimi sürecinin her adımındaki yükü ortadan kaldırarak yüksek kaliteli modeller geliştirmeyi kolaylaştırır ve devreye alma süresini kısaltır.

Bu gönderi, belirli makine öğrenimi görevleri için JumpStart'ın kullanılmasıyla ilgili bir serinin üçüncüsüdür. İçinde ilk yazıJumpStart'ta görüntü sınıflandırma kullanım örneklerini nasıl çalıştırabileceğinizi gösterdik. İçinde ikinci gönderiJumpStart'ta metin sınıflandırma kullanım örneklerini nasıl çalıştırabileceğinizi gösterdik. Bu yazıda, MXNet'in eğitimli modellerini kullanarak bir görüntü segmentasyon modeline nasıl ince ayar yapılacağı ve dağıtılacağı konusunda adım adım bir yol gösteriyoruz. Aynı sonucu elde etmenin iki yolunu araştırıyoruz: JumpStart'ın grafik arayüzü aracılığıyla. Amazon SageMaker Stüdyosuve programlı olarak Hızlı Başlangıç ​​API'leri.

Doğrudan bu yazıda açıkladığımız JumpStart API koduna geçmek istiyorsanız aşağıdaki örnek Jupyter not defterlerine başvurabilirsiniz:

Hızlı Başlangıç'a genel bakış

JumpStart, tek bir satır kod yazmanıza gerek kalmadan çeşitli görevler için ML modellerini kullanmaya başlamanıza yardımcı olur. Bu yazının yazıldığı sırada JumpStart aşağıdakileri yapmanızı sağlar:

  • Yaygın ML görevleri için önceden eğitilmiş modelleri dağıtın – JumpStart, büyük, halka açık veri kümeleri üzerinde önceden eğitilmiş modellerin kolay dağıtımını sağlayarak, ortak makine öğrenimi görevlerini hiçbir geliştirme çabası olmadan çözmenize olanak tanır. Makine öğrenimi araştırma topluluğu, yakın zamanda geliştirilen modellerin çoğunluğunun kamuya açık hale getirilmesi için büyük miktarda çaba harcadı. JumpStart, nesne algılama, metin sınıflandırma ve metin oluşturma gibi en popüler 300 makine öğrenimi görevini kapsayan 15'den fazla modelden oluşan bir koleksiyona ev sahipliği yapar ve yeni başlayanların bunları kullanmasını kolaylaştırır. Bu modeller TensorFlow, PyTorch, Hugging Face ve MXNet gibi popüler model merkezlerinden alınmıştır.
  • Önceden eğitilmiş modellerde ince ayar yapın – JumpStart, kendi eğitim algoritmanızı yazmanıza gerek kalmadan önceden eğitilmiş modellerde ince ayar yapmanızı sağlar. ML'de bir alanda öğrenilen bilgilerin başka bir alana aktarılabilmesine denir. öğrenme aktarımı. Orijinal modelin eğitimine kıyasla çok daha düşük eğitim maliyetleriyle, daha küçük veri kümelerinizde doğru modeller üretmek için transfer öğrenimini kullanabilirsiniz. JumpStart ayrıca tablosal regresyon ve sınıflandırma için sıfırdan eğitebileceğiniz LightGBM, CatBoost, XGBoost ve Scikit-learn'e dayalı popüler eğitim algoritmalarını da içerir.
  • Önceden oluşturulmuş çözümleri kullanın – JumpStart, talep tahmini ve endüstriyel ve finansal uygulamalar gibi yaygın makine öğrenimi kullanım durumları için yalnızca birkaç tıklamayla dağıtabileceğiniz 17 çözümden oluşan bir set sunar. Çözümler, belirli bir iş kullanım durumunu çözmek için çeşitli AWS hizmetlerini bir araya getiren uçtan uca makine öğrenimi uygulamalarıdır. Onlar kullanırlar AWS CloudFormation hızlı dağıtım için şablonlar ve referans mimarileri; bu da bunların tamamen özelleştirilebilir olduğu anlamına gelir.
  • SageMaker algoritmaları için not defteri örneklerine bakın – SageMaker, veri bilimcilerin ve makine öğrenimi uygulayıcılarının makine öğrenimi modellerini hızlı bir şekilde eğitmeye ve dağıtmaya başlamalarına yardımcı olacak bir yerleşik algoritma paketi sağlar. JumpStart, bu algoritmaları hızlı bir şekilde kullanmak için kullanabileceğiniz örnek not defterleri sağlar.
  • Eğitim videolarını ve blogları inceleyin – JumpStart ayrıca size SageMaker'da farklı işlevleri nasıl kullanacağınızı öğreten çok sayıda blog yazısı ve video sağlar.

JumpStart, özel VPC ayarlarını kabul eder ve AWS Anahtar Yönetim Hizmeti (AWS KMS) şifreleme anahtarları, böylece mevcut modelleri ve çözümleri kurumsal ortamınızda güvenle kullanabilirsiniz. Güvenlik ayarlarınızı Studio içinde veya SageMaker Python SDK aracılığıyla JumpStart'a iletebilirsiniz.

Anlamsal bölümleme

Anlamsal bölümleme, bir giriş görüntüsünde görünen her nesne sınıfını tanımlar. Giriş görüntüsünün her pikselini, önceden tanımlanmış bir sınıf kümesinden bir sınıf etiketiyle etiketler (sınıflandırır). Aynı sınıftan birden fazla nesne aynı maskeye eşlenir.

İnce ayar için kullanılabilen model, temel ağın üzerinde tam evrişimli bir ağ (FCN) "başı" oluşturur. İnce ayar adımı, modelin geri kalanının parametrelerini dondurarak FCNHead'e ince ayar yapar ve ince ayarlı modele geri döner. Amaç, FCN'yi eğitmek için piksel başına softmax çapraz entropi kaybını en aza indirmektir. İnce ayarlamayla döndürülen model, çıkarım için daha da kullanılabilir.

Eğitim verileri iki resim içeriyorsa giriş dizini aşağıdaki kod gibi görünmelidir. .png dosyalarının adları herhangi bir şey olabilir.

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

Maske dosyalarında her piksel için sınıf etiketi bilgisi bulunmalıdır.

Örnek segmentasyonu

Örnek segmentasyonu, bir görüntüde görünen her farklı ilgi nesnesini algılar ve tanımlar. Her pikseli bir örnek etiketiyle etiketler. Semantik segmentasyon, aynı sınıftan birden fazla nesnenin piksellerine aynı etiketi atarken, örnek segmentasyonu, bir nesnenin görüntüdeki her oluşumuna karşılık gelen pikselleri ayrı bir etiketle daha fazla etiketler.

Şu anda JumpStart, örneğin segmentasyon için yalnızca çıkarım modelleri sunmaktadır ve ince ayarı desteklememektedir.

Aşağıdaki resimler anlamsal bölümlendirmedeki çıkarım ile örnek bölümlendirme arasındaki farkı göstermektedir. Orijinal görselde iki kişi bulunmaktadır. Anlamsal bölümleme, görüntüdeki birden fazla kişiyi tek bir varlık gibi ele alır: Person. Ancak örnek segmentasyonu, sunucudaki bireysel kişileri tanımlar. Person kategori.

Çözüme genel bakış

Aşağıdaki bölümlerde, hem Studio kullanıcı arayüzü hem de JumpStart API'leri aracılığıyla JumpStart ile semantik segmentasyonu gerçekleştirmek için adım adım bir demo sağlanmaktadır.

Aşağıdaki adımlardan geçiyoruz:

  1. Studio Kullanıcı Arayüzü aracılığıyla JumpStart'a erişin:
    1. Çıkarımı önceden eğitilmiş model üzerinde çalıştırın.
    2. Önceden eğitilmiş modelde ince ayar yapın.
  2. JumpStart'ı SageMaker Python SDK ile programlı olarak kullanın:
    1. Çıkarımı önceden eğitilmiş model üzerinde çalıştırın.
    2. Önceden eğitilmiş modelde ince ayar yapın.

Ayrıca JumpStart'ın ek gelişmiş özelliklerini de tartışıyoruz.

Studio UI aracılığıyla JumpStart'a erişin

Bu bölümde JumpStart modellerinin Studio kullanıcı arayüzü aracılığıyla nasıl eğitilip dağıtılacağını gösteriyoruz.

Çıkarımı önceden eğitilmiş model üzerinde çalıştırın

Aşağıdaki video, JumpStart'ta önceden eğitilmiş bir anlamsal bölümleme modelini nasıl bulacağınızı ve onu nasıl dağıtacağınızı gösterir. Model sayfası, model, nasıl kullanılacağı, beklenen veri formatı ve bazı ince ayar ayrıntıları hakkında değerli bilgiler içerir. JumpStart'ta mevcut olan önceden eğitilmiş modellerden herhangi birini konuşlandırabilirsiniz. Çıkarım için ml.g4dn.xlarge bulut sunucusu tipini seçiyoruz. Düşük çıkarım gecikmesi için gereken GPU hızlandırmasını daha düşük bir fiyatla sağlar. SageMaker barındırma örneğini yapılandırdıktan sonra Sürüş. Kalıcı uç noktanızın çalışır duruma gelmesi 5-10 dakika sürebilir.

Birkaç dakika sonra uç noktanız çalışır durumdadır ve çıkarım isteklerine yanıt vermeye hazırdır.

Benzer şekilde, JumpStart arama çubuğunda semantik segmentasyon yerine örnek segmentasyonu ararken önceki videodaki aynı adımları izleyerek önceden eğitilmiş bir örnek segmentasyon modelini dağıtabilirsiniz.

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

Aşağıdaki video, JumpStart'ta anlamsal bir bölümleme modelinin nasıl bulunacağını ve ince ayarının nasıl yapılacağını gösterir. Videoda modele ince ayar yapıyoruz. PennFudanPed veri kümesialtından indirebileceğiniz JumpStart'ta varsayılan olarak sağlanır. Apache 2.0 Lisansı.

Kendi veri kümenizde ince ayar yapmak, verilerin doğru biçimlendirmesini (model sayfasında açıklandığı gibi) almayı ve onu Amazon Basit Depolama Hizmeti (Amazon S3) ve veri kaynağı yapılandırmasındaki konumunu belirtme. Varsayılan olarak ayarlanan aynı hiperparametre değerlerini kullanırız (dönem sayısı, öğrenme oranı ve toplu iş boyutu). Ayrıca SageMaker eğitim örneğimiz olarak GPU destekli ml.p3.2xlarge kullanıyoruz.

Çalışan eğitim işinizi doğrudan Studio konsolunda izleyebilir ve tamamlandığında bilgilendirilebilirsiniz. Eğitim tamamlandıktan sonra, ince ayarlı modeli eğitim işi ayrıntılarının bulunduğu aynı sayfadan dağıtabilirsiniz. Dağıtım iş akışı, önceden eğitilmiş bir modelin dağıtımıyla aynıdır.

JumpStart'ı SageMaker SDK ile programlı olarak kullanın

Önceki bölümlerde, önceden eğitilmiş bir modeli dağıtmak ve birkaç tıklamayla etkileşimli olarak ince ayar yapmak için JumpStart Kullanıcı Arayüzünü nasıl kullanabileceğinizi gösterdik. Bununla birlikte, SageMaker SDK'ya entegre edilmiş API'leri kullanarak JumpStart'ın modellerini ve programlı olarak kolay ince ayarları da kullanabilirsiniz. Şimdi önceki süreci nasıl tekrarlayabileceğinize dair hızlı bir örnek üzerinden geçeceğiz. Bu demodaki tüm adımlar beraberindeki not defterlerinde mevcuttur JumpStart'a Giriş – Örnek Segmentasyonu ve JumpStart'a Giriş – Semantik Segmentasyon.

Çıkarımı önceden eğitilmiş model üzerinde çalıştırın

Bu bölümde, JumpStart'ta önceden eğitilmiş uygun bir model seçiyoruz, bu modeli bir SageMaker uç noktasına konuşlandırıyoruz ve konuşlandırılan uç nokta üzerinde çıkarımı çalıştırıyoruz.

SageMaker, Docker kapsayıcılarına dayalı bir platformdur. JumpStart, mevcut çerçeveye özel SageMaker Derin Öğrenme Kapsayıcıları (DLC'ler). Seçilen görev için eğitim ve çıkarımı işlemek için komut dosyalarının yanı sıra ek paketleri de alırız. Son olarak, önceden eğitilmiş model artefaktları ile ayrı ayrı getirilir. model_uris, platforma esneklik sağlar. Tek bir eğitim veya çıkarım komut dosyasıyla aynı görev için önceden eğitilmiş istediğiniz sayıda modeli kullanabilirsiniz. Aşağıdaki koda bakın:

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")

Örneğin segmentasyon için şunu ayarlayabiliriz: model_id için mxnet-semseg-fcn-resnet50-ade. Tanımlayıcıdaki is, örnek segmentasyonuna karşılık gelir.

Ardından, kaynakları bir Adaçayı Yapıcı modeli bir uç noktayı örnekleyin ve dağıtın:

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

Birkaç dakika sonra modelimiz devreye girer ve ondan gerçek zamanlı olarak tahminler alabiliriz!

Aşağıdaki kod parçacığı size anlamsal bölümlemenin nasıl göründüğüne dair bir fikir verir. Her piksel için öngörülen maske görselleştirilir. Dağıtılmış bir modelden çıkarımlar elde etmek için, bir giriş görüntüsünün ikili biçimde sağlanması gerekir. Uç noktanın yanıtı, görüntüdeki her piksel için tahmin edilen bir etikettir. biz kullanıyoruz query_endpoint ve parse_response tanımlanan yardımcı işlevler beraberindeki defter:

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

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

Seçilen bir modele ince ayar yapmak için, o modelin URI'sinin yanı sıra eğitim betiğinin ve eğitim için kullanılan konteyner görüntüsünün URI'sini almamız gerekir. Neyse ki, bu üç giriş yalnızca model adına ve sürüme bağlıdır (mevcut modellerin listesi için bkz. JumpStart Mevcut Model Tablosu)ve üzerinde eğitim almak istediğiniz bulut sunucusunun türü. Bu, aşağıdaki kod parçacığında gösterilmiştir:

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")

geri alıyoruz model_id daha önce kullandığımız modelin aynısına karşılık geliyor. Artık SageMaker SDK'yı kullanarak bu JumpStart modeline kendi özel veri kümenizde ince ayar yapabilirsiniz. Amazon S3'te herkese açık olarak barındırılan ve anlamsal segmentasyona uygun bir şekilde odaklanan bir veri kümesi kullanıyoruz. Veri kümesi, önceki bölümde açıklandığı gibi ince ayar için yapılandırılmalıdır. Aşağıdaki örnek koda bakın:

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

Seçtiğimiz model için önceki bölümde gördüğümüzle aynı varsayılan hiperparametreleri aşağıdakileri kullanarak elde ederiz: sagemaker.hyperparameters.retrieve_default(). Daha sonra bir SageMaker tahmincisi başlatırız ve .fit Eğitim verilerimiz için Amazon S3 URI'sini ileterek modelimizde ince ayar yapmaya başlama yöntemini kullanacağız. entry_point Sağlanan komut dosyası transfer_learning.py olarak adlandırılır (diğer görevler ve modeller için de aynıdır) ve giriş veri kanalına aktarılır .fit adlandırılmalı training.

Algoritma çalışırken, ilerlemesini ya kodun kendisini çalıştırdığınız SageMaker not defterinde ya da Amazon Bulut İzleme. Eğitim tamamlandığında ince ayarı yapılan model yapıları, eğitim yapılandırmasında belirtilen Amazon S3 çıkış konumuna yüklenir. Artık modeli önceden eğitilmiş modelle aynı şekilde dağıtabilirsiniz.

Gelişmiş özellikler

JumpStart, önceden eğitilmiş modellere ince ayar yapılmasına ve dağıtılmasına ek olarak birçok gelişmiş özellik sunar.

ilk Otomatik model ayarlama. Bu, SageMaker API aracılığıyla sağlanan aralık dahilinde en yüksek doğrulukla hiperparametre değerlerini bulmak için ML modellerinizi otomatik olarak ayarlamanıza olanak tanır.

Ikinci artımlı eğitim. Bu, daha önceki ince ayar çalıştırmalarında hesaba katılmayan temel bir modeli içeren genişletilmiş bir veri kümesini kullanarak zaten ince ayar yaptığınız bir modeli eğitmenize olanak tanır ve bu da model performansının düşmesine neden olur. Artımlı eğitim, modeli sıfırdan yeniden eğitmenize gerek olmadığından hem zamandan hem de kaynaklardan tasarruf sağlar.

Sonuç

Bu yazıda, önceden eğitilmiş bir anlamsal bölümleme modeline nasıl ince ayar yapılacağını ve dağıtılacağını ve bunun, örneğin JumpStart kullanarak bölümlendirmeye nasıl uyarlanacağını gösterdik. Bunu kod yazmaya gerek kalmadan yapabilirsiniz. Çözümü kendi başınıza deneyin ve yorumlarınızı bize gönderin.

JumpStart hakkında daha fazla bilgi edinmek ve açık kaynak önceden eğitilmiş modelleri çeşitli diğer makine öğrenimi görevleri için nasıl kullanabileceğinizi öğrenmek için aşağıdakilere göz atın. AWS re:Invent 2020 videosu.


Yazarlar Hakkında

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ile görüntü segmentasyonunu çalıştırın. Dikey Arama. Ai.Dr.Vivek Madan Amazon SageMaker JumpStart ekibinde Uygulamalı Bilim Adamıdır. Doktorasını Urbana-Champaign'deki Illinois Üniversitesi'nden 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 JumpStart PlatoBlockchain Data Intelligence ile görüntü segmentasyonunu çalıştırın. Dikey Arama. Ai.Santosh Kulkarni Avustralya'daki spor müşterileriyle çalışan Amazon Web Services'de Kurumsal Çözümler Mimarıdır. AI/ML, büyük veri ve yazılım geliştirme konusundaki bilgilerini kullanarak iş sorunlarını çözmek için büyük ölçekli dağıtılmış uygulamalar oluşturma konusunda tutkulu.

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence ile görüntü segmentasyonunu çalıştırın. Dikey Arama. Ai.Leonardo Bachega Amazon SageMaker JumpStart ekibinde kıdemli bir bilim insanı ve yöneticidir. Bilgisayarla görme için yapay zeka hizmetleri oluşturma konusunda tutkulu.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi