Käivitage piltide segmenteerimine rakendusega Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Käivitage piltide segmenteerimine rakendusega Amazon SageMaker JumpStart

Detsembris 2020, AWS teatas - üldine kättesaadavus Amazon SageMaker JumpStart, võime Amazon SageMaker mis aitab teil masinõppega (ML) kiiresti ja lihtsalt alustada. JumpStart pakub ühe klõpsuga peenhäälestamist ja paljude eelkoolitatud mudelite juurutamist populaarsete ML-ülesannete jaoks, samuti valikut täislahendusi, mis lahendavad levinud äriprobleeme. Need funktsioonid eemaldavad ML-protsessi iga etapi raskused, muutes kvaliteetsete mudelite väljatöötamise lihtsamaks ja lühendades kasutuselevõtuks kuluvat aega.

See postitus on kolmas seeriast, mis käsitleb JumpStarti kasutamist konkreetsete ML-ülesannete jaoks. Aastal esimene postitus, näitasime, kuidas saate KiirStartis piltide klassifitseerimise kasutusjuhtumeid käivitada. Aastal teine ​​postitus, näitasime, kuidas saate KiirStartis teksti liigitamise kasutusjuhtumeid käivitada. Selles postituses pakume samm-sammult ülevaadet, kuidas MXNeti koolitatud mudeleid kasutades pildisegmenteerimismudelit peenhäälestada ja juurutada. Uurime kahte võimalust sama tulemuse saamiseks: JumpStarti graafilise liidese kaudu Amazon SageMaker Studio, ja programmiliselt läbi KiirStardi API-d.

Kui soovite hüpata otse selles postituses selgitatavasse JumpStart API koodi, võite vaadata järgmisi Jupyteri sülearvutite näidiseid:

KiirStardi ülevaade

KiirStart aitab teil alustada ML-mudelitega mitmesuguste ülesannete jaoks ilma ühtki koodirida kirjutamata. Kirjutamise ajal võimaldab JumpStart teha järgmist.

  • Kasutage tavaliste ML-ülesannete jaoks eelkoolitatud mudeleid – JumpStart võimaldab teil tegeleda levinumate ML-ülesannetega ilma arendustegevuseta, pakkudes suurte, avalikult kättesaadavate andmekogumite jaoks eelkoolitatud mudelite hõlpsat juurutamist. ML-i teadlaskond on teinud palju pingutusi, et muuta enamik hiljuti välja töötatud mudeleid kasutamiseks avalikult kättesaadavaks. JumpStart majutab enam kui 300 mudelit, mis hõlmab 15 kõige populaarsemat ML-ülesannet, nagu objektide tuvastamine, teksti klassifitseerimine ja teksti genereerimine, muutes algajatele nende kasutamise lihtsaks. Need mudelid on pärit populaarsetest mudelikeskustest, nagu TensorFlow, PyTorch, Hugging Face ja MXNet.
  • Eelkoolitatud mudelite peenhäälestus - JumpStart võimaldab teil eelkoolitatud mudeleid peenhäälestada, ilma et oleks vaja oma treeningalgoritmi kirjutada. ML-is nimetatakse võimalust ühest valdkonnast õpitud teadmisi teise valdkonda üle kanda ülekandmisõpe. Saate kasutada ülekandeõpet, et luua oma väiksematele andmekogumitele täpseid mudeleid, mille koolituskulud on palju väiksemad kui algse mudeli väljaõppega seotud omad. JumpStart sisaldab ka populaarseid LightGBM-il, CatBoostil, XGBoostil ja Scikit-learnil põhinevaid treeningalgoritme, mida saate nullist treenida tabeli regressiooni ja klassifitseerimise jaoks.
  • Kasutage valmislahendusi – JumpStart pakub 17 lahendust tavalisteks ML kasutusjuhtudeks, nagu nõudluse prognoosimine ning tööstus- ja finantsrakendused, mille saate juurutada vaid mõne klõpsuga. Lahendused on täielikud ML-rakendused, mis ühendavad erinevaid AWS-teenuseid konkreetse ärilise kasutusjuhtumi lahendamiseks. Nad kasutavad AWS CloudFormation malle ja viitearhitektuure kiireks juurutamiseks, mis tähendab, et neid saab täielikult kohandada.
  • SageMakeri algoritmide kohta vaadake sülearvuti näiteid – SageMaker pakub komplekti sisseehitatud algoritme, mis aitavad andmeteadlastel ja ML-i praktikutel ML-mudelite koolitamist ja juurutamist kiiresti alustada. JumpStart pakub näidismärkmikke, mida saate nende algoritmide kiireks kasutamiseks kasutada.
  • Vaadake üle koolitusvideod ja blogid – JumpStart pakub ka arvukalt ajaveebipostitusi ja videoid, mis õpetavad kasutama SageMakeri erinevaid funktsioone.

KiirStart aktsepteerib kohandatud VPC sätteid ja AWS-i võtmehaldusteenus (AWS KMS) krüpteerimisvõtmed, et saaksite saadaolevaid mudeleid ja lahendusi turvaliselt oma ettevõtte keskkonnas kasutada. Saate edastada oma turvasätted JumpStartile Studios või SageMaker Python SDK kaudu.

Semantiline segmenteerimine

Semantiline segmenteerimine piiritleb iga sisendpildil esinevate objektide klassi. See märgistab (liigitab) sisendpildi iga piksli klassisildiga eelnevalt määratletud klasside komplektist. Mitu sama klassi objekti vastendatakse samale maskile.

Peenhäälestamiseks saadaolev mudel ehitab põhivõrgu peale täielikult konvolutsioonilise võrgu (FCN) "pea". Peenhäälestuse samm peenhäälestab FCNHeadi, hoides samal ajal ülejäänud mudeli parameetrid külmutatuna, ja tagastab peenhäälestatud mudeli. Eesmärk on minimeerida ühe piksli softmax ristentroopia kadu, et treenida FCN-i. Peenhäälestusega tagastatud mudelit saab järelduste tegemiseks edasi kasutada.

Kui treeninguandmed sisaldavad kahte pilti, peaks sisendkataloog välja nägema järgmise koodina. Png-failide nimed võivad olla mis tahes.

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

Maskifailides peaks iga piksli kohta olema klassisildi teave.

Eksemplari segmenteerimine

Eksemplari segmenteerimine tuvastab ja piiritleb pildil iga erineva huvipakkuva objekti. See märgistab iga piksli eksemplari sildiga. Kui semantiline segmenteerimine määrab sama sildi sama klassi mitme objekti pikslitele, siis eksemplari segmenteerimine märgistab pildil oleva objekti igale esinemisele vastavad pikslid eraldi sildi abil.

Praegu pakub JumpStart näiteks segmenteerimiseks ainult järeldusmudeleid ja ei toeta peenhäälestamist.

Järgmised pildid illustreerivad erinevust semantilise segmenteerimise ja eksemplari segmenteerimise järelduste vahel. Algsel pildil on pildil kaks inimest. Semantiline segmenteerimine käsitleb mitut inimest pildil ühe üksusena: Person. Eksemplaride segmenteerimine tuvastab aga üksikud inimesed Person kategooriasse.

Lahenduse ülevaade

Järgmised jaotised pakuvad samm-sammult demo semantilise segmenteerimise teostamiseks JumpStartiga nii Studio kasutajaliidese kui ka JumpStart API-de kaudu.

Läbime järgmised sammud:

  1. JumpStartile pääsete juurde Studio kasutajaliidese kaudu:
    1. Tehke eelkoolitatud mudeli põhjal järeldused.
    2. Viimistlege eelkoolitatud mudelit.
  2. Kasutage JumpStarti programmiliselt koos SageMaker Python SDK-ga:
    1. Tehke eelkoolitatud mudeli põhjal järeldused.
    2. Viimistlege eelkoolitatud mudelit.

Arutame ka JumpStarti täiendavaid täiustatud funktsioone.

JumpStartile pääsete juurde Studio kasutajaliidese kaudu

Selles jaotises näitame, kuidas treenida ja juurutada JumpStart mudeleid Studio kasutajaliidese kaudu.

Tehke eelkoolitatud mudeli põhjal järeldused

Järgmine video näitab, kuidas leida JumpStartis eelkoolitatud semantiline segmenteerimismudel ja see kasutusele võtta. Mudeli leht sisaldab väärtuslikku teavet mudeli, selle kasutamise, eeldatava andmevormingu ja mõnede peenhäälestuste kohta. Saate juurutada kõiki JumpStartis saadaolevaid eelkoolitatud mudeleid. Järelduste tegemiseks valime eksemplari tüübi ml.g4dn.xlarge. See tagab madala järelduste latentsuse jaoks vajaliku GPU kiirenduse, kuid madalama hinnaga. Pärast SageMakeri hostieksemplari konfigureerimist valige juurutada. Võib kuluda 5–10 minutit, kuni teie püsiv lõpp-punkt on valmis.

Mõne minuti pärast on teie lõpp-punkt töökorras ja valmis järeldustaotlustele vastama.

Samamoodi saate juurutada eelkoolitatud eksemplari segmenteerimismudeli, järgides samu samme eelmises videos ja otsides KiirStardi otsinguribal semantilise segmenteerimise asemel eksemplari segmenteerimist.

Viimistlege eelkoolitatud mudelit

Järgmine video näitab, kuidas KiirStartis semantilist segmenteerimismudelit leida ja peenhäälestada. Videos täpsustame mudelit kasutades PennFudanPedi andmestik, mis on vaikimisi saadaval rakenduses KiirStart, mille saate alla laadida jaotisest Apache 2.0 litsents.

Enda andmestiku peenhäälestus hõlmab andmete õiget vormindamist (nagu on selgitatud mudelilehel) ja nende üleslaadimist Amazoni lihtne salvestusteenus (Amazon S3) ja määrates selle asukoha andmeallika konfiguratsioonis. Kasutame samu hüperparameetri väärtusi, mis on vaikimisi seatud (perioodide arv, õppimiskiirus ja partii suurus). Samuti kasutame SageMakeri koolituseksemplarina GPU-ga toetatud ml.p3.2xlarge.

Saate jälgida oma treeningtööd otse Studio konsoolil ja teid teavitatakse selle lõppemisest. Kui koolitus on lõppenud, saate viimistletud mudeli juurutada samal lehel, kus on koolitustöö üksikasjad. Juurutamise töövoog on sama, mis eelkoolitatud mudeli juurutamine.

Kasutage KiirStarti programmiliselt koos SageMaker SDK-ga

Eelmistes jaotistes näitasime, kuidas saate kasutada JumpStart kasutajaliidest, et juurutada eelkoolitatud mudel ja seda mõne klõpsuga interaktiivselt peenhäälestada. Siiski saate kasutada ka JumpStarti mudeleid ja lihtsat programmilist peenhäälestamist, kasutades API-sid, mis on integreeritud SageMakeri SDK-sse. Vaatame nüüd kiiret näidet selle kohta, kuidas saate eelnevat protsessi korrata. Kõik selle demo etapid on saadaval kaasasolevates sülearvutites KiirStardi sissejuhatus – eksemplaride segmenteerimine ja KiirStardi sissejuhatus – semantiline segmenteerimine.

Tehke eelkoolitatud mudeli põhjal järeldused

Selles jaotises valime JumpStartis sobiva eelkoolitatud mudeli, juurutame selle mudeli SageMakeri lõpp-punkti ja teeme juurutatud lõpp-punkti kohta järeldused.

SageMaker on Dockeri konteineritel põhinev platvorm. KiirStart kasutab saadaolevat raamistikupõhist SageMakeri süvaõppekonteinerid (DLC-d). Toome kõik lisapaketid ja skriptid valitud ülesande treenimiseks ja järelduste tegemiseks. Lõpuks tuuakse eelkoolitatud mudeliartefaktid eraldi model_uris, mis pakub platvormile paindlikkust. Saate ühe koolituse või järeldusskriptiga kasutada mis tahes arvu mudeleid, mis on sama ülesande jaoks eelnevalt koolitatud. Vaadake järgmist 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")

Näiteks segmenteerimise saame määrata model_id et mxnet-semseg-fcn-resnet50-ade. Identifikaatoris olev is vastab eksemplari segmenteerimisele.

Järgmisena söötame ressursid a SageMakeri mudel eksemplar ja juurutage lõpp-punkt:

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

Mõne minuti pärast võetakse meie mudel kasutusele ja saame sellest reaalajas prognoose saada!

Järgmine koodilõik annab teile ülevaate semantilisest segmenteerimisest. Iga piksli ennustatud mask visualiseeritakse. Juurutatud mudeli põhjal järelduste tegemiseks tuleb sisendkujutis esitada binaarvormingus. Lõpp-punkti vastus on ennustatud silt iga pildi piksli jaoks. Me kasutame query_endpoint ja parse_response abifunktsioonid, mis on määratletud kaasas olev märkmik:

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

Viimistlege eelkoolitatud mudelit

Valitud mudeli peenhäälestamiseks peame hankima selle mudeli URI, samuti koolitusskripti ja koolituseks kasutatava konteineri kujutise URI. Õnneks sõltuvad need kolm sisendit ainult mudeli nimest ja versioonist (saadaolevate mudelite loendit vt KiirStardi saadaolevate mudelite tabel)ja eksemplari tüüp, mida soovite treenida. Seda näitab järgmine koodilõik:

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

Me toome üles model_id mis vastab samale mudelile, mida me varem kasutasime. Nüüd saate SageMakeri SDK abil seda Kiirstardi mudelit oma kohandatud andmestikul peenhäälestada. Kasutame andmestikku, mis on avalikult hostitud Amazon S3-s ja mis on mugavalt keskendunud semantilisele segmenteerimisele. Andmekogum peaks olema peenhäälestamiseks üles ehitatud, nagu on selgitatud eelmises jaotises. Vaadake järgmist näidiskoodi:

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

Saame valitud mudeli jaoks samad vaikehüperparameetrid, mida nägime eelmises jaotises, kasutades sagemaker.hyperparameters.retrieve_default(). Seejärel loome SageMakeri prognoosija ja kutsume välja .fit meetod, et alustada meie mudeli peenhäälestamist, edastades sellele meie treeningandmete jaoks Amazon S3 URI. The entry_point pakutava skripti nimi on transfer_learning.py (sama teiste ülesannete ja mudelite puhul) ning sisendandmekanal edastatakse .fit tuleb nimetada training.

Algoritmi treenimise ajal saate jälgida selle edenemist kas SageMakeri sülearvutis, kus te koodi kasutate, või Amazon CloudWatch. Kui treening on lõppenud, laaditakse peenhäälestatud mudeliartefaktid üles treeningkonfiguratsioonis määratud Amazon S3 väljundi asukohta. Nüüd saate mudeli juurutada samal viisil kui eelkoolitatud mudelit.

täiustatud funktsioonid

Lisaks eelkoolitatud mudelite peenhäälestamisele ja juurutamisele pakub JumpStart palju täiustatud funktsioone.

Esimene on automaatne mudeli häälestamine. See võimaldab teil automaatselt häälestada oma ML-mudeleid, et leida hüperparameetrite väärtused suurima täpsusega SageMaker API kaudu pakutavas vahemikus.

Teine on täiendkoolitus. See võimaldab teil treenida mudelit, mida olete juba viimistletud, kasutades laiendatud andmekogumit, mis sisaldab aluseks olevat mustrit, mida eelmistes peenhäälestuskäibetes arvesse ei võetud, mis põhjustas mudeli halva jõudluse. Järkjärguline koolitus säästab nii aega kui ka ressursse, sest te ei pea mudelit nullist ümber õpetama.

Järeldus

Selles postituses näitasime, kuidas peenhäälestada ja juurutada eelkoolitatud semantilist segmenteerimismudelit ning kuidas seda kohandada näiteks segmenteerimiseks JumpStarti abil. Saate seda teha ilma koodi kirjutamata. Proovige lahendust ise ja saatke meile oma kommentaarid.

JumpStarti kohta lisateabe saamiseks ja selle kohta, kuidas kasutada avatud lähtekoodiga eelkoolitatud mudeleid mitmesuguste muude ML-ülesannete jaoks, vaadake järgmist AWS re:Invent 2020 video.


Autoritest

Käivitage piltide segmenteerimine rakendusega Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Dr Vivek Madan on Amazon SageMaker JumpStart meeskonna rakendusteadlane. Ta sai doktorikraadi Illinoisi ülikoolist Urbana-Champaignis ja oli Georgia Techi järeldoktor. Ta on aktiivne masinõppe ja algoritmide kujundamise uurija ning avaldanud ettekandeid EMNLP, ICLR, COLT, FOCS ja SODA konverentsidel.

Käivitage piltide segmenteerimine rakendusega Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Santosh Kulkarni on ettevõtte Amazon Web Services Enterprise Solutionsi arhitekt, kes töötab spordiklientidega Austraalias. Ta on kirglik suuremahuliste hajutatud rakenduste loomise vastu, et lahendada äriprobleeme, kasutades oma teadmisi tehisintellekti/ML-i, suurandmete ja tarkvaraarenduse vallas.

Käivitage piltide segmenteerimine rakendusega Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Leonardo Bachega on Amazon SageMaker JumpStarti meeskonna vanemteadur ja juht. Ta on kirglik arvutinägemise AI-teenuste loomise vastu.

Ajatempel:

Veel alates AWS-i masinõpe