Suorita kuvien segmentointi Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.

Suorita kuvien segmentointi Amazon SageMaker JumpStartilla

Joulukuussa 2020, AWS ilmoitti - yleinen saatavuus Amazon SageMaker JumpStart, kyky Amazon Sage Maker jonka avulla pääset nopeasti ja helposti alkuun koneoppimisen (ML) kanssa. JumpStart tarjoaa yhdellä napsautuksella hienosäätöä ja laajan valikoiman valmiiksi koulutettuja malleja yleisiin ML-tehtäviin sekä valikoiman päästä päähän -ratkaisuja, jotka ratkaisevat yleisiä liiketoimintaongelmia. Nämä ominaisuudet poistavat raskasta nostoa ML-prosessin jokaisesta vaiheesta, mikä helpottaa korkealaatuisten mallien kehittämistä ja lyhentää käyttöönottoon kuluvaa aikaa.

Tämä viesti on kolmas sarjassa, jossa käsitellään JumpStartin käyttöä tiettyihin ML-tehtäviin. Vuonna ensimmäinen viesti, näytimme, kuinka voit suorittaa kuvien luokittelun käyttötapauksia JumpStartissa. Vuonna toinen viesti, näytimme kuinka voit suorittaa tekstiluokituksen käyttötapauksia JumpStartissa. Tässä viestissä tarjoamme vaiheittaisen esittelyn kuvan segmentointimallin hienosäätämisestä ja käyttöönotosta käyttämällä MXNetin koulutettuja malleja. Tutkimme kahta tapaa saada sama tulos: JumpStartin graafisen käyttöliittymän kautta Amazon SageMaker Studio, ja ohjelmallisesti läpi JumpStart API:t.

Jos haluat hypätä suoraan tässä viestissä selittämään JumpStart API -koodiin, voit viitata seuraaviin Jupyter-muistikirjoihin:

JumpStart yleiskatsaus

JumpStart auttaa sinua pääsemään alkuun ML-mallien kanssa useisiin eri tehtäviin kirjoittamatta yhtä koodiriviä. Kirjoitushetkellä JumpStart antaa sinun tehdä seuraavat:

  • Ota käyttöön esikoulutettuja malleja yleisiin ML-tehtäviin – JumpStartin avulla voit käsitellä yleisiä ML-tehtäviä ilman kehitysponnisteluja tarjoamalla helposti käyttöönotettuja malleja, jotka on esikoulutettu suurille, julkisesti saatavilla oleville tietojoukoille. ML-tutkijayhteisö on tehnyt paljon vaivaa saattaakseen suurimman osan äskettäin kehitetyistä malleista julkisesti saataville. JumpStart isännöi yli 300 mallin kokoelmaa, jotka kattavat 15 suosituinta ML-tehtävää, kuten objektien havaitseminen, tekstin luokittelu ja tekstin luominen, mikä tekee niiden käyttämisestä helppoa aloittelijalle. Nämä mallit ovat peräisin suosituista mallikeskittymistä, kuten TensorFlow, PyTorch, Hugging Face ja MXNet.
  • Hienosäädä esikoulutettuja malleja – JumpStartin avulla voit hienosäätää esikoulutettuja malleja ilman, että sinun tarvitsee kirjoittaa omaa harjoitusalgoritmiasi. ML:ssä kutsutaan kykyä siirtää yhdeltä toimialueelta opittua tietoa toiselle alueelle siirrä oppimista. Voit käyttää siirtooppimista tuottaaksesi tarkkoja malleja pienemmille tietojoukoillesi paljon alhaisemmilla koulutuskustannuksilla kuin alkuperäisen mallin koulutuksessa. JumpStart sisältää myös suosittuja LightGBM-, CatBoost-, XGBoost- ja Scikit-learni-pohjaisia ​​harjoitusalgoritmeja, joita voit harjoitella alusta alkaen taulukkoregressiota ja luokittelua varten.
  • Käytä valmiita ratkaisuja – JumpStart tarjoaa 17 ratkaisua yleisiin ML-käyttötapauksiin, kuten kysynnän ennustamiseen sekä teollisuus- ja taloussovelluksiin, jotka voit ottaa käyttöön vain muutamalla napsautuksella. Ratkaisut ovat päästä päähän ML-sovelluksia, jotka yhdistävät erilaisia ​​AWS-palveluita tietyn yrityskäyttötilanteen ratkaisemiseksi. He käyttävät AWS-pilven muodostuminen mallit ja viitearkkitehtuurit nopeaa käyttöönottoa varten, mikä tarkoittaa, että ne ovat täysin muokattavissa.
  • Katso muistikirjan esimerkkejä SageMaker-algoritmeista – SageMaker tarjoaa joukon sisäänrakennettuja algoritmeja, jotka auttavat datatieteilijöitä ja ML-harjoittajia pääsemään nopeasti alkuun ML-mallien koulutuksessa ja käyttöönotossa. JumpStart tarjoaa mallimuistikirjoja, joiden avulla voit käyttää näitä algoritmeja nopeasti.
  • Katso koulutusvideot ja blogit – JumpStart tarjoaa myös lukuisia blogikirjoituksia ja videoita, jotka opettavat käyttämään SageMakerin eri toimintoja.

JumpStart hyväksyy mukautetut VPC-asetukset ja AWS-avainhallintapalvelu (AWS KMS) -salausavaimia, jotta voit käyttää saatavilla olevia malleja ja ratkaisuja turvallisesti yritysympäristössäsi. Voit siirtää suojausasetukset JumpStartiin Studiossa tai SageMaker Python SDK:n kautta.

Semanttinen segmentointi

Semanttinen segmentointi rajaa jokaisen syöttökuvassa esiintyvän objektiluokan. Se merkitsee (luokittelee) syötekuvan jokaisen pikselin luokkatunnisteella ennalta määritetystä luokkien joukosta. Useat saman luokan objektit on kartoitettu samaan maskiin.

Hienosäätöön saatavilla oleva malli rakentaa täysin konvoluutioverkon (FCN) ”pään” perusverkon päälle. Hienosäätövaihe hienosäätää FCNHeadin pitäen samalla mallin muun osan parametrit jäädytettyinä ja palauttaa hienosäädetyn mallin. Tavoitteena on minimoida pikselikohtainen softmax ristientropiahäviö FCN:n kouluttamiseksi. Hienosäädöllä palautettua mallia voidaan käyttää edelleen päätelmiä varten.

Syöttöhakemiston tulee näyttää seuraavalta koodilta, jos harjoitustiedot sisältävät kaksi kuvaa. .png-tiedostojen nimet voivat olla mitä tahansa.

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

Maskitiedostoissa tulee olla luokkatunnistetiedot jokaisesta pikselistä.

Ilmentymien segmentointi

Ilmentymien segmentointi havaitsee ja rajaa jokaisen kuvassa näkyvän erillisen kiinnostavan kohteen. Se merkitsee jokaisen pikselin ilmentymätunnisteella. Kun semanttinen segmentointi määrittää saman tunnisteen useiden saman luokan objektien pikseleille, ilmentymän segmentointi lisää pikseleitä, jotka vastaavat jokaista kuvassa olevan objektin esiintymistä erillisellä tunnisteella.

Tällä hetkellä JumpStart tarjoaa vain päätelmämalleja esimerkiksi segmentointia varten, eikä se tue hienosäätöä.

Seuraavat kuvat havainnollistavat eroa semanttisen segmentoinnin ja ilmentymien segmentoinnin välillä. Alkuperäisessä kuvassa on kaksi henkilöä. Semanttinen segmentointi käsittelee useita kuvan ihmisiä yhtenä kokonaisuutena: Person. Instanssisegmentointi tunnistaa kuitenkin yksittäiset ihmiset Person luokka.

Ratkaisun yleiskatsaus

Seuraavat osiot tarjoavat vaiheittaisen esittelyn semanttisen segmentoinnin suorittamisesta JumpStartilla sekä Studion käyttöliittymän että JumpStart-sovellusliittymien kautta.

Käymme läpi seuraavat vaiheet:

  1. Käytä JumpStartia Studion käyttöliittymän kautta:
    1. Tee johtopäätös esikoulutetusta mallista.
    2. Hienosäädä esikoulutettu malli.
  2. Käytä JumpStartia ohjelmallisesti SageMaker Python SDK:n kanssa:
    1. Tee johtopäätös esikoulutetusta mallista.
    2. Hienosäädä esikoulutettu malli.

Keskustelemme myös JumpStartin lisäominaisuuksista.

Käytä JumpStartia Studion käyttöliittymän kautta

Tässä osiossa esittelemme, kuinka JumpStart-malleja koulutetaan ja otetaan käyttöön Studio-käyttöliittymän kautta.

Tee johtopäätös esikoulutetusta mallista

Seuraava video näyttää, kuinka voit löytää esikoulutetun semanttisen segmentointimallin JumpStartista ja ottaa sen käyttöön. Mallisivulla on arvokasta tietoa mallista, sen käytöstä, odotetusta datamuodosta ja joitain hienosäätöjä. Voit ottaa käyttöön mitä tahansa JumpStartissa saatavilla olevista esikoulutetuista malleista. Päätelmiä varten valitsemme ilmentymätyypin ml.g4dn.xlarge. Se tarjoaa GPU-kiihdytyksen, jota tarvitaan alhaiseen päättelyviiveeseen, mutta alhaisemmalla hinnalla. Kun olet määrittänyt SageMaker-isännöintiesiintymän, valitse Sijoittaa. Voi kestää 5–10 minuuttia, ennen kuin pysyvä päätepisteesi on käytössä.

Muutaman minuutin kuluttua päätepisteesi on toiminnassa ja valmis vastaamaan päättelypyyntöihin.

Vastaavasti voit ottaa käyttöön esiopetetun ilmentymien segmentointimallin noudattamalla samoja vaiheita edellisessä videossa, kun etsit esimerkiksi segmentointia semanttisen segmentoinnin sijaan JumpStart-hakupalkissa.

Hienosäädä esikoulutettu malli

Seuraava video näyttää, kuinka löytää ja hienosäätää semanttinen segmentointimalli JumpStartissa. Videolla hienosäädämme mallia käyttämällä PennFudanPed-tietojoukko, joka on oletuksena saatavilla JumpStartissa, jonka voit ladata kohdasta Apache 2.0 -lisenssi.

Oman tietojoukon hienosäätö edellyttää tietojen oikean muotoilun ottamista (kuten mallisivulla on selitetty) ja sen lataamista Amazonin yksinkertainen tallennuspalvelu (Amazon S3) ja määrittämällä sen sijainnin tietolähteen kokoonpanossa. Käytämme samoja hyperparametriarvoja, jotka on asetettu oletusarvoisesti (jaksojen lukumäärä, oppimisnopeus ja eräkoko). Käytämme myös grafiikkasuorittimen tukemaa ml.p3.2xlargea SageMaker-koulutusinstanssina.

Voit seurata harjoitteluasi suoraan Studio-konsolista, ja saat ilmoituksen sen valmistumisesta. Kun koulutus on valmis, voit ottaa käyttöön hienosäädetyn mallin samalta sivulta, jolla on koulutustyön tiedot. Käyttöönoton työnkulku on sama kuin esikoulutetun mallin käyttöönotto.

Käytä JumpStartia ohjelmallisesti SageMaker SDK:n kanssa

Edellisissä osissa osoitimme, kuinka voit käyttää JumpStart-käyttöliittymää esiopetetun mallin käyttöönottoon ja sen vuorovaikutteisen hienosäätämiseen muutamalla napsautuksella. Voit kuitenkin myös käyttää JumpStartin malleja ja helppoa hienosäätöä ohjelmallisesti käyttämällä SageMaker SDK:hen integroituja sovellusliittymiä. Käymme nyt läpi nopean esimerkin siitä, kuinka voit toistaa edellisen prosessin. Kaikki tämän esittelyn vaiheet ovat saatavilla mukana toimitetuissa muistikirjoissa Johdatus JumpStartiin – ilmentymien segmentointi ja Johdatus JumpStartiin – semanttinen segmentointi.

Tee johtopäätös esikoulutetusta mallista

Tässä osiossa valitsemme JumpStartissa sopivan esikoulutetun mallin, otamme tämän mallin käyttöön SageMaker-päätepisteeseen ja suoritamme päättelyn käyttöönotetusta päätepisteestä.

SageMaker on Docker-säiliöihin perustuva alusta. JumpStart käyttää saatavilla olevaa kehyskohtaista SageMaker Deep Learning -säiliöt (DLC:t). Haemme mahdolliset lisäpaketit sekä komentosarjat koulutuksen ja johtopäätösten käsittelemiseksi valitulle tehtävälle. Lopuksi esiopetetut malliesineet haetaan erikseen model_uris, joka tarjoaa alustalle joustavuutta. Voit käyttää mitä tahansa mallia, jotka on esikoulutettu samaan tehtävään yhdellä harjoitus- tai päättelykomentosarjalla. Katso seuraava koodi:

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

Esimerkiksi segmentointi, voimme asettaa model_id että mxnet-semseg-fcn-resnet50-ade. Tunnisteen on vastaa ilmentymän segmentointia.

Seuraavaksi syötämme resurssit a SageMaker malli esiintyy ja ota käyttöön päätepiste:

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

Muutaman minuutin kuluttua mallimme otetaan käyttöön ja voimme saada siitä ennusteita reaaliajassa!

Seuraava koodinpätkä antaa sinulle kuvan siitä, miltä semanttinen segmentointi näyttää. Jokaisen pikselin ennustettu maski visualisoidaan. Päätelmien saamiseksi käyttöönotetusta mallista on syötettävä kuva binäärimuodossa. Päätepisteen vaste on ennustettu etiketti jokaiselle kuvan pikselille. Käytämme query_endpoint ja parse_response aputoiminnot, jotka on määritelty kohdassa mukana oleva muistikirja:

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

Hienosäädä esikoulutettu malli

Valitun mallin hienosäätöä varten meidän on hankittava mallin URI sekä harjoitusskriptin ja koulutuksessa käytetyn säilön kuvan URI. Onneksi nämä kolme tuloa riippuvat yksinomaan mallin nimestä, versiosta (luettelo saatavilla olevista malleista, katso JumpStart saatavana oleva mallitaulukko)ja instanssin tyyppi, jossa haluat harjoitella. Tämä näkyy seuraavassa koodinpätkässä:

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

Haemme model_id vastaavat samaa mallia, jota käytimme aiemmin. Voit nyt hienosäätää tätä JumpStart-mallia omassa mukautetussa tietojoukossasi SageMaker SDK:n avulla. Käytämme tietojoukkoa, jota isännöidään julkisesti Amazon S3:ssa ja joka keskittyy kätevästi semanttiseen segmentointiin. Tietojoukon tulee olla jäsennelty hienosäätöä varten edellisessä osiossa selitetyllä tavalla. Katso seuraava esimerkkikoodi:

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

Saamme valitulle mallillemme samat oletushyperparametrit kuin ne, jotka näimme edellisessä osiossa käyttämällä sagemaker.hyperparameters.retrieve_default(). Sitten instantoimme SageMaker-estimaattorin ja kutsumme .fit tapa aloittaa mallimme hienosäätö ja välittää sille Amazon S3 URI harjoitusdataa varten. The entry_point toimitetun komentosarjan nimi on transfer_learning.py (sama muille tehtäville ja malleille), ja syöttötietokanava välitetään .fit täytyy nimetä training.

Algoritmin harjoittelun aikana voit seurata sen edistymistä joko SageMaker-muistikirjassa, jossa käytät itse koodia, tai amazonin pilvikello. Kun koulutus on valmis, hienosäädetyt malliesineet ladataan harjoituskokoonpanossa määritettyyn Amazon S3 -tulostuspaikkaan. Voit nyt ottaa mallin käyttöön samalla tavalla kuin esikoulutettu malli.

Lisäominaisuudet

Esikoulutettujen mallien hienosäädön ja käyttöönoton lisäksi JumpStart tarjoaa monia edistyneitä ominaisuuksia.

Ensimmäinen on automaattinen mallin viritys. Tämän avulla voit automaattisesti virittää ML-mallejasi löytääksesi hyperparametrien arvot korkeimmalla tarkkuudella SageMaker API:n tarjoaman alueen sisällä.

Toinen on lisäkoulutus. Tämän avulla voit harjoitella mallia, jota olet jo hienosäätänyt käyttämällä laajennettua tietojoukkoa, joka sisältää taustalla olevan kuvion, jota ei otettu huomioon aikaisemmissa hienosäätöajoissa, mikä johti mallin huonoon suorituskykyyn. Inkrementaalinen koulutus säästää sekä aikaa että resursseja, koska sinun ei tarvitse kouluttaa mallia uudelleen alusta.

Yhteenveto

Tässä viestissä osoitimme, kuinka hienosäätää ja ottaa käyttöön esikoulutettu semanttinen segmentointimalli ja miten sitä voidaan mukauttaa esimerkiksi segmentointiin JumpStartin avulla. Voit suorittaa tämän ilman koodin kirjoittamista. Kokeile ratkaisua itse ja lähetä meille kommenttisi.

Saat lisätietoja JumpStartista ja siitä, kuinka voit käyttää avoimen lähdekoodin esikoulutettuja malleja moniin muihin ML-tehtäviin, tutustu seuraavaan AWS re:Invent 2020 -video.


Tietoja Tekijät

Suorita kuvien segmentointi Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.Tohtori Vivek Madan on soveltuva tutkija Amazon SageMaker JumpStart -tiimin kanssa. Hän sai tohtorin tutkinnon Illinoisin yliopistosta Urbana-Champaignissa ja oli tutkijatohtorina Georgia Techissä. Hän on aktiivinen koneoppimisen ja algoritmisuunnittelun tutkija ja julkaissut julkaisuja EMNLP-, ICLR-, COLT-, FOCS- ja SODA-konferensseissa.

Suorita kuvien segmentointi Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.Santosh Kulkarni on Enterprise Solutions -arkkitehti Amazon Web Servicesissä, joka työskentelee urheiluasiakkaiden kanssa Australiassa. Hän on intohimoinen rakentaa laajamittaisia ​​hajautettuja sovelluksia liiketoiminnan ongelmien ratkaisemiseksi käyttämällä tietämystään AI/ML:stä, big datasta ja ohjelmistokehityksestä.

Suorita kuvien segmentointi Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.Leonardo Bachega on vanhempi tutkija ja johtaja Amazon SageMaker JumpStart -tiimissä. Hän on intohimoinen tekoälypalvelujen rakentamiseen tietokonenäköä varten.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen