Futtassa a képszegmentálást az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Futtassa a képszegmentálást az Amazon SageMaker JumpStart segítségével

Decemberben 2020, Az AWS bejelentette - a Amazon SageMaker JumpStart, képessége Amazon SageMaker amely segít gyorsan és egyszerűen elkezdeni a gépi tanulást (ML). A JumpStart az előre betanított modellek széles skálájának egy kattintással történő finomhangolását és telepítését biztosítja a népszerű ML-feladatok között, valamint a gyakori üzleti problémákat megoldó végpontok közötti megoldások választékát. Ezek a funkciók eltávolítják az ML folyamat minden egyes lépéséből adódó nehézségeket, megkönnyítve a kiváló minőségű modellek fejlesztését, és lerövidítve a telepítéshez szükséges időt.

Ez a bejegyzés a harmadik a JumpStart bizonyos ML feladatokhoz való használatáról szóló sorozatban. Ban,-ben első poszt, megmutattuk, hogyan futtathat képosztályozási használati eseteket a JumpStarton. Ban,-ben második bejegyzés, megmutattuk, hogyan futtathat szövegosztályozási használati eseteket a JumpStarton. Ebben a bejegyzésben lépésről lépésre bemutatjuk a képszegmentációs modell finomhangolását és üzembe helyezését az MXNet betanított modelljei segítségével. Két módot kutatunk ugyanazon eredmény elérésére: a JumpStart grafikus felületén keresztül Amazon SageMaker Studio, és programozottan keresztül JumpStart API-k.

Ha egyenesen bele szeretne ugrani az ebben a bejegyzésben ismertetett JumpStart API kódba, tekintse meg a következő Jupyter notebook mintákat:

JumpStart áttekintése

A JumpStart segít az ML modellek használatának megkezdésében számos feladathoz anélkül, hogy egyetlen kódsort is meg kellene írnia. Az írás idején a JumpStart a következőket teszi lehetővé:

  • Telepítsen előre betanított modelleket a gyakori ML-feladatokhoz – A JumpStart lehetővé teszi a gyakori ML-feladatok megoldását fejlesztési erőfeszítések nélkül azáltal, hogy könnyen telepítheti a nagy, nyilvánosan elérhető adatkészleteken előre betanított modelleket. Az ML-kutató közösség nagy erőfeszítéseket tett annak érdekében, hogy a közelmúltban kifejlesztett modellek többségét nyilvánosan elérhetővé tegye. A JumpStart több mint 300 modellből álló gyűjteményt tartalmaz, amelyek a 15 legnépszerűbb ML-feladatot ölelik fel, mint például az objektumészlelés, a szövegosztályozás és a szöveggenerálás, így a kezdők is könnyen használhatják őket. Ezek a modellek olyan népszerű modellközpontokból származnak, mint a TensorFlow, PyTorch, Hugging Face és MXNet.
  • Az előre betanított modellek finomhangolása – A JumpStart lehetővé teszi az előre betanított modellek finomhangolását anélkül, hogy saját edzési algoritmust kellene írnia. Az ML-ben az egyik tartományban tanult tudás másik tartományba való átvitelének képességét hívják transzfer tanulás. Az átviteli tanulás segítségével pontos modelleket állíthat elő kisebb adatkészletein, sokkal alacsonyabb képzési költségekkel, mint az eredeti modell betanításával kapcsolatos költségek. A JumpStart a LightGBM, CatBoost, XGBoost és Scikit-learn alapú népszerű edzési algoritmusokat is tartalmazza, amelyeket a nulláról edzhet a táblázatos regresszióhoz és osztályozáshoz.
  • Használjon előre elkészített megoldásokat – A JumpStart 17 megoldást kínál a gyakori ML használati esetekre, mint például a kereslet-előrejelzés, valamint az ipari és pénzügyi alkalmazások, amelyeket néhány kattintással telepíthet. A megoldások olyan teljes körű ML-alkalmazások, amelyek különböző AWS-szolgáltatásokat kapcsolnak össze egy adott üzleti felhasználási eset megoldása érdekében. Használják AWS felhőképződés sablonok és referenciaarchitektúrák a gyors üzembe helyezés érdekében, ami azt jelenti, hogy teljes mértékben testreszabhatók.
  • Tekintse meg a SageMaker algoritmusokkal kapcsolatos notebook-példákat – A SageMaker beépített algoritmusokat kínál, amelyek segítenek az adattudósoknak és az ML-gyakorlóknak az ML modellek gyors képzésében és bevezetésében. A JumpStart mintajegyzetfüzeteket biztosít, amelyek segítségével gyorsan használhatja ezeket az algoritmusokat.
  • Tekintse át a képzési videókat és blogokat – A JumpStart számos blogbejegyzést és videót is kínál, amelyek megtanítják a SageMaker különböző funkcióinak használatát.

A JumpStart elfogadja az egyéni VPC beállításokat és AWS kulcskezelési szolgáltatás (AWS KMS) titkosítási kulcsokat, így biztonságosan használhatja a rendelkezésre álló modelleket és megoldásokat a vállalati környezetben. Biztonsági beállításait átadhatja a JumpStartnak a Studion belül vagy a SageMaker Python SDK-n keresztül.

Szemantikus szegmentálás

A szemantikus szegmentáció lehatárolja a bemeneti képen megjelenő objektumok minden osztályát. A bemeneti kép minden pixelét osztálycímkével látja el (osztályozza) egy előre meghatározott osztálykészletből. Ugyanazon osztályba tartozó több objektum ugyanarra a maszkra van leképezve.

A finomhangolásra rendelkezésre álló modell egy teljesen konvolúciós hálózati (FCN) „fejet” épít az alaphálózat tetejére. A finomhangolási lépés finomhangolja az FCNHead-et, miközben a modell többi részének paramétereit fagyasztva tartja, és visszaadja a finomhangolt modellt. A cél a pixelenkénti softmax keresztentrópia veszteség minimalizálása az FCN betanítása érdekében. A finomhangolással visszaadott modell tovább használható következtetésekhez.

A bemeneti könyvtárnak a következő kódhoz kell hasonlítania, ha a képzési adatok két képet tartalmaznak. A .png fájlok neve bármi lehet.

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

A maszkfájloknak minden pixelhez osztálycímke-információt kell tartalmazniuk.

Példányszegmentálás

A példányszegmentálás észleli és körülhatárolja a képen megjelenő minden egyes érdekes objektumot. Minden képpontot egy példánycímkével lát el. Míg a szemantikus szegmentálás ugyanazt a címkét rendeli hozzá ugyanazon osztály több objektumának képpontjaihoz, a példányszegmentálás további címkékkel látja el a képen lévő objektum minden előfordulásának megfelelő pixeleket.

Jelenleg a JumpStart csak következtetési modelleket kínál például szegmentáláshoz, és nem támogatja a finomhangolást.

A következő képek a szemantikai szegmentálás és a példányszegmentáció közötti következtetés közötti különbséget mutatják be. Az eredeti képen két ember látható. A szemantikus szegmentálás több embert a képen egyetlen entitásként kezel: Person. A példányszegmentáció azonban az egyes személyeket azonosítja a rendszeren belül Person kategória.

Megoldás áttekintése

A következő szakaszok lépésről lépésre bemutatják a szemantikai szegmentálást a JumpStart segítségével, mind a Studio felhasználói felületén, mind a JumpStart API-kon keresztül.

A következő lépéseket járjuk végig:

  1. A JumpStart elérése a Studio felhasználói felületén keresztül:
    1. Futtasson következtetést az előre betanított modellen.
    2. Finomhangolja az előre betanított modellt.
  2. A JumpStart programozott használata a SageMaker Python SDK-val:
    1. Futtasson következtetést az előre betanított modellen.
    2. Finomhangolja az előre betanított modellt.

A JumpStart további speciális funkcióit is tárgyaljuk.

A JumpStart elérése a Studio felhasználói felületén keresztül

Ebben a részben bemutatjuk, hogyan lehet betanítani és telepíteni a JumpStart modelleket a Studio felhasználói felületén keresztül.

Futtasson következtetést az előre betanított modellen

A következő videó bemutatja, hogyan találhat meg egy előre betanított szemantikai szegmentációs modellt a JumpStarton, és hogyan telepítheti azt. A modelloldal értékes információkat tartalmaz a modellről, annak használatáról, a várható adatformátumról és néhány finomhangolási részletről. A JumpStartban elérhető bármely előre betanított modell üzembe helyezhető. A következtetéshez az ml.g4dn.xlarge példánytípust választjuk. Biztosítja az alacsony következtetési késleltetéshez szükséges GPU-gyorsítást, de alacsonyabb áron. A SageMaker tárhelypéldány konfigurálása után válassza a lehetőséget Telepítése. 5–10 percbe telhet, amíg az állandó végpont elindul és fut.

Néhány perc múlva a végpont működőképes, és készen áll a következtetési kérések megválaszolására.

Hasonlóképpen telepíthet egy előre betanított példányszegmentációs modellt az előző videóban szereplő lépések követésével, miközben a JumpStart keresősávjában a szemantikai szegmentálás helyett a példányszegmentálást keresi.

Finomhangolja az előre betanított modellt

A következő videó bemutatja, hogyan kereshet meg és finomhangolhat egy szemantikai szegmentációs modellt a JumpStartban. A videóban a modell segítségével finomhangoljuk a PennFudanPed adatkészlet, amely alapértelmezés szerint a JumpStartban található, amelyet a alatt tölthet le Apache 2.0 licenc.

A saját adatkészlet finomhangolása magában foglalja az adatok helyes formázását (a modelloldalon leírtak szerint), majd feltölti őket a Amazon egyszerű tárolási szolgáltatás (Amazon S3), és megadja a helyét az adatforrás konfigurációjában. Ugyanazokat az alapértelmezés szerint beállított hiperparaméter-értékeket használjuk (korszakok száma, tanulási sebesség és kötegméret). A GPU-val támogatott ml.p3.2xlarge-t is használunk SageMaker képzési példányunkként.

Közvetlenül a Studio konzolon nyomon követheti edzési feladatát, és értesítést kap annak befejezéséről. A képzés befejezése után telepítheti a finomhangolt modellt ugyanarról az oldalról, amely a képzési feladat részleteit tartalmazza. A telepítési munkafolyamat megegyezik egy előre betanított modell üzembe helyezésével.

A JumpStart programozott használata a SageMaker SDK-val

Az előző részekben bemutattuk, hogyan használhatja a JumpStart UI-t egy előre betanított modell üzembe helyezésére és interaktív finomhangolására, néhány kattintással. Használhatja azonban a JumpStart modelljeit és egyszerű programozott finomhangolását is a SageMaker SDK-ba integrált API-k használatával. Most áttekintünk egy gyors példát arra, hogyan lehet megismételni az előző folyamatot. A bemutató összes lépése megtalálható a mellékelt notebookokban Bevezetés a JumpStartba – Példányszegmentálás és a Bevezetés a JumpStartba – Szemantikus szegmentáció.

Futtasson következtetést az előre betanított modellen

Ebben a szakaszban kiválasztunk egy megfelelő előre betanított modellt a JumpStartban, telepítjük ezt a modellt egy SageMaker-végpontra, és következtetést futtatunk a telepített végponton.

A SageMaker egy Docker konténereken alapuló platform. A JumpStart a rendelkezésre álló keretrendszer-specifikusat használja SageMaker Deep Learning tárolók (DLC-k). Lekérünk minden további csomagot, valamint szkripteket, amelyekkel kezelhetjük a képzést és a következtetéseket a kiválasztott feladathoz. Végül az előre betanított modelltermékeket külön lekérjük model_uris, amely rugalmasságot biztosít a platform számára. Tetszőleges számú, ugyanarra a feladatra előre betanított modellt használhat egyetlen betanítási vagy következtetési szkripttel. Lásd a következő kódot:

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

Például a szegmentálást beállíthatjuk model_id nak nek mxnet-semseg-fcn-resnet50-ade. Az azonosítóban szereplő is a példányszegmentációnak felel meg.

Ezután az erőforrásokat a SageMaker modell példány és telepítsen egy végpontot:

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

Néhány perc múlva a modellünk bevetésre kerül, és valós időben kaphatunk előrejelzéseket belőle!

A következő kódrészlet bepillantást nyújt a szemantikai szegmentálás kinézetébe. Megjelenik az egyes pixelekre előre jelzett maszk. Ahhoz, hogy következtetéseket lehessen levonni egy telepített modellből, egy bemeneti képet kell megadni bináris formátumban. A végpont válasza egy előre jelzett címke a kép minden pixeléhez. Használjuk a query_endpoint és a parse_response segítő függvények, amelyeket a kísérő jegyzetfüzet:

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

Finomhangolja az előre betanított modellt

A kiválasztott modell finomhangolásához meg kell szereznünk a modell URI-jét, valamint a betanítási szkript és a betanításhoz használt tárolókép URI-jét. Szerencsére ez a három bemenet kizárólag a modell nevétől és verziójától függ (az elérhető modellek listáját lásd JumpStart elérhető modelltáblázat), és az a példány típusa, amelyen oktatni szeretne. Ezt a következő kódrészlet szemlélteti:

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

Visszaszerezzük a model_id ugyanazon modellnek felel meg, amelyet korábban használtunk. Most már finomhangolhatja ezt a JumpStart modellt saját egyéni adatkészletén a SageMaker SDK segítségével. Olyan adatkészletet használunk, amely nyilvánosan az Amazon S3-on található, és kényelmesen a szemantikai szegmentációra összpontosít. Az adatkészletet a finomhangoláshoz az előző részben leírtak szerint kell felépíteni. Lásd a következő példakódot:

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

A kiválasztott modellünkhöz ugyanazokat az alapértelmezett hiperparamétereket kapjuk, mint amelyeket az előző részben láttunk, használatával sagemaker.hyperparameters.retrieve_default(). Ezután példányosítunk egy SageMaker becslést, és meghívjuk a .fit módszerrel kezdjük el a modellünk finomhangolását, átadva neki az Amazon S3 URI-t a képzési adatainkhoz. A entry_point A megadott szkript neve transfer_learning.py (ugyanez más feladatokhoz és modellekhez), és a bemeneti adatcsatorna átadásra kerül .fit meg kell nevezni training.

Amíg az algoritmus edz, nyomon követheti a folyamatát a SageMaker notebookban, ahol magát a kódot futtatja, vagy amazonfelhőóra. Amikor az edzés befejeződött, a finomhangolt modellműtermékek feltöltődnek a képzési konfigurációban megadott Amazon S3 kimeneti helyre. Most már ugyanúgy telepítheti a modellt, mint az előre betanított modellt.

Jellemzők

Az előre betanított modellek finomhangolása és telepítése mellett a JumpStart számos fejlett funkciót kínál.

Az első az automatikus modelltuning. Ez lehetővé teszi az ML modellek automatikus hangolását, hogy a SageMaker API-n keresztül biztosított tartományon belül a legnagyobb pontossággal találják meg a hiperparaméterértékeket.

A második fokozatos képzés. Ez lehetővé teszi a már finomhangolt modell betanítását egy olyan kibővített adatkészlet használatával, amely a korábbi finomhangolási futtatások során nem vett alapul szolgáló mintát tartalmaz, ami gyenge modellteljesítményt eredményezett. A fokozatos betanítás időt és erőforrást takarít meg, mivel nem kell a modellt a semmiből áttanítani.

Következtetés

Ebben a bejegyzésben bemutattuk, hogyan lehet finomhangolni és telepíteni egy előre betanított szemantikai szegmentációs modellt, és hogyan lehet adaptálni például a JumpStart segítségével történő szegmentáláshoz. Ezt megteheti anélkül, hogy kódot kellene írnia. Próbálja ki a megoldást saját maga, és küldje el nekünk észrevételeit.

Ha többet szeretne megtudni a JumpStartról és arról, hogyan használhatja a nyílt forráskódú, előre betanított modelleket számos más ML-feladathoz, tekintse meg a következőt AWS re:Invent 2020 videó.


A szerzőkről

Futtassa a képszegmentálást az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Dr. Vivek Madan az Amazon SageMaker JumpStart csapatának alkalmazott tudósa. PhD fokozatát az Illinoisi Egyetemen szerezte, az Urbana-Champaign-ben, és a Georgia Tech posztdoktori kutatója volt. Aktív kutatója a gépi tanulásnak és az algoritmustervezésnek, és publikált előadásokat EMNLP, ICLR, COLT, FOCS és SODA konferenciákon.

Futtassa a képszegmentálást az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Santosh Kulkarni az Amazon Web Services vállalati megoldások építésze, aki sportügyfelekkel dolgozik Ausztráliában. Szenvedélyesen épít nagyszabású elosztott alkalmazásokat üzleti problémák megoldására, felhasználva tudását az AI/ML, a big data és a szoftverfejlesztés terén.

Futtassa a képszegmentálást az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Leonardo Bachega vezető tudós és menedzser az Amazon SageMaker JumpStart csapatában. Szenvedélye a számítógépes látáshoz szükséges mesterséges intelligencia szolgáltatások kiépítése.

Időbélyeg:

Még több AWS gépi tanulás