Tanulás átvitele a TensorFlow objektumészlelési modellekhez az Amazon SageMakerben

Amazon SageMaker lakosztályt kínál beépített algoritmusok, előképzett modellekés előre elkészített megoldássablonok hogy segítse az adattudósokat és a gépi tanulást (ML) gyakorló szakembereket az ML modellek gyors betanításában és bevezetésében. Ezeket az algoritmusokat és modelleket felügyelt és nem felügyelt tanuláshoz egyaránt használhatja. Különféle típusú bemeneti adatokat képesek feldolgozni, beleértve a táblázatos, képi és szöveges adatokat.

Ez a bejegyzés a második a SageMaker új beépített algoritmusairól szóló sorozatban. Ban,-ben első poszt, megmutattuk, hogyan biztosít a SageMaker beépített algoritmust a képosztályozáshoz. Ma bejelentjük, hogy a SageMaker új beépített algoritmust kínál a TensorFlow segítségével történő objektumok észleléséhez. Ez a felügyelt tanulási algoritmus támogatja az átviteli tanulást a TensorFlow-ban elérhető számos előre betanított modellhez. Képet vesz bemenetként, és a képen lévő objektumokat a határolókeretekkel együtt kiadja. Ezeket az előre betanított modelleket az átviteli tanulás segítségével még akkor is finomhangolhatja, ha nem áll rendelkezésre nagy számú képzési kép. A SageMakeren keresztül érhető el beépített algoritmusok valamint a SageMaker JumpStart UI in Amazon SageMaker Studio. További információkért lásd: Objektumészlelés Tensorflow és a példafüzet A SageMaker Tensorflow – objektumészlelés bemutatása.

Az objektumészlelés a TensorFlow-val a SageMakerben átviteli tanulást biztosít a TensorFlow Hubban elérhető számos előre betanított modellen. A betanítási adatokban található osztálycímkék számának megfelelően egy új, véletlenszerűen inicializált objektumészlelő fej váltja fel a TensorFlow modell meglévő fejét. Az új betanítási adatokon vagy a teljes hálózat, beleértve az előre betanított modellt, vagy csak a felső réteg (objektumérzékelő fej) finomhangolható. Ebben az átviteli tanulási módban még kisebb adatkészlettel is elérheti a képzést.

Az új TensorFlow objektumészlelési algoritmus használata

Ez a rész leírja, hogyan kell használni a TensorFlow objektumészlelési algoritmust a SageMaker Python SDK. A Studio felhasználói felületről való használatára vonatkozó információkért lásd: SageMaker JumpStart.

Az algoritmus támogatja az átviteli tanulást a felsorolt ​​előre betanított modelleknél TensorFlow modellek. Minden modellt egyedileg azonosítanak model_id. A következő kód bemutatja, hogyan lehet finomhangolni a ResNet50 V1 FPN modellt, amelyet a model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 egyéni edzési adatkészleten. Az egyes model_id, annak érdekében, hogy SageMaker képzési munkát indítsunk a Becslő A SageMaker Python SDK osztályában le kell töltenie a Docker-kép-URI-t, a betanító szkript-URI-t és az előre betanított modell-URI-t a SageMakerben biztosított segédfunkciókon keresztül. A betanítási parancsfájl URI tartalmazza az összes szükséges kódot az adatfeldolgozáshoz, az előre betanított modell betöltéséhez, a modell betanításához és a betanított modell mentéséhez következtetés céljából. Az előre betanított modell URI tartalmazza az előre betanított modell architektúra definíciót és a modell paramétereit. Vegye figyelembe, hogy a Docker-kép-URI és a betanítási parancsfájl URI-ja megegyezik az összes TensorFlow objektumészlelési modellnél. Az előre betanított modell URI az adott modellre jellemző. Az előre betanított modell tarballokat előre letöltöttük a TensorFlow-ból, és a megfelelő modell aláírással mentettük Amazon egyszerű tárolási szolgáltatás (Amazon S3) gyűjtőhelyeken, így a képzési feladat hálózati elszigetelten fut. Lásd a következő kódot:

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"

Ezekkel a modell-specifikus képzési műtermékekkel megszerkesztheti a Becslő osztály:

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

Ezután az egyéni adathalmazban történő tanulás átviteléhez szükség lehet a képzési hiperparaméterek alapértelmezett értékeinek módosítására, amelyek a következő helyen találhatók: Hiperparaméterek. Ezeknek a hiperparamétereknek az alapértelmezett értékeivel együtt lekérheti a Python szótárát a hívással hyperparameters.retrieve_default, szükség szerint frissítse őket, majd adja át a Becslő osztálynak. Vegye figyelembe, hogy egyes hiperparaméterek alapértelmezett értékei eltérnek a különböző modelleknél. Nagy modelleknél az alapértelmezett kötegméret kisebb, és a train_only_top_layer hiperparaméter van beállítva True. A hiperparaméter train_only_top_layer meghatározza, hogy mely modellparaméterek változnak a finomhangolási folyamat során. Ha train_only_top_layer is True, az osztályozási rétegek paraméterei változnak, a többi paraméter pedig állandó marad a finomhangolási folyamat során. Másrészt ha train_only_top_layer is False, a modell összes paramétere finomhangolásra került. Lásd a következő kódot:

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"

Mi biztosítjuk a PennFudanPed adatkészlet mint alapértelmezett adatkészlet a modellek finomhangolásához. Az adatkészlet gyalogosok képeit tartalmazza. A következő kód biztosítja az S3-csoportokban tárolt alapértelmezett edzési adatkészletet:

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

Végül a SageMaker képzési feladat elindításához a modell finomhangolásához hívja fel a telefont .fit a Becslő osztály objektumán, miközben átadja a betanítási adatkészlet S3 helyét:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

További információért arról, hogyan használhatja az új SageMaker TensorFlow objektumészlelési algoritmust a tanulás átvitelére egy egyéni adatkészleten, helyezze üzembe a finomhangolt modellt, futtasson következtetést a telepített modellen, és telepítse az előre betanított modellt úgy, ahogy van, első finomhangolás nélkül. egyéni adatkészleten tekintse meg a következő példajegyzetfüzetet: Bevezetés a SageMaker TensorFlow-ba – Objektumészlelés.

Bemeneti/kimeneti interfész a TensorFlow objektumészlelési algoritmushoz

A felsorolt, előre betanított modellek mindegyikét finomhangolhatja TensorFlow modellek tetszőleges számú osztályhoz tartozó képeket tartalmazó adott adatkészlethez. A cél az előrejelzési hiba minimalizálása a bemeneti adatokban. A finomhangolással visszaadott modell tovább használható következtetésekhez. Az alábbiakban ismertetjük, hogyan kell formázni a betanítási adatokat a modellbe történő bevitelhez:

  • Bemenet – Egy könyvtár alkönyvtár képekkel és egy fájllal annotations.json.
  • teljesítmény – Két kimenet van. Az első egy finomhangolt modell, amely következtetések levonására használható, vagy növekményes képzéssel tovább képezhető. A második egy fájl, amely az osztályindexeket osztálycímkékre képezi le; ez a modellel együtt mentésre kerül.

A bemeneti könyvtárnak a következő példához hasonlóan kell kinéznie:

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

A annotations.json fájlnak tartalmaznia kell információkat bounding_boxes és osztálycímkéik. Legyen benne szótár a kulcsokkal "images" és a "annotations". Az érték a "images" A kulcsnak egy bejegyzéslistának kell lennie, egyet az űrlap minden képéhez {"file_name": image_name, "height": height, "width": width, "id": image_id}. A "annotations" A kulcsnak egy bejegyzéslistának kell lennie, egyet az űrlap minden határoló mezőjéhez {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

Következtetés a TensorFlow objektumészlelési algoritmussal

Az előállított modellek tárolhatók következtetések levonására, és támogathatók a kódolt .jpg, .jpeg és .png képformátumok, mint a application/x-image tartalom típus. A bemeneti kép mérete automatikusan megtörténik. A kimenet tartalmazza a dobozokat, az előrejelzett osztályokat és az egyes előrejelzések pontszámait. A TensorFlow objektumészlelési modell kérésenként egyetlen képet dolgoz fel, és csak egy sort ad ki a JSON-ban. A következő példa egy JSON-beli válaszra:

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 be van állítva application/json, akkor a modell csak előre jelzett dobozokat, osztályokat és pontszámokat ad ki. A képzéssel és a következtetésekkel kapcsolatos további részletekért lásd a mintafüzetet Bevezetés a SageMaker TensorFlow-ba – Objektumészlelés.

Használja a SageMaker beépített algoritmusait a JumpStart UI-n keresztül

A SageMaker TensorFlow objektumészlelést és bármely más beépített algoritmust is használhatja néhány kattintással a JumpStart UI-n keresztül. A JumpStart egy SageMaker szolgáltatás, amely lehetővé teszi beépített algoritmusok és előre betanított modellek betanítását és üzembe helyezését különböző ML keretrendszerekből és modellközpontokból egy grafikus felületen keresztül. Lehetővé teszi továbbá teljes értékű ML-megoldások üzembe helyezését is, amelyek ML-modelleket és különféle egyéb AWS-szolgáltatásokat kapcsolnak össze a célzott felhasználási esetek megoldása érdekében.

A következő két videó bemutatja, hogyan reprodukálhatja ugyanazt a finomhangolási és telepítési folyamatot, amelyen az imént mentünk keresztül, néhány kattintással a JumpStart UI-n keresztül.

Finomhangolja az előre betanított modellt

Itt van az a folyamat, amellyel ugyanazt az előre betanított objektumészlelési modellt finomhangolhatjuk.

Telepítse a finomhangolt modellt

A modell betanítása után egy kattintással közvetlenül telepítheti a modellt egy állandó, valós idejű végpontra.

Következtetés

Ebben a bejegyzésben bejelentettük a SageMaker TensorFlow objektumészlelő beépített algoritmus elindítását. Példakódot adtunk meg arra vonatkozóan, hogyan lehet tanulást átvinni egy egyéni adatkészleten a TensorFlow előre betanított modelljével, ezzel az algoritmussal.

További információkért nézd meg dokumentáció és a példafüzet.


A szerzőkről

Tanulás átvitele a TensorFlow objektumészlelési modellekhez az Amazon SageMaker PlatoBlockchain Data Intelligence rendszerben. Függőleges keresés. Ai.Dr. Vivek Madan egy alkalmazott tudós a Amazon SageMaker JumpStart csapat. 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.

Tanulás átvitele a TensorFlow objektumészlelési modellekhez az Amazon SageMaker PlatoBlockchain Data Intelligence rendszerben. Függőleges keresés. Ai.João Moura AI/ML Specialist Solutions Architect az Amazon Web Servicesnél. Leginkább az NLP-használati esetekre összpontosít, és segít ügyfeleinek a mély tanulási modell képzésében és bevezetésében. Emellett aktív támogatója az alacsony kódú ML megoldásoknak és az ML-re specializált hardvereknek.

Tanulás átvitele a TensorFlow objektumészlelési modellekhez az Amazon SageMaker PlatoBlockchain Data Intelligence rendszerben. Függőleges keresés. Ai.Dr. Ashish Khetan vezető alkalmazott tudós Amazon SageMaker beépített algoritmusok és segít a gépi tanulási algoritmusok fejlesztésében. PhD fokozatát az Illinois Urbana Champaign Egyetemen szerezte. A gépi tanulás és a statisztikai következtetések aktív kutatója, és számos közleményt publikált NeurIPS, ICML, ICLR, JMLR, ACL és EMNLP konferenciákon.

Időbélyeg:

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