TensorFlow objektituvastusmudelite õppimise ülekandmine Amazon SageMakeris

Amazon SageMaker pakub sviidi sisseehitatud algoritmid, eelkoolitatud mudelidja eelnevalt ehitatud lahendusmallid aidata andmeteadlastel ja masinõppe (ML) praktikutel ML-mudelite koolitamist ja kasutuselevõttu kiiresti alustada. Neid algoritme ja mudeleid saate kasutada nii juhendatud kui ka järelevalveta õppimiseks. Nad saavad töödelda erinevat tüüpi sisendandmeid, sealhulgas tabelit, pilti ja teksti.

See postitus on teine ​​​​SageMakeri uute sisseehitatud algoritmide seeriast. Aastal esimene postitus, näitasime, kuidas SageMaker pakub piltide klassifitseerimiseks sisseehitatud algoritmi. Täna teatame, et SageMaker pakub uut sisseehitatud algoritmi objektide tuvastamiseks TensorFlow abil. See juhendatud õppealgoritm toetab paljude TensorFlow's saadaolevate eelkoolitatud mudelite ülekandeõpet. See võtab sisendiks pildi ja väljastab pildil olevad objektid koos piirdekastidega. Saate neid eelkoolitatud mudeleid ülekandeõppe abil peenhäälestada isegi siis, kui suur hulk treeningpilte pole saadaval. See on saadaval SageMakeri kaudu sisseehitatud algoritmid samuti läbi SageMaker JumpStart UI in Amazon SageMaker Studio. Lisateabe saamiseks vaadake Objekti tuvastamise tensorvoog ja näidismärkmik Sissejuhatus SageMaker Tensorflow-sse – objektide tuvastamine.

Objektide tuvastamine TensorFlow abil SageMakeris pakub ülekandeõpet paljudel TensorFlow Hubis saadaolevatel eelkoolitatud mudelitel. Vastavalt koolitusandmetes olevate klassisiltide arvule asendab TensorFlow mudeli olemasoleva pea uus juhuslikult lähtestatud objektituvastuspea. Uute treeningandmete põhjal saab peenhäälestada kas kogu võrku, sealhulgas eelkoolitatud mudelit, või ainult ülemist kihti (objektituvastuspea). Selles ülekandeõpperežiimis saate treenida isegi väiksema andmestikuga.

Kuidas kasutada uut TensorFlow objektituvastusalgoritmi

Selles jaotises kirjeldatakse, kuidas kasutada TensorFlow objektituvastusalgoritmi koos SageMaker Python SDK. Teavet selle kohta, kuidas seda Studio kasutajaliideses kasutada, vt SageMaker KiirStart.

Algoritm toetab ülekandeõpet loetletud eelkoolitatud mudelite jaoks TensorFlow mudelid. Iga mudelit identifitseerib kordumatu model_id. Järgmine kood näitab, kuidas peenhäälestada ResNet50 V1 FPN-mudelit, mille tuvastab model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 kohandatud treeninguandmestikul. Igaühele model_id, et käivitada SageMakeri koolitustöö läbi Hindaja klassi SageMaker Python SDK, peate SageMakeris pakutavate utiliitide kaudu hankima Dockeri pildi URI, koolitusskripti URI ja eelkoolitatud mudeli URI. Treeningskripti URI sisaldab kogu vajalikku koodi andmetöötluseks, eelkoolitatud mudeli laadimiseks, mudeli väljaõppeks ja treenitud mudeli järelduste tegemiseks salvestamiseks. Eelkoolitatud mudeli URI sisaldab eelkoolitatud mudeli arhitektuuri määratlust ja mudeli parameetreid. Pange tähele, et Dockeri kujutise URI ja treeningskripti URI on kõigi TensorFlow objektituvastusmudelite jaoks samad. Eelkoolitatud mudeli URI on konkreetse mudeli jaoks spetsiifiline. Eelkoolitatud mudeli tarballid on TensorFlow'st eelnevalt alla laaditud ja salvestatud sobiva mudelisignatuuriga Amazoni lihtne salvestusteenus (Amazon S3) ämbrid, et koolitustöö toimuks võrgust eraldatult. Vaadake järgmist koodi:

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"

Nende mudelispetsiifiliste koolitusartefaktide abil saate konstrueerida objekti Hindaja klass:

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

Järgmiseks peate võib-olla kohandatud andmestikule õppimise ülekandmiseks muutma treeningu hüperparameetrite vaikeväärtusi, mis on loetletud Hüperparameetrid. Nende hüperparameetrite Pythoni sõnastiku koos vaikeväärtustega saate hankida helistades hyperparameters.retrieve_default, värskendage neid vastavalt vajadusele ja edastage need seejärel klassile Hindaja. Pange tähele, et mõne hüperparameetri vaikeväärtused on erinevate mudelite puhul erinevad. Suurte mudelite puhul on partii vaikimisi suurus väiksem ja train_only_top_layer hüperparameeter on seatud väärtusele True. Hüperparameeter train_only_top_layer määrab, millised mudeli parameetrid peenhäälestusprotsessi käigus muutuvad. Kui train_only_top_layer is True, klassifitseerimiskihtide parameetrid muutuvad ja ülejäänud parameetrid jäävad peenhäälestusprotsessi ajal muutumatuks. Teisest küljest, kui train_only_top_layer is False, kõik mudeli parameetrid on peenhäälestatud. Vaadake järgmist koodi:

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"

Pakume PennFudanPedi andmestik vaikeandmestikuna mudelite peenhäälestamiseks. Andmekogum sisaldab jalakäijate pilte. Järgmine kood pakub S3 ämbrites majutatud treeningu vaikeandmestikku:

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

Lõpuks, et käivitada SageMakeri koolitustöö mudeli peenhäälestamiseks, helistage .fit klassi hindaja objektil treeningandmete kogumi S3 asukoha läbimisel:

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

Lisateabe saamiseks selle kohta, kuidas kasutada uut SageMaker TensorFlow objektituvastusalgoritmi õppimise ülekandmiseks kohandatud andmekogumile, juurutada peenhäälestatud mudel, teha juurutatud mudelist järeldusi ja juurutada eelkoolitatud mudel ilma eelneva peenhäälestuseta. kohandatud andmestiku kohta vaadake järgmist märkmikku. SageMaker TensorFlow tutvustus – objektide tuvastamine.

TensorFlow objektituvastusalgoritmi sisend/väljundliides

Saate peenhäälestada kõiki loetletud eelkoolitatud mudeleid TensorFlow mudelid mis tahes antud andmekogumile, mis sisaldab pilte, mis kuuluvad mis tahes arvu klassidesse. Eesmärk on minimeerida sisendandmete prognoosiviga. Peenhäälestusega tagastatud mudelit saab järelduste tegemiseks edasi kasutada. Järgmised juhised selle kohta, kuidas tuleks mudelisse sisestamiseks treeningandmeid vormindada.

  • Sisend – kataloog alamkataloogi piltide ja failiga annotations.json.
  • Väljund – On kaks väljundit. Esiteks on see peenhäälestatud mudel, mida saab kasutada järelduste tegemiseks või täiendava väljaõppe abil. Teiseks on fail, mis kaardistab klasside indeksid klassi siltidega; see salvestatakse koos mudeliga.

Sisendkataloog peaks välja nägema nagu järgmine näide:

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

. annotations.json failis peaks olema teave bounding_boxes ja nende klassisildid. Sellel peaks olema klahvidega sõnastik "images" ja "annotations". Väärtus "images" võti peaks olema kirjete loend, üks iga vormi kujutise jaoks {"file_name": image_name, "height": height, "width": width, "id": image_id}. Väärtus "annotations" võti peaks olema kirjete loend, üks iga vormi piirdekasti jaoks {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

Järeldus TensorFlow objektituvastusalgoritmiga

Loodud mudeleid saab majutada järelduste tegemiseks ja toetada kodeeritud .jpg, .jpeg ja .png pildivorminguid. application/x-image sisu tüüp. Sisendpildi suurust muudetakse automaatselt. Väljund sisaldab iga ennustuse kaste, ennustatud klasse ja hindeid. TensorFlow objektituvastusmudel töötleb ühe päringu kohta ühte pilti ja väljastab JSON-is ainult ühe rea. Järgmine on JSON-i vastuse näide:

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 on seatud väärtusele application/json, siis väljastab mudel ainult ennustatud kastid, klassid ja hinded. Lisateavet koolituse ja järelduste kohta leiate näidismärkmikust SageMaker TensorFlow tutvustus – objektide tuvastamine.

Kasutage SageMakeri sisseehitatud algoritme JumpStart kasutajaliidese kaudu

JumpStart kasutajaliidese kaudu saate mõne klõpsuga kasutada ka SageMaker TensorFlow objektide tuvastamist ja mis tahes muid sisseehitatud algoritme. JumpStart on SageMakeri funktsioon, mis võimaldab graafilise liidese kaudu koolitada ja juurutada sisseehitatud algoritme ja eelkoolitatud mudeleid erinevatest ML-raamistikest ja mudelijaoturitest. Samuti võimaldab see juurutada täisväärtuslikke ML-lahendusi, mis ühendavad sihipärase kasutusjuhtumi lahendamiseks ML-mudelid ja mitmesugused muud AWS-teenused.

Järgnevalt on kaks videot, mis näitavad, kuidas saate JumpStart kasutajaliidese kaudu mõne klõpsuga korrata sama peenhäälestus- ja juurutamisprotsessi.

Viimistlege eelkoolitatud mudelit

Siin on protsess sama eelkoolitatud objektituvastusmudeli peenhäälestamiseks.

Rakendage peenhäälestatud mudel

Kui mudeli väljaõpe on lõppenud, saate mudeli ühe klõpsuga otse püsivasse reaalajas lõpp-punkti juurutada.

Järeldus

Selles postituses teatasime SageMaker TensorFlow objekti tuvastamise sisseehitatud algoritmi käivitamisest. Esitasime näidiskoodi selle kohta, kuidas seda algoritmi kasutades kohandatud andmekogumis õppimist üle kanda, kasutades TensorFlow eelkoolitatud mudelit.

Lisateavet leiate siit dokumentatsioon ja näidismärkmik.


Autoritest

Edastage õpe TensorFlow objektituvastusmudelite jaoks rakenduses Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Dr Vivek Madan on rakendusteadlane Amazon SageMaker JumpStart meeskond. 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.

Edastage õpe TensorFlow objektituvastusmudelite jaoks rakenduses Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.João Moura on AI/ML spetsialistilahenduste arhitekt ettevõttes Amazon Web Services. Ta keskendub peamiselt NLP kasutusjuhtudele ning aitab klientidel optimeerida süvaõppemudeli koolitust ja juurutamist. Samuti on ta aktiivne madala koodiga ML-lahenduste ja ML-le spetsialiseerunud riistvara pooldaja.

Edastage õpe TensorFlow objektituvastusmudelite jaoks rakenduses Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Dr Ashish Khetan on vanemrakendusteadlane Amazon SageMakeri sisseehitatud algoritmid ja aitab välja töötada masinõppe algoritme. Ta sai doktorikraadi Illinoisi ülikoolist Urbana Champaign. Ta on aktiivne masinõppe ja statistiliste järelduste uurija ning avaldanud palju artikleid NeurIPS-i, ICML-i, ICLR-i, JMLR-i, ACL-i ja EMNLP-konverentsidel.

Ajatempel:

Veel alates AWS-i masinõpe